swf packed

Bună ziua, prieteni!
În acest post, aș dori să vorbesc despre ceea ce un fișier SWF ambalate și cum poate fi despachetat static și dinamic.

Deci, exact ceea ce este ambalat SWF?

despachetare dinamic (dumping)

Dinamic - înseamnă a extrage performanța necesară a Flash SWF Player'e (în continuare - FP).
pentru că FP nu este capabil să joace criptat necunoscut modul în care SWF, este logic că înainte de redare, SWF ar trebui să fie deja încărcate și decriptat într-o formă pură (de exemplu, prin Loader.loadBytes ()).
Mai important, decomprimat și decodificat SWF va fi în memorie în orice moment până când este executat FP'rom.

Și aceasta este șansa noastră să-l!
Există două moduri principale de a face acest lucru.

1) utilități decompresie dinamice prin
Folosind o terță parte sau chiar utilități samopisnye pentru căutare SWF în memoria proces FP. Acesta este cel mai rapid, mai ușor și, de obicei, cel mai eficient mod. Dar nu provoacă senzația că - cracker forței de muncă 😉
Există diverse utilități gratuite și plătite în acest scop.
Una dintre cele mai avansate - un SWF Revelatorul, un utilitar gratuit pentru proprietarii de licențe ASV. În unele cazuri, se poate trece de verificarea pentru domeniul (care nu permit să despachetați și să decodifice SWFke) și să profitați SWF în mediul dumneavoastră.
De asemenea, este destul de ușor la diverse amortizoare gratuite Google.

Deci, vom vedea că SWF recuperat se termină într-adevăr la 053DD4FB, astfel încât să putem identifica cu ușurință toate octeți începând de la 053DD020, finisare 053DD4FB și copiați-le în noul fișier SWF.
După ce a făcut această operație cu toate aparițiile FWS, pe care le par adecvate, printre fișierele SWF salvate va fi cel dorit, SWF decomprimat!
Acum ar trebui să aveți nici o problemă cu ea decompilare.

Unele tipuri de packere îngreunează căutarea SWF dorită prin plasarea unei multitudini de FWS antete false în memorie. Deci, ar trebui să fie selectat mai atent FWS - verifica lungimea sa, și apoi se uită în general. Cu experiență în oameni de inginerie inversă (ca mine: p) poate distinge un ochi fals de la acest antet, uitându-se la antetul în sine, și o duzină de câțiva octeți după acesta.

Uneori, ambalate SWF nu poate fi extins în memorie înainte de a verifica ce anumite condiții. De exemplu, încărcătorul poate verifica domeniul actual sau prezența unui fișier cu licență. În acest caz, va trebui să patch aceste controale (de exemplu, folosind un disassembler de bytecode, cum ar fi Yogda sau RABCDasm) sau furnizează fișierele necesare (care poate fi cheia de decriptare) pentru a face SWF, și începe să despacheteze.

despachetare statice

Static - înseamnă fără a executa SWF în PC.
În general, acest tip de despachetare stațiune când a venit pentru a despacheta SWF dinamic (cine stie de ce nu ai putea rula SWF?)
despachetare static poate fi o sarcină foarte dificilă, deoarece nu există nici o modalitate de a complica și de a face extraordinar de mult timp.

Deci, în cazul în care pentru a începe cu despachetare statice? Pentru a începe cu, ar trebui să aibă acces la cel puțin două lucruri într-un SWF:
1 - tag DefineBinaryData (e).
2 - AS decompilarea sau abc bytecode Dezarhivator \ încărcător.
De asemenea, necesitatea, în unele cazuri,
3 - tag SymbolClass
Pentru a face acest lucru, utilizați instrumentele disponibile (ASV, Adobe SWF investigatorului, Swix, etc.).

Cum de a găsi DefineBinaryData tag-ul în SWF?
În primul rând, observăm că unele dintre utilitati, de exemplu, ASV, puteți indica în mod clar prezența acestei etichete, imediat după deschiderea SWF. Ei pot salva, de asemenea, această etichetă ca un fișier binar.
Puteți găsi, de asemenea, manual, folosind o varietate de tag-uri de control, cum ar fi cele de mai sus Investigatorul Adobe SWF.
Pentru conținutul DefineBinaryData tag-ul din fișierul mostră utilizând Adobe SWF investigator, pur și simplu deschideți fișierul, accesați Viewer Tag, selectați DefineBinaryData tag-ul și faceți clic pe butonul fișierului de memorie Pentru a.

swf packed

Uneori, lista de tag-ul poate fi de multe false pentru a confunda cracare nefericit. Pentru a găsi tag-ul necesar va trebui să învețe un pic de cod încărcător \ Dezarhivator și urmăriți-l face apel la datele ambalate.
De obicei, arată astfel:

În cazul în care SomeClass este de tip clasă și ByteArrayAsset moștenit de la clasa.

Să ne uităm la codul de pornire și căutați ceva similar.
Da, asta e!

Acum ar trebui să căutăm o clasă pe nume care se termină în «_content» și sunt moștenite de la ByteArrayAsset.
Și aici este:

Pentru a afla care DefineBinaryData tag asociate cu această clasă, ar trebui să se uite în tag-ul SymbolClass și căutați o înregistrare cu numele clasei găsit «MainTimeline_focus_loader_content».
În cazul nostru, această înregistrare este după cum urmează (în Adobe SWF investigatorului):

Notă câmpul de valoare IDREF. Acest id tag-ul dorit DefineBinaryData!
Acum, uita-te pentru o etichetă cu ID-ul de toate etichetele DefineBinaryData.
După ce îl găsiți, puteți salva într-un fișier și să continue decomprimare.
De ce am cerut să IDREF, mai degrabă decât numele clasei amintesc? Pentru că dacă AS obfuscated Dezarhivator, pentru a lucra cu numele clasei poate fi foarte dificil.

Acum, succesul evenimentului depinde de cantitatea de timp pe care sunteți dispus să-și petreacă, complexitatea ambalatorului și noroc)
Dacă ești norocos, ai primit de la datele DefineBinaryData va fi SWF pură, fără nici o criptare și decompresia poate fi considerată ca fiind de peste.
Dar, mai presus de toate, în această etapă, toată distracția este doar începutul și de mers înapoi încărcător frontal - analiza algoritmilor de criptare și de scris propriul interpret.

În acest caz, codul de bootloader este făcută în mod intenționat cât mai simplu posibil și nu umbri, asa ca de data aceasta am avut noroc - putem găsi cu ușurință funcția de decriptare:

Și învățăm că pentru SWF original, suficient sa în fiecare octet poksorit 55.
Acum puteți scrie Decryptor, sau un script care va face toate operațiunile pentru a decripta SWF. Asta e tot terminat despachetare. Odată decriptat, veți obține original SWF, codul și resursele sunt vizibile în Decompiler.
Se speră că acest lucru și decomprimat SWF nu vor apărea exact aceeași SWF Decryptor, doar alege, hahaha!)
Uneori, pachetul folosind principiul de păpuși - împinge un Decryptor la altul - și astfel de zeci de ori, și chiar și algoritmii de decriptare sunt diferite peste tot.
În orice caz, dinamica despachetarea toate variante de ocolire.
Amintiți-vă - în lumea Flash, nu este altceva decât nume nu pot fi ascunse de ochii de high-end profesionale cu motivație suficientă 😉

Ați descoperit o greșeală? Selectați-l și apăsați pe Shift + Enter sau faceți clic aici. vă mulțumesc!

Mesaj de navigare