Slack automat

Ce faceți, de obicei, pentru a sparge pantalonii? Așa este,
urcând pe internet pentru crack. Dar dacă programul este rar, atunci spargeți
nu ar putea fi 🙁 Asta ar face o fisură universală, potrivită
orice program ... 🙂

Cu șase ani în urmă, când Windows 95 era încă considerat un pervers incomprehensibil,
Am creat o fisură automată în câteva secunde
dezvăluind protecția a aproximativ o treime din programele podsunutyh fără interferențe
persoană. Dar în tinerețe, servitorul tău umil a confundat concurența orașului
programele de aplicații și DefCon și au avut imprudența de a demonstra
(a fost demonstrat cum devine RAR sharovar
înregistrate). Bineînțeles, ideea de ao pune ușor nu este apreciată,
iar programul a fost abandonat.

Recent, în fața protecției versiunii electronice a revistei,
Mi-am dat seama că ideea de autoloton este încă relevantă. operat
faptul că programatorii, care nu sunt familiarizați cu modalitățile de hacking software,
Din an în an, ei fac una și aceeași prostie: compară cea corectă
parola cu introducerea.

Nu voi posta autolomalul gata, pentru că voi face asta
toate vânătoarea de a studia această întrebare 🙂 mult mai util este descrierea,
cum să îl creați.

Limbi de programare la nivel înalt (Delphi, C, VB) sunt comparate
linii folosind proceduri standard pe care le puteți patch-uri
în scopul extinderii capabilităților lor 🙂 De exemplu, toate comparate
Puteți arunca linii într-un fișier, astfel încât să puteți extrage unul corect
parola. Sau puteți forța programul să citească două linii
egal, atunci orice parolă introdusă va fi considerată corectă.

De fapt, această procedură de comparare este numită de mai multe ori
"Service" scopuri, deci patch-uri ar trebui să fie prudenți. Eu folosesc
o astfel de modificare a algoritmului: dacă unul dintre rândurile comparate
începe pe BUGZ, atunci rezultatul comparației este "liniile sunt egale".
În caz contrar, este rulat algoritmul de comparare standard. Acest lucru permite
introduceți cuvântul BUGZY în loc de serial / parolă 😉 Și dacă serialul
ar trebui să fie mai lung, atunci restul poate fi "ciocnit" de orice alt text.

Patch codul în modulul executabil (exe, DLL) sau direct în memorie este cazul
masina masina in ambele cazuri arata absolut
la fel, cu excepția funcțiilor utilizate în citire și scriere.

De fapt, despre ce și cum să patch-uri.

Pasul unu: găsiți funcția de comparație.
Vom căuta prin semnătură, adică o bucată de cod prezentă în funcție.
Fiecare compilator are propria semnătură, dar compilatorii înșiși
nu atât de mult, pe lângă aceasta, nu este nevoie de autoloton
pentru compilatorul pentru Fortran și Watcom c: încercați prima căutare
programele care se fac pe ele 🙂 Gentleman suficient
set: Delphi, MSVC și BC.

Pentru a determina semnătura unui compilator particular, nu am inventat nimic
mai bine decât punerea la tine, apoi apelați funcția de comparație și
Uită-te la el de la debuggerul de dezasamblare.

Pasul doi: găsiți un loc pentru codul suplimentar.
Deoarece capacitățile funcției de comparare sunt extinse, codul de patch-uri este "în loc"
Nu funcționează, trebuie să introduceți un cod suplimentar într-un cod neutilizat
părți ale memoriei. Din procedura de bază, se face un salt la introducere și apoi
controlul este returnat procedurii standard de verificare.

Ca un "spațiu gol" folosesc prima zonă pe care am găsit-o,
înfundat cu un număr mare de zerouri. Se pare că funcționează, deși nu trebuie

Pasul al treilea: Pregătiți plasturele.
Patch-ul conține salturi condiționate și necondiționate dintr-o bucată de cod în loc
Procedura de comparare "normală" cu inserarea și înapoi. Deoarece "distanța"
între ele nu este cunoscută în prealabil, este necesar să numărați lungimea salturilor
bazată pe localizarea părților componente ale plasturelui.

Pasul patru: scrieți un plasture.
datele sunt pur și simplu impudente scrise în memoria procesului sau într-un fișier, în funcție de
metoda selectată. Pentru a începe să scrie mai bine cu un insert, dacă nu este suficient că 🙂

În sfârșit, un exemplu practic al unui patch (pentru Delphi).

Pentru comparație, compilatorul folosește funcția LStrCmp. În forma explicită a
cod de nivel înalt, această funcție nu este chemată, ci când se dezasambla
poate fi văzut. Iată cum arată:

împinge ebx
împinge esi
împinge edi
mov esi, eax
mov edi, edx
cmp eax, edx
jz StringsEqual - verificați compararea liniei cu ea însăși
test esi, esi
jz NotEqual - verificarea unui șir gol
ediție edi, edi
jz NotEqual - verificarea unui șir gol

și apoi vine ce folosesc ca semnătura (8b 46 fc 8b 57 fc 29 d0):

mov eax, [esi-4] - locul ăsta
mov edx, [edi-4] - este înlocuită
_subptr: - aici vine o întoarcere de la plasture
sub eax, edx

În cazul în care acest cod este localizat, prima parte a plasturelui va fi localizată -
trecerea la cea de-a doua. Patch-ul este de 5 octeți începând cu E9.

A doua parte a plasturelui:
mov eax, [esi-4] este ceea ce suntem noi
mov edx, [edi-4] - șters cu un salt
cmp [esi], $ 5a475542 - linia "BUGZ"
_SE:
(*) jz StringsEqual - mergeți la partea procedurii spunând că șirurile sunt egale
cmp [edi], $ 5a475542 - același pentru al doilea argument
jz _se - pentru a nu mizeria din nou prin recalcularea lungimii saltului
(*) jmp _subptr - trecerea la procedura de comparare "normală"

codul liniilor marcate cu (*) se calculează pe baza distanței dintre
bucăți de patch-uri.

Rămâne de adăugat doar pentru editarea programului direct în memorie (după
Cum a pornit-o și sa despachetat dacă era ambalată
asprotect etc), se efectuează folosind funcțiile OpenProcess sau
CreateProcess, ReadProcessMemory și WriteProcessMemory, descrierea cărora se află în win32.hlp. Autoloton testat cu succes pe test
programe (care compară pur și simplu linia introdusă cu standardul)
și pe aparatul electrochimic # 34 (acesta din urmă fiind primit ca un cod de activare
cuvântul "BUGZY").

Este de așteptat ca autolotonul să deschidă fiecare al treilea program. aceasta
eroarea apărătorilor de început este eternă ...

Distribuiți acest articol cu ​​prietenii dvs.:

"Kaspersky Lab" a prezentat versiunea sa a incidentului, care a dus la scurgerea datelor NSA

Serviciul anonim pentru informatorii SecureDrop a constatat vulnerabilitate care duce la scurgerea datelor

Protejați Google Play Protect în comparație cu alte antivirusuri pentru Android

Articole similare