пакетирани SWF
Здравейте, приятели!
В този пост бих искал да говоря за това, което опакова SWF и как тя може да бъде разопакован динамично и статично.
И така, какво точно е пълен SWF?
Dynamic разопаковане (дъмпинг)
Dynamic - означава да се извлече необходимата изпълнението на Flash SWF Player'e (по-нататък - FP).
защото FP не е в състояние да играе криптирани известно колко ДИФ, логично е, че преди възпроизвеждането, ДИФ трябва вече да се зареди и декриптира в чист вид (например, чрез Loader.loadBytes ()).
По-важното е, че се декомпресира и декодиран SWF ще бъде в памет на всички времена, докато не бъде изпълнен FP'rom.
И това е нашият шанс да го получите!
Има два основни начина да направите това.
1) Динамичните декомпресия комунални услуги чрез
С помощта на трета страна или дори samopisnye комунални услуги за търсене на SWF в памет FP процес. Това е най-бързият, най-лесният и най-често най-ефективния начин. Но това не води до усещането, че сте - на труда бисквита 😉
Има различни безплатни и платени приложения за тази цел.
Един от най-напредналите - един SWF откривател, безплатна програма за собствениците на лицензи ASV. В някои случаи това може да бъде заобиколена проверката за домейн (които не позволяват да разопаковате и декодира SWFke) и се SWF да направите своите.
Също така е доста лесно да се различни безплатни амортисьори на Google.
Така ние виждаме, че възстановеният SWF наистина завършва в 053DD4FB, така че ние можем лесно да идентифицират всички байтове, започващи от 053DD020, довършителни 053DD4FB и да ги копирате в новия SWF файл.
След изпълнението на тази операция с всички срещания на FWS, които ви изглеждат подходящи, сред запазените SWF файлове ще бъде този, който желае, декомпресирания SWF!
Сега трябва да имате никакъв проблем с него декомпилацията.
Някои видове опаковчици усложняват търсенето на желания SWF чрез поставяне на множество FWS фалшиви заглавията в паметта. Така че трябва да бъдат по-внимателно подбрани FWS - проверете дължината му, а след това той изглежда като цяло. Преживяно в обратен инженеринг хора (като мен: п) може да различи фалшива око от този удар с глава, погледна към самата заглавната част, и няколко десетки байта след него.
Понякога, опаковани SWF не може да се разшири в паметта, преди да проверите това, което някои условия. Например, товарача да проверите текущия домейн или наличие на файл с лиценза. В този случай ще трябва да се закърпи тези проверки (например, с помощта на Disassembler на байткод, като Yogda или RABCDasm) или като се осигурят необходимите файлове (които може да са ключът за разшифроване), за да ДИФ, и да започне да разопаковате.
статично разопаковане
Статичен - означава, без да SWF в РП.
Като цяло, този тип разопаковане курорт, когато дойде да разопаковате SWF динамично (кой знае защо не можете да изпълните SWF?)
Статично разопаковане може да бъде много трудна задача, тъй като не е един от начините да го усложни и да направи мъчително дълго.
Така че, от къде да започна с статично разопаковане? Да започнем с това, трябва да имате достъп до най-малко две неща в SWF:
1 - DefineBinaryData маркер (и).
2 - AS декомпилирате или ABC байткод unpacker \ товарач.
Също така, необходимостта в някои случаи,
3 - SymbolClass таг
За да направите това, използвайте наличните инструменти (ASV, Adobe SWF следовател SWiX, и т.н.).
Как да намерите DefineBinaryData маркер в SWF?
Първо ще отбележа, че някои от комуналните услуги, например, ASV, може ясно да се посочи наличието на този маркер, веднага след откриването на SWF. Те също могат да запазите този етикет като двоичен файл.
Можете да го намерите ръчно, с помощта на различни инспекции тагове, като посочените по-горе Adobe SWF изследовател.
За съдържание DefineBinaryData етикет от примерния файл с помощта на Adobe SWF следовател, просто отворете файла, отидете на Tag Viewer, изберете DefineBinaryData етикет и кликнете на сметището бутон на файла.

Понякога списъка с етикет може да бъде много фалшива да обърка нещастния бедняк. За да намерите необходимият таг ще трябва да научите малко товарач код \ unpacker и проследяване го обжалва пред опакованите данни.
Тя обикновено изглежда така:
Къде SomeClass е от тип Class и ByteArrayAsset наследена от класа.
Нека да разгледаме кода за зареждане и потърсете нещо подобно.
Да, това е всичко!
Сега ние трябва да се търси един клас с име, завършваща на «_content» и са наследени от ByteArrayAsset.
И ето го:
За да разберете кой маркер DefineBinaryData, свързани с този клас, трябва да се погледне в SymbolClass етикет и за запис с името на класа изглежда намерена «MainTimeline_focus_loader_content».
В нашия случай, този запис е както следва (в Adobe SWF изследовател):
Забележка полето за стойността idref. Този номер желания маркер DefineBinaryData!
Сега се търсят етикет с идентификационния номер на всички тагове DefineBinaryData.
След като го намерите, можете да го запишете във файл и да продължи декомпресиране.
Защо съм помолен да idref, а не името на класа не помниш ли? Защото, ако AS unpacker завоалира, да се работи с имената на класа може да бъде много трудно.
Сега успеха на Вашето мероприятие зависи от времето, което сте готови да отделите, сложността на опаковчика и късмет)
Ако имате късмет, който сте получили от данни DefineBinaryData ще бъде чист SWF без никакво криптиране и декомпресия може да се счита за приключила.
Но най-вече, на този етап всички удоволствия е само началото и заден челен товарач - анализ на алгоритми за криптиране и писане на собствения си преводач.
В този случай, кодът за начално зареждане е умишлено направена възможно най-прости и не се обърквам, така че този път имахме късмет - ние можем лесно да намерите функцията за декриптиране:
И ние научаваме, че в продължение на оригиналния SWF достатъчно му всеки байт poksorit 55.
Сега можете да напишете вашето Decryptor, или скрипт, който ще направи всички операции за дешифриране на SWF. Това е всичко завърши разопаковане. След разшифрован, можете да получите оригиналния SWF, код и ресурси са видими в Decompiler.
Надяваме се, че тази и декомпресира SWF няма да се появи точно по същия Decryptor SWF, просто вземете, хахаха!)
Понякога опаковка, при използване на принципа на кукли - набута един Decryptor към друг - и така десетки пъти, а дори и алгоритмите за разшифроване са различни навсякъде.
Във всеки случай, динамиката разопаковане всички околовръстни пътища.
Не забравяйте - в света Flash, не е нищо, но имена не могат да бъдат скрити от очите на висок клас професионални достатъчно мотивация 😉
Открили сте грешка? Изберете го и натиснете Shift + Enter или кликнете тук. Благодаря ви!