Înainte de a începe, analiza programul PEID:
Programul este ambalat ASProtect 1.2x - 1.3x [Registered]. Să încercăm să clarificăm versiunea ambalatorului, care se aplică plug-VERA 0.15:
Programul este ambalat ASProtect 2.3 construi SKE 06.26 Beta [Extras].
Acum, uita-te la acest program în v0.64 morii:
Aici vedem că programul este compilat în Delphi.
1. Rulați fișierul în OllyDbg
Ca întotdeauna, vom încerca să executați programul într-un program de depanare pentru a verifica capcane anti-depanare. Încărcați programul în debugger, și a obține un mesaj de eroare:
Să ne uităm la programul de card:
Programul nu a oprit la punctul de intrare, și am primit deja mesajul de eroare.
Ei bine, în astfel de cazuri, se recomandă să se oprească debugger nici un program Punctul de intrare, și pe punctul de întrerupere a sistemului. Facem modificările corespunzătoare în fila „Evenimente“ a debugger:
Repornirea programului, și se va opri aici:
Ne-am oprit pe breakpoint din sistem.
Apăsați tasta F9, iar programul se oprește la punctul de intrare:
Acest lucru - începutul obișnuit de programe protejate de protecție ASProtect.
Încercarea de a rula programul prin apăsarea tastei F9, iar programul se execută în mod normal:
Notă: Atunci când descărcarea programului în debugger să-l oprească pe breakpoint din sistem, poate fi afișat următorul protectorul de ecran, cu un mesaj de eroare:
2. Căutați punctul de intrare original (OEP)
Când executați același programului nostru, dacă ne uităm în fereastra LOG, excepțiile nu sunt generate:
Prin urmare, tabelul IAT este aici (în secțiunea 00481000. care are o dimensiune de 3000 bytes):
Rulați programul prin apăsarea tastei F9. și de a intra în ciclul pe care nu avem nevoie de:
Set BP (F2) după salt jnz, care este executat la începutul ciclului, și șterge BPM pe scriere. Apăsați F9 pentru a trece prin acest ciclu, eliminați instalat BP, și din nou set BPM pe scriere la secțiunea IAT. Astfel de acțiuni trebuie să le fie repetate de mai multe ori, după cum este raskriptovka și scrie cod în secțiunea .Cod. Și, în sfârșit, am venit aici:
Apăsați tasta F9. și locuiesc acolo:
Ajungem la ciclul de scriere; Prin urmare, ne-am stabilit la ieșirea BP a acestui ciclu (după salt JA), elimina BPM privind accesul. și apăsați tasta F9. Scoateți și re-a instala BP BPM privind accesul la prefixul. Astfel de acțiuni trebuie să facem de mai multe ori, și ne aflăm aici:
Am venit la OEP, dar - aceasta este o falsă OEP. Această declarație poate fi verificat, de asemenea, în felul următor. click dreapta pe CALL 01BA0000 instrucțiuni. și alegeți comanda:
În referință (butonul R), vom vedea mai multe referiri la această instrucțiune:
Este evident că avem de-a face cu o mașină virtuală (VM), în care adevăratul OEP ar trebui să fie efectuată.
Aici vom vedea instrucțiunile EBP PUSH. și o grămadă de cod nedorită. Cu instrucțiuni PUSH EBP începe programul Punctul de intrare Delphi. Dacă vom defila în jos un pic fereastra de cod, vom vedea o mulțime de instrucțiuni CALL 01C30000:
Repornirea programului, și apăsați tasta F9, iar programul se opreste pe hardware-ul BP privind accesul:
Uită-te în fereastra de registru:
Aici am arătat cum puteți găsi manual VOEP. Capacitatea de a găsi manual OEP este foarte important pentru programele de orice cracare a lui. Manual găsirea OEP, puteți scrie un script pentru a trece pe OEP, pentru că atunci când despachetarea programului, această procedură trebuie să se efectueze mai multe ori. REVENGE Crew a scris un script care realizează cu succes acest lucru, și este foarte plăcut pentru mine în lucrare. Cu toate acestea, acest scenariu nu funcționează pe ASProtect v2.3 SKE construi 06.26 Beta, pentru că în această versiune a ambalatorului nu este același punct „de referință“ - acesta este un sir de test 5B5E5F5D octeți. În loc de lanțul de octeți packer ASProtect v2.3 SKE construi 06.26 Beta are un lanț diferit de bytes - C35B5E5F. pentru a fi utilizate în acest script. Așa că am modificat script-ul un pic, care este acum, după cum urmează:
INIT 3. Recuperarea: tabelul de inițializare.
tabelul INIT de inițializare este disponibilă numai în programe care sunt compilate pe Delphi, și, ca programul nostru este compilat de același compilator, atunci munca noastră, după ce trece pe VOEP. Noi trebuie să înceapă cu restaurarea tabelelor INIT de inițializare.
Pentru a înțelege un pic modul în care acest tabel, să ne uităm la un program de necomprimate compilate în Delphi. Am instalat acest program -Resource Hacker v3.3.4.75, care este bine cunoscut tuturor Cracker anilor. Să ne uităm la ea și Init format Tabel:
Încărcați programul în debugger, și se oprește la punctul de intrare - 004AB1FC:
Aici vom vedea OEP (sau, mai precis punctul de intrare), astfel încât să ajungă la OEP în Rampa, și pentru a face mai vizibile, selectați modul de afișare lung → Address.
Să derulați în sus, și pentru a găsi începutul tabelului INIT:
Noi colectăm informațiile necesare:
004AB030. Începe tabelul INIT.
004AB1F8. sfârșitul INIT a tabelului.
Iată un tabel și trebuie să reconstruim programul nostru de reactiv MYCOP Cleaner. Cum se poate face acest lucru?
Încărcați programul în OllyDbg, iar când a oprit la punctul de intrare, apăsați ALT + tastele M. și setați BPM pe scriere în secțiunea de cod:
Apăsați tasta F9. iar programul se oprește aici:
Această memorie nu ne interesează, așa că apăsați în mod repetat tasta F9 până când ne aflăm aici:
Set BP (F2) după salt jnz, BPM elimina pe scriere. apăsați tasta F9. și se va opri la BP. Ștergem aceste BP, și din nou, setați BPM pe scriere la .Cod secțiune. așa cum a făcut-o înainte. Apăsați tasta F9. și locuiesc acolo:
Setați BP după JA sari, și elimina BPM pe scriere. Apăsați tasta F9, și se va opri la BP. Ștergem aceste BP, și din nou, setați BPM pe scriere la .Cod secțiune. așa cum a făcut-o înainte. Apăsați tasta F9. și locuiesc acolo:
instalați din nou BP după salt, BPM elimina pe scriere. Am rula programul cu F9, și se va opri la BP; BP din nou, eliminați și să instalați BPM pe scriere în secțiunea .Cod. Noi rula programul, și se va opri aici:
Deci, avem deja primele informații. Să punem aceste informații într-un tabel care nu ne permite pentru a obține confuz (de exemplu o masă oferită Ulaterck). Pe partea stângă a tabelului va fi scris format de date INIT. și partea dreaptă a mesei - o mică descriere a ceea ce găsim în INIT de recuperare.
Tabelul Nº1: INIT
Tabelul Nº1: INIT
Apel primul tabel INIT procedură raskriptovki: Acum vom scrie un alt tabel, care va fi numit „număr Tabelul 2 - Apelarea tabelul raskriptovki INIT prima procedură.“
Tabelul nº2: Procedura de apel raskriptovki primul tabel INIT
Primul lucru pe care trebuie să găsim - este sfârșitul INIT de masă. Pentru a face acest lucru, du-te prin Bena și căutați INIT cea mai recentă valoare de recuperare (amintiți-vă că, în primul scenariu, am finalizat prima parte a restaurării masa de scris INIT 0):
Rulați scriptul, pe care am numit Recovery_INIT_2.osc.
Așa că am reconstruit INIT de masă. iar acum știm unde să fie noul nostru OEP.
Trebuie să copiați tabelul INIT recuperate:
Introduceți și salvați noul fișier cu numele Recovery_INIT.
În continuare, considerăm restaurarea IAT și IAT sărituri, mașină virtuală Asprotect, și programe de înregistrare care utilizează Asprotect.
Sunteți pe EXELAB.rU