Cum la spre hack SecuROM

Cum a început totul
matematica virtual
Am amintesc bine cum în „Arta de a dezasambla“ Kris Kaspersky a descris transformarea în bytecode ca fiind cea mai bună protecție stabilă și puternică împotriva ingineriei inverse. Ei depăși atacatorul va avea nevoie de aproape întreaga viață, și chiar un pic mai mult. Ce să SecuROM 7.33.017, înțelegerea principiilor muncii și analiza de două săptămâni o structură mașină virtuală mi-a luat, și o lună mai târziu, am fost gata să scrie un decompilator.
De ce ai nevoie? Doar să învețe să gândească ca „crede“ mașina virtuală, care este considerat un set de cod de asamblare pe un nivel chiar mai mare decât un fel de C ++. Pe de altă parte, în cazul în care nu este ascuns în șirul de cod ASCII din bancurile de dezvoltator, aș fi crezut că de fiecare dată când am rupe aceeași mașină virtuală.
Într-un cuvânt, VM reprezintă un set de piese reciproc independente de cod. Ca de obicei cuvântul „funcție“ pentru a Hendley chiar și aplicabilă, deoarece stiva mașină nu joacă un rol fundamental ca registrele CPU (EAX, ECX, ESP, și așa mai departe). Dacă urme de mânerele, sklydvaetsya impresia că sari pe insule. Rolurile Hendley sunt diferite:
- Pornind de mânerele. Initializarea registrelor virtuale VM, scoate o trimitere la bandă p-cod. Realizate la bun început.
- Convențional Handley. Efectuați operații primitive - schimbare de date, efectua operațiuni simple, cum ar fi XOR. 95% din munca acestor baieti fac VM.
- Utilități Handley. Responsabil pentru apelarea funcțiilor externe care nu sunt direct legate de VM, precum și pentru prelucrarea și ambalarea înapoi la schimbătorul VM. Restaurarea starea reală a registrelor stivă și CPU.
- Manere de eliberare a VM. Acestea trebuie să fie căutată în primul rând. Cunoaște la început, a găsit sfârșitul, apoi lanțul deschis.