Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Rejestr
anonim




Typ: Nie zarejestrowany
Rejestr

Liczbę uruchomień programu itp. lepiej przechowywać w rejestrze windows niż w pliku, trochę trudniej je wtedy znaleźć.

02-10-2004 17:40
  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

A ten post, to apropos czego???


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


02-10-2004 18:22
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Skupiłem się, pomkombinowałem i też nie widzę żadnego problemu czy pytania... przyłączam się do pytania Vipera. (aha.. i lepiej jest w pliku niż w rejestrze, bo w rejestrze każdy głupi będzie sprawdzał, a pliku może nie potrafić znaleźć. A najlepiej w samym execu.).

[Post edytowany dnia 02-10-2004 20:52 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

02-10-2004 20:51
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Marcin-a jak zapisać coś w samym Exeku. bo temat bardzi mnie zainteresował?


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


03-10-2004 16:37
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Po prostu wpisując .
Najłatwiej dopisać swoje dane na końcu execa.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 18:12
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Ale ja się pytam, jak to obsłużyć-ten sposób wpisu do EXEka z poziomu VB! Bo chyba nie masz na myśli ręcznego dopisania w edytorze HEX?


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


03-10-2004 18:14
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Oczywiście, że nie. Po prostu spod VB dopisujesz na końcu. I już.
Exec nie jest jakimś szczególnym typem pliku, możesz sobie go zapisywać tak jak każdy inny.

[Post edytowany dnia 03-10-2004 18:15 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 18:15
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Będę natrętny-jak to zrobić z poziomu VB? Czy ja źle zadaję pytanie? Po prostu podaj fragment kodu, którym to można zrobić...


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


03-10-2004 18:17
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004


Sub main()
    Dim fEXE As Integer
    Dim sFile As String
    Dim nLen As Long
   
    sFile = InputBox("Podaj nazwę pliku:" ) 'Tutaj podajesz mu nazwę exeka
    nLen = FileLen(sFile) 'Sprawdza długość pliku
   
    fEXE = FreeFile
    Open sFile For Binary Access Write As fEXE 'Otwieramy go
    Seek fEXE, nLen + 1 'Przechodzimy na koniec
    Put fEXE, , "Hello world" 'Zapisujemy
    Close fEXE 'Zamykamy
End Sub


[Post edytowany dnia 03-10-2004 18:21 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 18:20
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Dzięki, o to chodziło. I to nie spowoduje wady w działani EXEKa? Abstrachując-zapiszę sobie hasło do mojego programu w pliku Explorer.exe (wiem-sprzeczne z prawem). Czy Explorer.exe będzie działał nadal OK?

I rozumiem, że jak wcześniej zakoduję to co zapisuję np. XORem, to też nic się nie powinno stać?


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


03-10-2004 18:23
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

W explorer.exe nie zapiszesz, bo ci Windows na to nie pozwoli (błąd "ten plik jest używany przez system windows blablabla..." .
Pomijając ten drobny fakt - nie można mieć takiej pewności. Zwykle program z dopisanymi na końcu danymi powinien działać, ale jesli np. długość pliku ma znaczenie dla działania programu (autor zamieścił zabezpieczenie badajace długosć pliku, pierwsza instrukcja ma być na końcu itd.) - może spowodować błędy. Po prostu trzeba sprawdzić, czy dopisanie czegoś na końcu nie wywoła niepożądanych skutków i tyle.

Dla komputera nie ma znaczenia, co zrobisz z danymi przed zapisem. Możesz je sobie XORować, ANDować i robić co tylko ci sie podoba - dla komputera i tak jest to zwykły ciąg bitów, niczym nie różniący się od innych.

Jest jeszcze jeden sposób na zapisanie swoich danych w programie. Jest troszkę trudniejsze, ale za to bardziej efektowne i jeśli chcesz np. ukryć ilość uruchomień programu pisząc go w VB - to jest to świetny sposób.
Najpierw łyk teorii:
Jeśli mamy kod JakasZmiennaTekstowa = "Jakis tekst", to fragment "Jakis tekst" to wartość stała. Takie wartości w VB są zapisywane bezpośrednio do execa. Czyli gdy skompilujemy taki kod, wiemy, że gdzieś w pliku pojawi się nasze Jakis tekst. Wartość tę po kompilacji bez obaw można zmieniać (ahh.. gdzie te czasy, gdy program tłumaczyło się na skompilowanym execu ). Wystarczy, że odnajdziemy ją i zmienimy. Będzie ją można póxniej odczytać. Co więcej - ten kod nadal bedzie wykonywany, wiec VB sam ją nam odczyta.
Jeśli mamy kod:
strLiczbaUruchomien = "128"
i zmienimy w pliku nasze 128 na 127 (zwracam uwagę na to, że operujemy w stringach, nie liczbach!), to przy następnym uruchomieniu nasz program zachowa się, jakby kod wyglądał tak:
strLiczbaUruchomien = "127"
Teraz potrzebny jest kolejny łyk teorii. Otóż VB przechowuje ciągi znaków w postaci Unicode. Co prawda w VB widzimy np. "a", ale w pamięci jest wtedy " a" (dwa znaki - nullchar i "a". W ten sam sposób zapisywane są ciągi w pliku. Nasz ciąg "Jakis tekst" w pliku będzie miał taką postać:
J a k i s  t e k s t, gdzie każda przerwa to null. Nasz tekst też musi być zapisany w formie Unicode i musi mieć tą samą długość.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 18:46
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

No to jak to jest z tym zapisem pliku.exe.?

Run-time Error '70'
Permission dienied

A jeśli zapiszę pod inną nazwą to się tworzy program konsolowy


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

03-10-2004 21:12
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Bo pewnie zapisujesz do pliku, do którego nie masz dostępu... przecież wyraźnie jest napisane 'Permission denied'.

A jeśli chodzi o tą konsolową, to nie rozumiem, o co chodzi...


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 21:22
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Już się zapisuje
Jeśli zapisuję pod inną nazwą tp się tworzy plik Dosowy


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

03-10-2004 21:28
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Rozumiem, ze chodzi ci o aplikację dosową.. ale nadal nie rozumiem, w jaki sposób się to dzieje

Po czym poznajesz, że jest DOSowa? (po prostu nie wyobrażam sobie np. kalkulatora (tego w Windowsa), by wyświetlał się w trybie tekstowym .


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 21:38
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Po pustym czarnym oknie - to jest coś podobnego jakbyś tworzył aplikację konsoli tekstowej, ale ten Twój sposób działa z exe. Ppodpowiedz mi jeszcze jak z tego pliku odczytać owe "Hello world" np; do jakiejś zmiennej

[Post edytowany dnia 03-10-2004 21:43 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

03-10-2004 21:42
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Jeśli wpisujesz w pusty plik .exe jakiś tekst, to po prostu nie jest exec i dlatego pojawia się czarne okienko, natomiast jeśli wpisujesz w kopię programu (ktory działał) i pojawia się czarne okienko, to oznacza, że program został uszkodzony.

A odczytujesz po prostu pobierając z końca pliku odpowiednią ilośc znaków (taką, ile wynosiły zapisane tam dane).

Sub main()
    Dim fEXE As Integer
    Dim sFile As String
    Dim nLen As Long
    Dim sBuffer As String * 11

    sFile = InputBox("Podaj nazwę pliku:" ) 'Tutaj podajesz mu nazwę exeka
    nLen = FileLen(sFile) 'Sprawdza długość pliku
   
    fEXE = FreeFile
    Open sFile For Binary Access Read As fEXE 'Otwieramy go
    Seek fEXE, nLen - 10 'Przechodzimy na pozycję 11 od końca.
    Get fEXE, , sBUffer 'Odczytujemy
    Close fEXE 'Zamykamy
End Sub


Ten przykład odczytuje z końca pliku 11 znaków (czyli jesli przedtem zapisałeś poprzednim przykładem, pobierzesz "Hello World".


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 21:47
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

No niestety ale jednak zapis nie działa
Win XP Pro i tak jak wcześniej napisałem nie mam dostępu do zapisu pliku - z tego co zrozumiałem, to zrobiłem tak w Form jest Text1 i command1

Dim sFile As String
    Dim nLen As Long
    Dim fEXE
    'sFile = InputBox("Podaj nazwę pliku:"  'Tutaj podajesz mu nazwę exeka
    nLen = FileLen(App.Path & "\Exec.exe" 'Sprawdza długość pliku
   
    fEXE = FreeFile
    Open App.Path & "\Exec.exe" For Binary Access Write As fEXE 'Otwieramy go
    Seek fEXE, nLen + 1 'Przechodzimy na koniec
    Put fEXE, , Form1.Text1.Text 'Zapisujemy
    Close fEXE 'Zamykamy


Kompilka i utworzenie Exec.exe - uruchamiam i wpisuję do Text1 Hello world i przy próbie zapisu
wywala się komunikat błędu 70 i braku dostępu i co ty na to


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

03-10-2004 21:59
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Możliwe, że program, do którego zapisujesz jest aktualnie uruchomiony - wtedy nie będziesz mógł do niego zapisać (to już nie te czasy).


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

03-10-2004 22:18
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Szkoda - chyba jednak zostanę przy rejestrze
Ale jutro w pracy nie omieszkam sprawdzić owych instrukcji w VB.Net a może.....

[Post edytowany dnia 03-10-2004 22:38 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

03-10-2004 22:34
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
Wszystkich odpowiedzi: 19 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1