Automatikus lomalka

Mit szoktál csinálni, hogy kiváló shareware prog? Ez így van,
mászni az interneten repedések. De ha egy ritka program, a repedés
Nem lehet 🙁 Ez lenne az egyetemes crack, alkalmas
minden program ... 🙂

Hat évvel ezelőtt, amikor a 95 vindovz még mindig úgy érthetetlen zavar,
Azt hozták létre automatikus lomalka, néhány másodpercig
eltitkolták a védelem, hogy csúszik mintegy harmada a programok beavatkozás nélkül
személy. De fiatal korában a te szolgád zavaros város verseny
alkalmazások és DEFCON és figyelmetlen volt elég ahhoz, hogy bizonyítani
utódaik (amint azt shareware RAR válik
regisztrált). Természetesen az ötlet nem az enyhén szólva értékelik,
és a program elvetették.

Legutóbb, szemben az elektronikus változat a folyóirat védelem,
Rájöttem, hogy avtolomalki ötlet továbbra is érvényes. hajtású
az a tény, hogy a programozók nem ismerik a módszereket hacker szoftver,
egy év nem azonos nonszensz: összehasonlítva a megfelelő
A megadott jelszó.

Még nem vagyok kész, hogy állapítson meg avtolomalku mert ez Otobaya
Minden vadásznak, hogy tanulmányozza ezt a kérdést 🙂 sokkal hasznosabb a leírás,
hogyan lehet létrehozni egy.

Magas szintű programozási nyelvek (Delphi, Ci, VB), mint
összhangban standard eljárásokkal, amely lehet folt
azzal a céllal, hogy lehetővé tegye számukra 🙂 például minden összehasonlítva
vonal dobja, így akkor kivonat a megfelelő fájlt
jelszót. Vagy beállíthatja, hogy a program megvizsgálja a két vonal
egyenlő, akkor az összes beírt jelszó érvényesnek kell tekinteni.

Tény, hogy ez az eljárás az összehasonlítás sokszor
„Szolgáltatás” célokra, ezért alaposan meg kell foltozni. éN használ
ilyen módosítás algoritmus: ha az egyik képest sorok
Úgy kezdődik Bugz, az összehasonlítás eredménye - „húrok egyenlő.”
Ellenkező esetben fennáll az a szabványos összehasonlító algoritmus. Ez lehetővé teszi,
írja helyett seriynika / jelszó szót Bugzy 😉 Ha keygen
Ez hosszabbnak kell lennie, a többit lehet „szerzett” semmilyen más szöveget.

Patch kódot a végrehajtható modul (exe, dll), vagy közvetlenül a memóriában - a
takarékos, avtolomalka mindkét esetben úgy néz ki, teljesen
egyaránt, kivéve azokat, használt írni és olvasni funkciókat.

Tulajdonképpen mit és hogyan kell foltozni.

Első lépés: találni egy összehasonlító funkció.
Keresés lesz az aláírás, azaz egy darab kódot, amely jelen van a funkció.
Minden fordító saját aláírásával, de a fordító maga
Nem túl sokat, különben is, nincs különösebb kell tennie avtolomalku
Fortran fordító és watcom c: megpróbálja megtalálni az első
egy program, amely tettek 🙂 Elég dzhentelmenstkogo
be: Delphi, MSVC és BC.

Annak megállapításához, az aláírás egy adott fordító, nem tudok gondolni semmi
jobb, mint hogy azt magad, akkor hívja az összehasonlító függvényt és
nézd meg a hibakereső szétszedi.

Második lépés: megtalálni a helyét kiegészítő kódot.
mint a lehetőséggel bővül az összehasonlító függvényt, patch kód „helyben”
Ez nem működik, akkor szükség lehet kiegészítő kód egy használaton kívüli
része a memória. Lehetővé teszi, hogy egy ugrás a beiktatása a fő rutin, majd
vezérlés visszakerül a standard vizsgálati eljárás.

Amint azt használja az első rendelkezésre álló régió „szabad hely”
zsúfolt a sok nullát. Úgy tűnik, hogy a munka, bár nem köteles 🙂

Harmadik lépés: tapasz előállítására.
A tapasz feltételes és feltétlen transzferek egy darab kód helyett
„Normál” összehasonlítás szerint illesszen be és vissza. Mivel a „távolság”
közöttük nem ismertek, számolni kell a hosszú ugrások
alapján a helyét a tapasz részek.

Negyedik lépés: Felvétel Patch.
szemtelenül adatok csak írva, hogy a folyamat memória vagy egy fájl, attól függően,
a választott módszer. Kezdje el a rögzítést jobb betétekkel, soha nem lehet tudni, mi 🙂

Végül egy gyakorlati példát a tapasz (Delphi).

Összehasonlításképpen, a fordító használ sorok LStrCmp funkciót. Az explicit formában
Magas szintű kód, ez a funkció nem nevezett, de dizassemblirovnii
Látom őt. Itt van, hogyan néz ki szerelvény hirdetések:

tolja ebx
nyomja esi
tolja edi
mov esi, eax
mov edi, edx
cmp EAX, EDX
JZ StringsEqual - teszt összehasonlítás sor önmagával
teszt esi, esi
JZ NotEqual - ellenőrzése üres string
teszt edi, edi
JZ NotEqual - ellenőrzése üres string

és ott van, amit használni, mint egy aláírás (8b 46 57 8b FC 29 d0):

mov eax, [ESI-4] - ez az a hely
mov EDX, [edi-4] - szubsztituált
_subptr: - Itt van egy visszatérő a tapasz
sub EAX, EDX

Hol van ez a kód, amely rendezi az első része a tapasz -
Az átmenet a második. Patch - 5 bájt, kezdve az E9.

A második rész a tapasz:
mov eax, [ESI-4] -, hogy mi
mov EDX, [edi-4] - elakadt ugrás
cmp [esi], $ 5a475542 - line 'Bugz'
_se:
(*) Jz StringsEqual - az átmenet a része az eljárásnak, azzal, hogy a húrok egyenlő
cmp [edi], $ 5a475542 - ugyanaz a második argumentum
JZ _se - nem bütykölni ismét a újraszámítását az ugrási
(*) Jmp _subptr - az átmenet a "normális" összehasonlítás eljárás

kódot vonalak jelölt (*) alapján kerül kiszámításra közötti távolság
darab javításokat.

Már csak azt kell hozzátenni, hogy a közvetlenül a memória szerkeszti a program (miután
ő letölteni és kivonat is, ha tele volt
asprotect stb), segítségével gyártanak funkciók vagy OpenProcess
CreateProcess ReadProcessMemory és WriteProcessMemory ismertetik, amelyek win32.hlp. Avtolomalka sikeresen tesztelték a teszt
programok (amelyek csak be egy sort, mint a benchmark)
és elektrohakere # 34 (az utóbbi az aktiváló kódot kapott
a "Bugzy).

Várható, hogy avtolomalka nyitva minden harmadik program. ezt
Hibát kezdők defenders örök ...

Itt található az ezt a cikket egy ismerősének:

„A Kaspersky Lab” bemutatta változata az esetet, amelynek eredményeként a szivárgást a NSA adatok

Az anonim szolgáltatás bejelentők SecureDrop talált biztonsági rés, ami az adatszivárgás

Biztonsági megoldás a Google Play Protect, mint más anti-virus for Android

Kapcsolódó cikkek