Sunteți pe pagina 1din 3

More Next Blog» Create Blog Sign In

Reverse Engineering Sfaturi


Un blog de inginerie inversă dedicat dezlegarea misterelor inginerie inversă. Aflați cum să lucreze pe mai multe obiective diferite, cu un sortiment
vast de instrumente.

Luni 2016-01-patru

Ocolind Protectii: Inversarea și recrearea DLL protejate Cauta pe acest blog

Căutare
Bună ziua și bun venit la această nouă serie numită Protectii Izolare. Împreună, vom învăța câteva
metode noi pentru a evita protecțiile care au anumite deficiențe în punerea în aplicare a acestora. În
acest exemplu, ne vom uita la un dll care este protejat cu asprotect și de a folosi o metodă simplă
pentru a recrea. Din moment ce acest dll protejate efectuează numai proceduri de verificare de
Donații
licență, este foarte ușor pentru noi, pentru a recrea dll în Delphi, ocolind de protecție împreună. În
unele aplicații, autorii să plasați toate codul de management de licență într-un singur dll care toate
Dacă găsiți acest blog util, vă
modulele de referință de aplicare pentru a determina dacă acesta este înregistrat. Din moment ce rugăm să ia în considerare
acest lucru se ocupă de toate de management de licență, acest lucru devine călcâiul lui Ahile în sprijinirea eforturile mele, cu o
cerere. Împreună, vom inversa inginer acest mic și recrea dll toate funcțiile și procedurile din Delfi, contribuție mică.
astfel încât să se întoarcă întotdeauna valori corecte. Din cauza scopuri legale, nu voi menționa
numele acestei cereri în articol, dar va include imagini care vă vor ajuta în mod clar să stabiliți ce
aplicație acest tutorial se bazează pe.

Utilitare software

Instrumente Software

Urmăriți prin e-mail

Email address... A depune

postari populare

O introducere în x64dbg
Să descărcați aplicația. Când îl rulați, vă sunt îndeplinite cu acest ecran. Sondarea prin directorul cu Bine ați venit la acest
protectionID, veți descoperi în curând că dll numit ba8pro este protejat cu ASProtect. Să vezi tabelul scurt tutorial, introductiv
de export de ba8pro în PETools și a vedea ce funcții și proceduri pe care le conține. pentru utilizarea x64dbg
de dl Exodia. Scopul
acestui tutorial este să te învețe ...

Despachetare Jar2Exe
2.1: Extrage fișierul jar La
toate cele 3 nivele de
protecție
Bine ați venit la acest
tutorial extins pentru despachetare
Jar2Exe. Jar2Exe este un înveliș
executabil Java care funcționează prin
Takin ...

Ocolind Protectii:
Inversarea și recrearea
DLL protejate
După cum putem vedea, aceasta conține doar 4 proceduri. Dacă vom verifica executabilului principal, Bună ziua și bun venit la
vom vedea că nu există nici o referire la import la acest dll și că , la pornire, acest lucru nu este în dll această nouă serie
de memorie. Asta înseamnă că , probabil sarcini acest dll folosind funcția LoadLibrary și obține numită Protectii Izolare. Împreună, vom
procedura VA folosind GetProcAddress. Deoarece acesta este cazul, putem găsi în cazul în care învăța câteva metode noi pentru a
aceste proceduri sunt numite prin simpla căutând referințe șir de nume de funcții. Când vom încărca evita protecțiile care ha ...
executabilului principal în ollydbg, putem vedea deja dll ba8pro face referire în procedura principală.
Hashing Utility 2.0, cu
Mai jos că putem vedea referiri la CheckVersion și CheckDays .
suport Unicode
Hashing v2.0 Utility este
un utilitar mic codat în
Delphi, care oferă
utilizatorului posibilitatea de a calcula
hashes și CRC val ...

Despachetare Launch4j
3.5: Extrage fișierul jar
Despachetare Launch4j
3.5: extrăgând Jar Fișier:
Bine ați venit la acest
scurt tutorial pentru despachetare
Launch4j. Launch4j este un executabl
După ce ne - am pas până la punctul pe care am etichetat apel Pentru CheckVersion, observăm Java ...
nimic nu este împins pe stiva înainte să numim această funcție. Prin urmare, putem concluziona că
funcția CheckVersion nu ia parametri. După această procedură, vom returna valoarea de $ FFFFFFFF Ocolind Protectii:
la EAX și depozitați - o la 5D9B04. Din moment ce am muta registru complet EAX la această valoare, Activarea Exploatand
putem concluziona că CheckVersion returnez un Integer. Dupa ce a jucat în jurul valorii, am pentru a accesa date
descoperit că , dacă ne întoarcem un 0 de la CheckVersion, acesta va rula ca înregistrată. Prin sensibile
urmare, putem recrea această funcție în Delphi dll ca aceasta: Bine ați venit la partea 2
din seria Protectii bypass-ul. În
această parte, vom fi uitat la o aplicație
Function CheckVersion (): Integer; stdcall; Inceput Rezultat: = 0; // pro End; Următoarele funcții
care utilizează activare online pentru a
CheckDays funcționează în același mod. Aceasta nu ia parametri și returnează numărul de zile ca un
v ...
întreg. O putem declara ca acest lucru: Funcția CheckDays (): Integer; stdcall ; Începe Rezultat:
= 255; // Orice valoare mai mare de 0 și <= $ 7FFFFFFF va lucra End; În continuare, ne vom uita la Delphi Sfaturi: hashing un șir cu Delphi
funcția GetModeVersion. După o căutare șir rapidă pentru GetModeVersion, noi ar trebui să ajungă de criptare Compendiu (DEC)
aici: Astăzi, am vrut să folosească Delphi
de criptare Compendium (DEC) pentru
a hash un șir de caractere. Este un pic
mai greu să dau seama cum să
folosească co ...

Incredimail Instrumentul
de recuperare a parolei
Incredimail Parola
Instrumentul de
recuperare poate
recupera toate parolele de la
IncrediMail parolele de e-mail, la
incredima ta ...

Aleatoare Generator
Serial 1.0
Aleatoare Generator de
serie 1.0 este o aplicație
simplă, care vă permite
să generați un număr de ordine
aleatoare pentru testare ... licen

Promisiunile exagerării
ClickLocker: un tutorial
despachetare
ClickLocker este
comercializat ca o soluție
de securitate digitală care permite unui
autor de conținut pentru a gestiona cu
ușurință righ digital ...

Să comuta punctul de control aici, rulați aplicația, du-te pentru a ajuta, și faceți clic pe butonul
despre. Acest lucru va determina ollydbg să rupă aici. Odată ce am pas în jos la apel, ne dăm seama
că o valoare este împins pe stiva înainte de introducerea acestui apel. Ia act de valoarea. Să pas în
această rutină pentru a obține o idee mai bună a ceea ce se întâmplă.

După pas cu pas la sfârșitul procedurii, descoperim că valoarea împins pe stiva este un pointer la o
valoare șir de caractere Unicode , care este populat cu șirul de informații de înregistrare , care va
apărea pe formularul despre. Aceasta rutina nu se întoarce o valoare la EAX, astfel încât să putem
concluziona că aceasta este o procedură. După ce a jucat în jurul cu această procedură, am
constatat că se va întoarce următorul șir în cazul în care a înregistrat: Versiunea Înregistrat / n
licență de utilizator unic / n Durată de viață actualizări gratuite Putem recrea această
procedură pentru a returna acest șir ca aceasta:

Procedura GetModeVersion (e: pWideString) ; stdcall ;


Începe
s ^: = ' Versiunea inregistrata '+ # 13 +' Licență utilizator unic '+ # 13 +' Durata de viață Free Upgrade -
uri '; // Scrieți la șirul.
Sfârşit;

În cele din urmă, ne vom uita la RegisterApplication funcția finală. Din moment ce facem acest lucru
înregistrate în mod implicit, această funcție nu ne fi folosit, dar vom adăuga acest lucru , oricum
pentru a finaliza dll. Să - i reporniți aplicația. După o căutare rapidă șir de caractere, putem găsi apelul
la RegisterApplication.

Să rula aplicația și introduceți câteva detalii de înregistrare aleatoare.

După cum putem vedea, acest lucru trece două șiruri la funcția. Când ne întoarcem de la această
rutină, vedem că alții este populat cu un 0. Deoarece următoarele testele de funcționare dacă este
sau nu al este egal cu 0, putem determina că este un al boolean , unde 0 = false și 1 = true. Asta
înseamnă că funcția RegisterApplication are două șiruri constante (neschimbătoare) ca parametri și
returnează un boolean. Putem recrea această funcție ca aceasta:

Funcția RegisterApplication (Const s, s2: string): Boolean; stdcall ;


Începe
Rezultat: = true;
Sfârşit;

Acum , că ne - am recreat aceste funcții, codul nostru finit va arata astfel:


Singurul lucru de făcut este de a înlocui dll în directorul cu cel pe care am creat, patch - uri
controalele de integritate în modulele (nu sunt prezentate în scopuri juridice), și se adaugă o cheie
falsă în registru ( care nu este prezentat în scopuri juridice ).

Acum , că am făcut acest lucru, vom discuta câteva modalități de autor pentru a îmbunătăți această
protecție. Deoarece acest dll conține numai informații de licențiere, ea face ușor pentru noi să
duplicat. Cu toate acestea, în cazul în care societatea ar adăuga unele funcții de aplicații de bază de-
a lungul partea din aceste rutine de control de licență, va face recrearea dll mai dificil. Acestea ar
putea proteja , de asemenea , fiecare modul în parte cu asprotect pentru a face necesar pentru noi să
despacheta fiecare fișier, pentru a trece / patch - uri controalele de integritate.

Acestea fiind spuse, sper că va plăcut tutorialul. Nu ezitați să întrebați orice întrebări de mai jos. Până
la data viitoare, fericit de mers înapoi.

Publicat de Chester Fritz la 14:24


+22 Recommend this on Google

Etichete: asprotect , Delphi , DLL , DLL Reverse Engineering , ollydbg , Programare , protectie ,
reprogramare , inginerie inversă

1 Comentariu:

Khalid Mehmood 29 februarie 2016 la 10:39


se poate face un cod pentru mine? contactați - mă pe
khalidmmd75atgmail.com
Răspuns

Enter your comment...

Comment as: Google Account

Publish Preview

Postare mai nouă Pagina de start Postare mai veche

Abonați - vă la: Postare comentarii (Atom)

Tema Awesome Inc. Powered by Blogger .

S-ar putea să vă placă și