Hacking elegant decompilarea Borland Delphi

hackerii Novice au de obicei o mare dificultate de rupere programe scrise în Delphi și Builder. ca clasic trucuri, cum ar fi breakpoint pe GetWindowTextA, nu funcționează. Și să nu taie cu secera în bile, pe care doriți să ia în considerare particularitățile VCL, care pare inabordabil numai, dar, de fapt, chiar sparge mai ușor decât programele C pure! Nu mă crezi? Convinge-te!

Pentru a începe ...

Cele două instrumente principale ale hacker - un debugger și disassembler. care pot fi utilizate fie individual, fie împreună unul cu celălalt. Primul (și cel mai dificil) in faza de atac - inteligenta. Înainte de a aplica greul inamicului, aveți nevoie pentru a localiza un mecanism de protecție în megaocteți pace de cod, și apoi deschide bithakom, schimbarea JE la JNE, fie, pentru a înțelege cu procedurile de înregistrare algoritm, scrie propriile / generator de numere de serie cheie.

Faza de șoc, practic, nu depinde de aplicarea specifică a fierului vechi și a lucrat prin de-a lungul anilor, ceea ce reprezintă o muncă grea unromantic, dar activitățile complexe de informații mult mai mult efort intelectual necesită creier viclean și, desigur, de Anul Nou rumeguș de conifere, pe care o vom fumat agresiv. Și cu înverșunare ciugulesc. Pe tastatura! După Anul Nou - o vacanță de familie, precum și orice hacker care se respecta petrece singur cu el fiind cel mai aproape - un computer. Pentru a crea o atmosferă de sărbătoare va trebui să aprindă o lumânare (nu la fel ca și hemoroizi), pentru a trimite toate fetele din / dev / null, taxa Burbulyator porțiune man'ov proaspătă și începe Maniace. De fapt, utilizatorii se așteaptă
cadouri, cadou și mai bun decât o nouă fisură pentru programator, poate, decât vă puteți imagina!

Pe scurt, este necesar să hack. Să mergem!

Mergând DeDe

Arhiva DeDe .3.10b.realy.complete.src.zip (care, în special, poate fi descărcat de www.wasm.ru/baixado.php?mode=tool#038;id=55), de fapt, nu este destul de complet, în îi lipsește un cuplu de componente: RxLib_v2.75 plus VCLZip. Și înainte de DeDe să fie în măsură să colecteze, acestea trebuie să fie găsit pe Internet. Dacă nu sunteți de gând să se angajeze în rafinare DeDe. cel mai bine este de a descărca un fișier fără sursă www.xakep.ru/post/18513/default.asp, care este de doi metri mai scurt.

În general, aceasta înseamnă că am pus DeDe și se lipește de filozofia lui. Și această filozofie este că decompilări nu este supus fișierul executabil în sine, ci un mod de proces care rulează în memorie, astfel, în imposibilitatea de a zdrobi Packers nu au simțit chiar prezența lor. Cu toate acestea, împotriva Protectorii abrupte, criptează memoria de program protejat și decodifică dinamic ca performanta, DeDe este lipsit de putere, și cu greu în valoare de a explica de ce. Cu toate acestea, protectori abrupte, în practică, nu sunt atât de des că este foarte bun.

Bine, să nu cadă în depresie. La urma urmei, de Anul Nou în curte! Și, în timp ce altele sunt ruperea pocnitori, vom rupe fundul meu, decompilarea program interesant :). Este foarte simplu! Luăm un program, încărcați-l în DeDe. apăsăm butonul „Procesul“ și în prezent stau în așteptare în timp ce pentru DeDe eviscerat imagine memorie. Acest lucru este cel mai bine realizat de către VMware. și apoi între programele protejate au tot felul de creaturi, AdWare umplute și alte tipuri de malware.

Sincer, mi-ar fi ucis un popor care a venit cu un mecanism pentru a identifica tipurile de rulare, datorită cărora numele de clasă nu sunt distruse în timpul compilării (ca în clasic Pascal și C), și intră direct într-un fișier executabil (ca în Visual Basic). Hacking este simplificată, astfel încât pauza sa te plictisesti. Tu nici un meci intelectual. E ca o rangă pentru a termina căzut în capcana unui mouse-ului.

Dar noi nu suntem sadici și nu un maniac. Lăsați mouse-ul pentru a se bucura de focuri de artificii, și nu să ne întoarcem la DeDe. Fila cea mai din stânga (se poate spune chiar radical stânga) cu numele clasei nu conține nimic interesant pentru noi. Tab-uri Unități Informații și formulare sunt trimise și / dev / null sau mult mai adânc. Dar fila Proceduri - aceasta este ceea ce ai nevoie.

Echipament manual de hacking

Uraganul foc de artilerie decompilator DeDe acoperă practic întreaga Bagdad, stabilind mujahedinii în atenție, și toți disidenții trimite spre nord, unde se taie de brad pădure și unitatea cearșaf, astfel încât toți rezidenții au fost programate pentru bradul de Crăciun. În ceea ce privește software-ul, „pomului de Crăciun“, software-ul care este :).

Dede deficiențe în cel puțin două. În primul rând, rupe arma - nu este într-o grabă și nu pe concepte. Hackerii adevărați nu face acest lucru, preferând să se ocupe în toate utilzând de cedru bulion de la Hryundelya (colocvial numit hiew'om) și toporul. În al doilea rând, după cum sa menționat deja, DeDe este sortit să moară și va dispărea în curând de pe hard disk pentru inutile, la fel ca în timp plecat sale dinozauri si mamuti.

Acesta este motivul pentru care în multe situații de hacking manual este mult mai de preferat, si se intampla ca el devine tot singura opțiune posibilă. Pe scurt, modul în care cineva, și eu imediat pentru democrație! Dragoste și IDA Pro - în!

Numele metodelor de clasă sub forma unui fișier executabil în text simplu:

Date: 0040E88B word_40E88B dw 0Bh; DATE XREF. Date: 0040E614 ^ o
.Date: 0040E88D dw 11h
.Date: 0040E88F dd compensate _TForm1_FormCreate
.Date: 0040E893 db 10, 'FormCreate'
.Date: 0040E89E dw 12h
.Date: 0040E8A0 dd compensate _TForm1_FormDestroy
.Date: 0040E8A4 db 11, 'FormDestroy'
.Date: 0040E8B0 dw 17h
.Date: 0040E8B2 dd compensate _TForm1_Comm1ReceiveData
.Date: 0040E8B6 db 16, 'Comm1ReceiveData'
.Date: 0040E8C7 dw 13h
.Date: 0040E8C9 dd compensate _TForm1_Button1Click
.Date: 0040E8CD db 12, 'Button1Click'
.Date: 0040E8DA dw 13h
.Date: 0040E8DC dd compensate _TForm1_Button4Click
.Date: 0040E8E0 db 12, 'Button4Click'
.Date: 0040E8ED dw 13h
.Date: 0040E8EF dd compensate _TForm1_Button2Click
.Date: 0040E8F3 db 12, 'Button2Click'
.Date: 0040E900 dw 12h
.Date: 0040E902 dd compensate _TForm1_Timer1Timer
.Date: 0040E906 db 11, 'Timer1Timer'
.Date: 0040E912 dw 13h
.Date: 0040E914 dd compensate _TForm1_Button3Click
.Date: 0040E918 db 12, 'Button3Click'
.Date: 0040E925 dw 13h
.Date: 0040E927 dd compensate _TForm1_Button5Click
.Date: 0040E92B db 12, 'Button5Click'
.Date: 0040E938 dw 13h
.Date: 0040E93A dd compensate _TForm1_Button6Click
.Date: 0040E93E db 12, 'Button6Click'
.Date: 0040E94B dw 13h
.Date: 0040E94D dd compensate _TForm1_Button7Click
.Date: 0040E951 db 12, 'Button7Click'
.Date: 0040E95E aTform1 db 6, 'TForm1'; DATE XREF. Date: 0040E61C ^ o

Trebuie să spun că este destul de dificil de a rezolva cazul, deoarece programatorul a utilizat numele elementului implicit, pentru că sa întâmplat TForm1, Button1Click, Button2Click. Acest lucru nu este numele butoanelor, numele metodelor de clasă, sunt responsabile pentru procesarea prese-cheie, și că este modul în care acestea corespund butoanelor reale, atunci nu va spune, deci va trebui să utilizați viclean.

Rulați programul, apelați formularul desemnat și apăsăm pe linia pentru toate butoanele. Când facem clic pe Button3, ecranul va apărea mesajul de sistem care să ateste că programul rips acoperiș și va fi închis anormal în voluntar-obligatoriu. Deci, ar trebui să fie. În absența unui INT 03h comandă debugger conduce la o eroare critică, ceea ce face găsi destul de repede butoanele necesare pentru noi, atunci nu va fi hack doar funcțiile lor respective. Este logic? Fără a eșua!

Bine, dar ce se întâmplă dacă în posesia noastră nu Ida, ci doar Hiew? Primul meu gând - să meargă înece - măturat deoparte ideologic greșită. Să se înece în Anul Nou - acest lucru este de cel puțin inuman. Toți oamenii au o stare de spirit de vacanță corespunzătoare, apoi bam - un cadavru cu vene tăiate în baie. Inestetic! În acest fel, am ajuns la al doilea punct: sărăcia - nu este un viciu, ci o stare naturală a studentului; și tot ceea ce nu ne ucide ne face mai puternici. cap de gândire Bine, putem face o hiew'om. Dar de ce în Anul Nou nu oferă licență de iubita lui Ida?

Bine, deci hiew hiew. Se pare că doar Hiew - bespontovaya programului. De fapt, acesta este un animal foarte puternic, cum ar fi „Ghepardul“. Puternic și agil. În plus, compact. Adevărat, din păcate, de ceva timp, acum nu este gratuit. Dar găsirea Hiew mult mai ușor decât a merge. Și este în valoare de Hiew incomparabil mai ieftin decât IDA Pro (acest lucru este posibil, atunci când este ceva).

Pe scurt, în timp ce peste capetele noastre exploda petarde și alte articole pirotehnice cu jet din China, a zburat prin fereastra deschisă, vom încărca programul de fier vechi chiar în Hiew, apăsați pentru a intra în modul hexazecimal, apasam (Header), spune (Import) și în lista funcțiilor importate sunt __imp_ @ Forms @ TApplication @ CreateForm $ qqrp17System @ TMetaClasspv, furnizat dinamic vclXX.bpl Library, unde XX - numărul versiunii, cum ar fi 60. adaptoare trece la tabelul funcțiilor importate constând dintr-o multitudine de instrucțiuni JMP. După confirmarea că cursorul este pe funcția __imp_ @ Forms @ TApplication @ CreateForm $ qqrp17System @ TMetaClasspv (care nu este un fapt,
pentru că aici am hiew'a glitch, și de a lucra în jurul ei, trebuie să aleagă funcția următoare, apoi ridicați mâna mouse-ul), apăsați (Ref) pentru căutarea referințe încrucișate și a vedea tipul de codul de mai jos. Prin urmare, (NexRef) înseamnă găsirea următoarele legături pentru a crea o procedură de formă. Aici vom culege , până când vom găsi toate formele care au numai.

index de căutare forma structura hiew'e:

0040193A: 8B0DE01F4100 mov ECx, [00411FE0]
.00401940: 8B15FCE54000 mov EDX [0040E5FC]
.00401946: E8B9BF0000 apel @ Formulare @ TApplication @ CreateForm $ qqrp17System @ TMeta
.0040194B: A134B65900 mov eax, @ Forms @ Application; vcl60

Desigur, acest lucru funcționează numai cu programe neambalate care utilizează legarea statică, dintre care majoritatea. În cazul în care un program este ambalat, apoi, înainte de a ajunge la masa de import, se va despacheta, iar în cazul în care dezvoltatorul a angajat link dinamic, unul sau mai multe apeluri __imp_ @ Forms @ TApplication @ CreateForm $ qqrp17System @ TMetaClasspv trec neobservate (ceea ce este rău). În astfel de cazuri, este avantajos să se recurgă la debugger, a stabilit un punct de întrerupere pe __imp_ @ Forms @ TApplication @ CreateForm $ qqrp17System @ TMetaClasspv, dar vom spune mai tarziu, dar acum să se ocupe cu argumente.
În mare parte ne interesează un argument care este încărcat în registrul EDX și indică structura la 18h compensate de la început, care este un pointer la deja familiar structură arborescentă.

În jurul breakpoints

Cele mai complexe cazuri de hacking - este programul de ambalat. descarcat VCL-bibliotecă de pe zbor, și nu folosiți nici un nume credibile în metoda de clasă. Ruperea o astfel de protecție în disassembler - pierdem timpul. Este mai bine să utilizați un debugger, un rol care poate fi nu numai severă (SoftIce), dar, de asemenea, artilerie de lumină în fața OllyDebbuger.

Încărcați programul în Olly, în lista modulelor () Găsiți VCLxx.bpl, apasam pe și, privind prin lista importurilor (), Găsiți numele dorit. davim pentru a instala software-ul sau breakpoint , , Breakpoint, «Hardware, la executie» pentru instalarea de puncte de întrerupere hardware, respectiv. Punct hardware este mult mai fiabile, dar, din păcate, există doar patru, dar numărul de puncte de oprire ale programului nu este limitat.

Rămâne doar de a alege o funcție potrivită pentru bryakanya. O listă scurtă de cele mai importante dintre ele (din perspectiva unui hacker) este prezentată mai jos:

concluzie festivă

După cum se poate observa, de hacking programe de la Bagdad nu este nimic complicat, iar ei Hakala la o viteză de plută care zboară dintr-o sticlă de șampanie. Chiar mai repede! Deci, cadou de Anul Nou oferit!