Kompiluje sobie jakiś program w dev-cpp albo w Digital Mars. W programie np. łączę sie z emailem.
Mój problem polega na tym, że po otwarciu programu .exe notatnikiem okazalo sie, że widać tam różne rzeczy, których nie powinno być widać. Gorzej, widać tam mojego maila i hasło do niego :-/
Co mam zrobić zeby zakodować hasło, a najlepiej cały program?
Najprostszym rozwiązaniem będzie spakowanie programu przy pomocy UPXa, FSG czy inszej zabawki tego typu.
deus napisał(a)
Najprostszym rozwiązaniem będzie spakowanie programu przy pomocy UPXa, FSG czy inszej zabawki tego typu.
co i tak jest banalne do obejscia ;-P
Jeśli cie zrozumiałem i chcesz wysłac maile...
jeśli serwer smtp obsługuje identyfikacje inna niz plaintext to mozesz wykorzystać bezpośrednio hasz, zamiast zapisanego hasła.
Jak to sprawdzic?
telnetujesz sie na serwer na port 25 (telnet adres.servera.com 25)
i po polaczeniu wpisujesz:
ehlo adres.servera.com
patrzysz czy występują linijki z zawartością AUTH, i moze ona wyglądać np. tak:
250-AUTH GSSAPI CRAM-MD5 DIGEST-MD5 LOGIN PLAIN (ta jest dla zrąbanych outlooków)
250-AUTH=GSSAPI CRAM-MD5 DIGEST-MD5 LOGIN PLAIN (ta jest normalna wg. specyfikacji)
i masz tu 2 możliwości z użyciem hasza MD5. tworzysz taki hasz i zapisujesz go w programie.
kodowanie adresu mailoweg to i tak bezsens, bo musisz go w programie rozkodowac, a pobrania go wystarczy wtedy po prostu sniffer.
Jak wysłac maila (sorry, że w php i niestety bez ssl) masz tutaj: http://www.php.net/manual/pl/ref.mail.php#66705
Natomiast, jeśli uzywasz jakiegoś gotowego komponentu/biblioteki zobacz w niej, czy nie można wykorzystac ssl (do szyfrowania samego maila) oraz czy nie przyjmie jakos własnie wcześniaj juz zahaszowanego hasła.
Ja czegos nie zrozumialem. Skoro mozna sie zalogowac za pomoca hasha, to co stoi na przeszkodzie, zeby przechwycic snifferem tego hasha wlasnie i tez sie nim zalogowac?
No własnie on też może sie zalogować przez MD5 :P
A w jaki sposob można zdekompresować program skompresowany UPX'em albo czymś podobnym?
Programem do dekompresji danego packera. Packer można rozpoznać pod hexedytorem /oczywiście znając konkretne packery/ lub jakimś skanerem np. PEID. Rozpakowanie jakimś unUPX, ASPackDie czy czymś innym, adekwatnym do zastosowanego packera. A najwygodniej to debugger w dłoń, jakiś dumper /np. LordPE/ i ew. jakaś zabawka do odbudowy importów - ImpREC. Przy pomocy debuggera można rozpracować błyskawicznie każdy packer /chyba, że to protector... ale i do się da :-)/. Jedyny problem to znajomość asemblera, wiedza o działaniu takiego śmiecia jak packery i budowy pliku PE /standard plików wykonywalnych w Win/. Pytanie tylko ile osób w tym kraju potrafi rozpakowywać ręcznie nieznane packery - stawiam, że mniej niż 1000 :>
A w jaki sposob można zdekompresować program skompresowany UPX'em...
Tym samym UPX
UPX -d spakowany.exe
;-P
Jeśli pakujesz hasło na sztywno do programu, to jak ktoś się uprze, to na pewno wydobędzie. Aby maksymalnie utrudnić sprawę cwaniakom, możesz do serwera wysyłać hasza, który nie będzie na sztywno zapisany w programie, tylko go jakoś wygenerujesz. To już pozostawiam Twojej inwencji :) ale możesz w najprostszej wersji użyć np. jakichś XORów.
Aaa, i funkcję generującą hasło nazwij np. BoldText() albo PotegowanieMacierzy() albo jakkolwiek inaczej, zeby potencjalnemu crackerowi nie wydyała się zbyt wazna :P
No i na koniec spakuj jakimś UPXem.
MKF, chłopcze... :
- raz to data pstatniego postu
- dwa... hash jest stały
MKF napisał(a)
możesz do serwera wysyłać hasza, który nie będzie na sztywno zapisany w programie, tylko go jakoś wygenerujesz.
- co da generowanie stałej? to nawet newbie zauważy... już nie raz takie rozwiązanie widziałem i raczej nie pomogło
MKF napisał(a)
możesz w najprostszej wersji użyć np. jakichś XORów.
- xor dużo da, bo można go odwrócić nawet w pamięci
MKF napisał(a)
Aaa, i funkcję generującą hasło nazwij np. BoldText() albo PotegowanieMacierzy() albo jakkolwiek inaczej, zeby potencjalnemu crackerowi nie wydyała się zbyt wazna...
- nie wiem czy wiesz, ale cracker nie widzi nazw funkcji, zmiennych, nazw stałych wartości; wyjątek stanowią funkcje eksporotwane i importowane... no, chyba, żę jakiś kretyn skompiluje program w wersji debug i w świat puści /były takie cuda/; cracker widzi tylko mnemoniczną reprezentację kodu maszynowego, adresy do których kod się odwołuje i dane w postaci wartości bajtów itd. /co prawda Interactiver Disassembler czy częściowo OllyDbg oznaczają jaki typ mają argumenty przekazane do API, robią analizę ale... nie są w stanie zastąpić człowieka/; kiedyś łamało sie sporo za pomocą samego debuggera SoftICE... prosze, oto przyklad kodu widocznego pod SI /heh, wzięty z tutoriala jakiego napisałem wieki temu w młodości/:
001B:01EF00E5 MOV EAX,[ESI+0000010C]
001B:01EF00EB MOV EBX,EAX
001B:01EF00ED PUSH EBX
001B:01EF00EE ADD EBX,00000045
001B:01EF00F4 MOV [EBP-04],EBX
001B:01EF00F7 POP EBX
001B:01EF00F8 MOV EDI,EBX
001B:01EF00FA ADD EDI,00000028
001B:01EF0100 MOV [EBP-08],EDI
001B:01EF0103 PUSH DWORD PTR [EBP-08]
001B:01EF0106 PUSH DWORD PTR [EBP-04]
001B:01EF0109 PUSH DWORD PTR [EBP+08]
001B:01EF010C CALL 01EF0119
001B:01EF0111 POP EDI
001B:01EF0112 POP ESI
001B:01EF0113 LEAVE
001B:01EF0114 RET 0004
albo:
001B:0700B0FC CALL 07014310
001B:0700B101 MOV EAX,[EBP-10]
001B:0700B104 PUSH EAX
001B:0700B105 CALL [KERNEL32!GetModuleHandleA]
001B:0700B10B XOR ESI,ESI
001B:0700B10D MOV [EBP-2C],EAX
001B:0700B110 CMP EAX,ESI
001B:0700B112 JZ 0700B1DC
001B:0700B118 CMP [EBP-28],ESI
001B:0700B11B MOV [EBP-10],ESI
jak zapewnie wiesz debugger pozwala na śledzenie oraz modyfikacje wykonywania programu... ale sam popatrz na ten kod, dużo Ci mówi?
MKF napisał(a)
No i na koniec spakuj jakimś UPXem.
- upx, fsg czy inne zabawki nawet newbie nie powstrzymała... ładnie w kodzie packera widać skok do OEP, breakpoint na to, zrzucić program z pamięci jak się złapie, odpalić ImportReconstructora /ImpRec/, wpisać OEP, ew. leggo poprawić znalezione IAT i dać [fix]... voila, mamy rozpakowanego execa z niemal dowolnego packera w przeciągu hm... pół minuty? minuty? Od takich rzeczy są komercyjne protectory jak np. PELock.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.