Šta je novo?

Kako do dekompajlera

=Ivan=

Čuven
Učlanjen(a)
15.12.2003
Poruke
227
Poena
620
Interesuje me da li je neko od vas ikada nesto dekompajlirao. Na primer neki *.exe iz Visual Basic, Visual C , Delphi ili slicno.

Znam da je ovo nepopularna tema kod programera koji od programiranja zaradjuju ali me interesuje kako ljudi dolaze do takvih programa i da li se svi debelo placaju (kao sto sam video na internetu).

Nadalje, koji su najkvalitetniji za pojedine programske jezike?
 
Pa teoretski koliko ja znam nije moguce dekompajlirati exe file, moze u Linux-u, ali postoje programski jezici viseg ranga tipa Assembler koji moze da edituje EXE fajl... MLogo je mocan, ali i tezek...

Poz.
 
Najkvalitetniji za sve non VB programe je URSoft W32Dasm i IDA Pro v4 (za sve)
A najbolji dibager je Soft Ice, ili odskoro Driver Studio(u okviru koga imas i sice)
I naravno, svi disasembleri/dibageri ti output daju u ASM. Ali neces naci ni jedan program koji ce da ti reversuje Unit1.pas iz Delphi aplikacije i da je ti vidis kao source...
 
Neo, ajde procitaj jos jednom sta si napisao i ustvrdi da si 100% siguran u to (ako jesi).
 
Pa mislio sam da nije moguce da EXE fajl napravljen u Delphiju dekompajliras i da ga otvoris u delphiju sa sve kodom... to nije moguce koliko ja znam... Ako si na taj deo mislio ?
 
silverglider je napisao(la):
Neo, ajde procitaj jos jednom sta si napisao i ustvrdi da si 100% siguran u to (ako jesi).

Verovatno mislis na to da se programski jezici koji sve vise koriste jezik slican ljudima(VB, Visal C, Delphi ..) zovu jezici "vise generacije" a oni koji su vise "masinski" nize generacije.

PS: Iskoristio sam demo verziju W32Dasm i izvukao sve fiksne stringove koje sam koristio u programu! :eye:

Veoma nezgodno ako kroz kod dajete neki fiksni password npr. za konektovanja na bazu.

Verovatno se to moze resiti nekim algoritmom za kriptovanje a da se u kodu cuva kriptovana sifra.
 
Neo_Matrix je napisao(la):
Pa mislio sam da nije moguce da EXE fajl napravljen u Delphiju dekompajliras i da ga otvoris u delphiju sa sve kodom... to nije moguce koliko ja znam... Ako si na taj deo mislio ?

Ne, mislio sam na to da sve sta si napisao predstavlja promasaj. Evo da se podsetimo:

"Pa teoretski koliko ja znam nije moguce dekompajlirati exe file, moze u Linux-u, ali postoje programski jezici viseg ranga tipa Assembler koji moze da edituje EXE fajl... MLogo je mocan, ali i tezek..."

1. moguce je "dekompajlirati" exe
2. cela prica nema neke posebne vezanosti i iskljucivosti za linux
3. assembler ne predstavlja jezik 'viseg ranga'; to je jezik niskog nivoa, dok se c/c++, delphi, itd. oznacavaju kao visi programski jezici
4. dekompajliranje u assemblerski kod se zove disassembliranje
5. assemblerom se ne edituje exe fajl; to nije program za editovanje kao npr. hex editor, nego programski jezik. Rezultat kompajliranja nekim asm kompajlerom (masm, tasm...) je opet exe izvrsni fajl, bas kao i u slucaju delphija ili visual c++a.

Dakle, sve u svemu - ne znam gde nisi pogresio u tom kratkom postu, osim u oceni da je assembler tezak.

Postoje alati koji mogu exe vratiti u delphi projekat (ali ukoliko je exe proizvod delphi kompajlera). Takvi alati su, na zalost, vrlo ograniceni. Ne dobija se isti kod koji je programer bio originalno kompajlirao, nego kod koji je alat generisao na osnovu disassembliranog koda (kao prvog koraka). Zbog toga sto delphi kompajler generise karakteristican exe zna se tacno gde koje stvari smesta u bin fajlu. Imena varijabli i konstanti su, naravno, autogenerisani, posto su originali odavno izgubljeni u celom procesu. Hendlovanje externih koriscenih biblioteka je takodje pod znakom pitanja. Dakle, na nekom malom projekticu (namerni pleonazam) koji koristi 'cisti' delphi bi i moglo da prodje generisanje pas, dfm, res, itd fajlova, ali postavlja se pitanje 'cemu to' na nekom pravom 'full scale' projektu.
 
=Ivan= je napisao(la):
...



Verovatno mislis na to da se programski jezici koji sve vise koriste jezik slican ljudima(VB, Visal C, Delphi ..) zovu jezici "vise generacije" a oni koji su vise "masinski" nize generacije.

PS: Iskoristio sam demo verziju W32Dasm i izvukao sve fiksne stringove koje sam koristio u programu! :eye:

Veoma nezgodno ako kroz kod dajete neki fiksni password npr. za konektovanja na bazu.

Verovatno se to moze resiti nekim algoritmom za kriptovanje a da se u kodu cuva kriptovana sifra.

Nadam se da ne povrđujem baš pravila foruma, ali evo.
LINK
 
=Ivan= je napisao(la):
...

PS: Iskoristio sam demo verziju W32Dasm i izvukao sve fiksne stringove koje sam koristio u programu! :eye:

Veoma nezgodno ako kroz kod dajete neki fiksni password npr. za konektovanja na bazu.

Verovatno se to moze resiti nekim algoritmom za kriptovanje a da se u kodu cuva kriptovana sifra.

Fixni osetljivi stringovi (koji mogu biti osetljivi) se nikada ne ostavljaju u komadu. Vec bi dosta napravio kada bi umesto my_password='sifra' uradio my_password='s'+'i'+'f'+'r'+'a' -> dakle, kao neku konkatenaciju. Jos bolje ako u to uposlis chr funkciju umesto cistih karaktera i samo sastavljanje stringa vrsis kroz poziv nekoj stvojoj funkciji (lepo bi bilo i da je rekurzivna) i onda ostavis da kompajler to sve rasturi na razlicite lokacije u exe fajlu zbog svojih optimizacija.
 
Ako pitas cemu sve to evo da ti odgovorim u mom slucaju.

Radim neki program sa izuzetno vaznim podacima, baza je zasticena pasword-om ne vezano za identifikaciju korisnika. Tako da razmatram koliko je lako doci do sifre koja se daje programski , preko nekog stringa.

Video sam da je to veoma lako :mrgreen: . Ja jedino resenje vidim u algoritmu koji ce kriptovani string pretvoriti u pravi(kao sto si ti rekao putem zasebne procedure) i preko variable preneti bazi.

Da li ima jos resenja?
 
Mozda recimo da kriptujes pass, u sta ja znam base64+blowfish, pa da ti pass stoji u .ini fajlu. Posle ga pozoves u program iz inija i dalje koristis za konekciju...razbivljivo je kao i sve, ali ti se pass ne seta po kodu na izvolte... pade mi na pamet ne znam, mada i ovaj XOR sto je silver rekao zvuci kao ok resenje...mislim da sam cak imao negde na hdd neki takav XOR primer...
 
Wakizashi je napisao(la):
Mozda recimo da kriptujes pass, u sta ja znam base64+blowfish, pa da ti pass stoji u .ini fajlu. Posle ga pozoves u program iz inija i dalje koristis za konekciju...razbivljivo je kao i sve, ali ti se pass ne seta po kodu na izvolte... pade mi na pamet ne znam, mada i ovaj XOR sto je silver rekao zvuci kao ok resenje...mislim da sam cak imao negde na hdd neki takav XOR primer...

U svakom slucaju kada kriptujem Password mislim da je vise "na izvolte" kada je u ini fajlu , nego kao fiksni string u kodu. U prvom slucaju do kriptovanog se dolazi sa Notepad-om a drugom sa dekompajlerom sto ipak zahteva malo vise napora i truda.

"Razbivljivo" je onoliko koliko neko moze da provali tvoj algoritam pretvaranja kriptovanog u nekriptovani oblik preko asemblera (a koliko ima ljudi koji to dobro rade u SCG?) . Sigurno ne bi koristio tudji algoritam, radije bi sam napravio neku zapetljanciju. :D
 
Jeste, s tim sto ces u notepadu da vidis:
[code:1]Ne1LCMXgxwXdJAS3sl9B2QrOJD3x600wFSIzsw9QQOR7LeTvlIN/iGfegZLku6dtsy5d+K7KmtzXMJM9GYQ4fFGhKK+rUq==
[/code:1]
a kada je hardcoded u exe onda ces da vidis u Dasmu
[code:1]Possible stringdata ref from code obj -> "Password"[/code:1]
...kako god ti smatras da je manje "izvolte"... :)
 
Ajde necu nikog da citiram, ali mislio sam da nije moguce, bar ja neznam, da se exe fajl iz delphija otvori u delphiju... Znaci da vidis forme i sl.
Jezike viseg i nizeg reda sam pomesao, tako da se izvinjavam...

Sorry i poz.
 
Wakizashi je napisao(la):
Jeste, s tim sto ces u notepadu da vidis:
[code:1]Ne1LCMXgxwXdJAS3sl9B2QrOJD3x600wFSIzsw9QQOR7LeTvlIN/iGfegZLku6dtsy5d+K7KmtzXMJM9GYQ4fFGhKK+rUq==
[/code:1]
a kada je hardcoded u exe onda ces da vidis u Dasmu
[code:1]Possible stringdata ref from code obj -> "Password"[/code:1]
...kako god ti smatras da je manje "izvolte"... :)

Cekni der malo :) u "Possible string data ref code ..." ce opet samo da ga uputi na polje koje ce biti u Hexa. ali opet Kriptovano tj. (OIUPY89^%(^ ..i tako dalje).

Ja sam rekao da u obe varijante kriptujem Samo je iz koda izvuci komplikovanije (Dekompajler i Hexa View)

PS: Pripremam da postujem *.exe pa da probamo da iz njega izvucemo Password.
 
Malo razonode. :)

Evo da li neko moze prakticno da proba da resi enigmu. U zip-u je Jednostavna Paradox Tabela sa jednim slogom i zasticena je sifrom. Project1.exe je Delphi app. koji otvara tabelu a Sifru (nije kriptovana ali ima jedna "zackoljica") predajem iz koda nakon klika na dugme. (Sve bi trebalo da radi kada raspakujete oba fajla u c:\Tmp)

NAPOMENA: Potreban je Instaliran BDE- Borland Data Base engine (Verzija Delphi 5)

Pitanje glasi koja je pristupna sifra za tabelu?

Koristite sta god hocete i dekopajler alate koje hocete, samo mi posle recite sta ste koristili i koliko vam je vremena trebalo.
 
Inicijalna sifra bi trebalo da je "_^[" a sta s njom radis nisam siguran, ali imam utisak da uradis nesto svakom od ova 3 karaktera.
 
silverglider je napisao(la):
5. assemblerom se ne edituje exe fajl; to nije program za editovanje kao npr. hex editor, nego programski jezik. Rezultat kompajliranja nekim asm kompajlerom (masm, tasm...) je opet exe izvrsni fajl, bas kao i u slucaju delphija ili visual c++a.

s obzirom da su mnogi disasembleri ujedno i hex editori, moguce je editovati .exe fajlove, narochito poshto su ASM i mashinac u odnosu 1:1...
 
Yu_Skywalker je napisao(la):
Inicijalna sifra bi trebalo da je "_^[" a sta s njom radis nisam siguran, ali imam utisak da uradis nesto svakom od ova 3 karaktera.

Ne uopste nema tih karaktera u sifri kao sto sam rekao nema nikakvog kriptovanja (jos :) ), uostalom svako moze da proveri da li pronasao dobru sifru tako sto ce da otvori tabelu sa nekim svojim programom .
 
xvoodoo je napisao(la):
...



s obzirom da su mnogi disasembleri ujedno i hex editori, moguce je editovati .exe fajlove, narochito poshto su ASM i mashinac u odnosu 1:1...

Pogledaj jos jednom, pricalo se o assembleru kao jeziku, ne o nekom disassembleru kao programu. A to nije i ne moze biti isto.
 
Nazad
Vrh Dno