Сейчас на форуме: -Sanchez- (+8 невидимых)

 eXeL@B —› Основной форум —› Flash (swf). Декомпиляция, взлом
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
Посл.ответ Сообщение


Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 11 апреля 2011 15:04 · Поправил: 4kusNick
· Личное сообщение · #1

Дружественные темы: Взлом .net, Java. Взлом и реверсинг, Взлом Android приложений, Unity3D.

Анализаторы:
SWF iD - первый и единственный анализатор для SWF, позволяет выяснить чем накрыта флэшка, имеет встроенный дампер флэшек с отсевом фэйков.

Декомпиляторы\редакторы:
Action Script Viewer (ASV) - лучшее, что есть для работы с обфусцированными swf (ru-board).
AS3 Sorcerer - только код, только as3 (от автора ASV) (ru-board).
JPEXS Free Flash Decompiler (FFDec) - декомпилятор и редактор байткода; есть автоматическая деобфускация (слабенькая), редактирование кода (именно кода!), сохранение в fla, пакетное переименование.
SWiX - редактор swf в виде xml.
Sothink SWF Decompiler (ru-board).
Eltima Flash Decompiler Trillix (ru-board).
SWFWire Inspector - отличная утилитка на AIR, которая позволяет ползать по структуре swf, декомпилировать код и т.д.
Adobe SWF Investigator - аналог SWFWire от Adobe, по некоторому функционалу интереснее.

Работа с байткодом\тэгами:
RABCDAsm - асм/дизасм байткода, опенсорс (as3).
Редактор на базе RABCDAsm - удобный редактор с подсветкой и сворачиванием блоков.
WinRABCDAsm - ещё один GUI для RABCDAsm, на этот раз более практичный - можно использовать с любой версией RABCDAsm.
RABCDAsm mod - удобная редакция RABCDasm от местного обывателя JohnyDoe, позволяет разбирать\собирать swf простым перетаскиванием на основной exe, с автоматической деобфускацией имён и некоторой чисткой от мусора.
SWF Reader - позволяет править все тэги и данные в swf, содержит декрипторы\депротекторы, разработка прекращена.
FlashHacker - инструмент на основе RABCDAsm для работы с байткодом, сделан для исследователей малвари.

Автоматизированное снятие защит
SWF Decrypt - снимает старые версии Amayeta SWF Encrypt и DComSoft SWF Protector (офсайт сдох).
+ уже упомянутые: ASV, FFDec, RABCDAsm mod и SWF Reader.

Дапмеры\Распаковщики (для тех, кому лень руками)
SWF Revealer Ultimate - самый продвинутый из автоматических инструментов данного типа, вытащит все, что проиграется в локальном проигрывателе. Платный, количество лицензий ограничено.
Есть ещё обычный SWF Revealer, который входит в комплект ASV. Тоже весьма прокачанный распаковщик, работает по другому принципу.
SWF Memory Dumper - бесплатный и простой дампер.
Sothink SWF Catcher - умеет вытаскивать swfки из кэшей браузеров и искать их в памяти процессов (ru-board).
+ уже упомянутые: SWF Reader, SWF iD.

Разное
Sulo - дополнение к Intel Pin kit. Может трейсить инструкции (пример), дампить всё что загружается с помощью loader.loadBytes() и расшифровывать SecureSWF строки.
За скомпилированный бинарь 1 спасибо JohnyDoe, еще компилил OKOB, но ссылка сдохла.

Другие местные обсуждения в области исследования Flash:
Decrypt SWF, подверженный обфускации Amayeta SWF Encrypt
Вытащить swf из exe (Camtasia Studio)
Реверсинг Adobe Flash Player
Формат данных флэш-вьювера "Электронной библиотеки" РНБ
DoSWF - professional flash encrypter
Реверсинг Флэша, поменять размер массива
Новый метод защиты swf
Реверсинг flash(action script)
www.teachshop.ru - Обновленная защита
Разбор флешки - о том, как находить и вытаскивать включённые в swf файлы с двоичными данными

Чтиво на тему
Способы "защиты" flash-приложений
Упакованный SWF. Как распаковать?
Продвинутое шифрование в DoSWF? Вызов принят!

Доки \ маны
AVM2 Overview - описание вирт. машины для as3 с опкодами и проч.
SWF File Format Specification - спецификация формата swf (строение, расположение тэгов и проч.).

Debug-версии Flash Player - тут.
Они позволяют трейсить и отлаживать код (см. описание AS3Trace и AS3Verbose тут).

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


| Сообщение посчитали полезным: uncleua, OKOB, SReg, res, ClockMan, Gideon Vi, sendersu, Oott, _ruzmaz_, FrenFolio, d0wn, SGA, Flint, Coderess, daFix, Runner, tracename, pollllll_n, Hexxx, DenCoder, Lumen, NikolayD, AKAB, ==DJ==[ZLO], Rustem, BAHEK, SyntaX, nick8606, UniSoft, Soso, sivorog, MarcElBichon, soho


Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 28 февраля 2015 20:09 · Поправил: OKOB
· Личное сообщение · #2

4kusNick пишет:
Если кто скомпилит - делитесь


http://rghost.ru/7n7GHPsJy - sulo.dll - Release

-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: 4kusNick


Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 28 февраля 2015 20:52
· Личное сообщение · #3

OKOB пишет:
FlashHacker --- Flash Instrumentation Tool

Интересно как оно выглядит.. Я с пайтоном совсем не дружу, как такие штуки запускать вообще?

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 28 февраля 2015 20:53 · Поправил: JohnyDoe
· Личное сообщение · #4

Я не совсем понял для чего нужен Sulo. Я его уже видел кстати, но так и не попробовал. И эта собака падает с ошибкой:"ERROR: namespace pointer is NULL in Traits object"

Vizzy ведь тоже может показать полный трейс. Там игра с параметрами в файле mm.cfg идет.

FlashHacker вот так выглядит.

http://s10.postimg.org/aexbqi2l5/asew4wre.jpg

Питон надо поставить. Потом pip и через него установить PySide.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 28 февраля 2015 22:11 · Поправил: 4kusNick
· Личное сообщение · #5

JohnyDoe пишет:
Vizzy ведь тоже может показать полный трейс. Там игра с параметрами в файле mm.cfg идет.


Через mm.cfg можно трейсить только в отладочном FP и лог там слишком "шумный" и малоинформативный
Пример лога: --> Link <-- (AS3Trace=1 + AS3Verbose=1)

Sulo в теории работает со всеми FP, только автор не добавлял поддержку всех версий (это сделать не сложно, надо прописать смещения в одном cpp). Я пробовал на релизном --> 11.1.102.62 <--.
Вот пример его лога: --> Link <-- (а вот примерно то же место, что в Vizzy: --> Link <--)

Командная строка была такая:
pin.exe -t source\tools\Sulo\Release\sulo.dll -logfile "d:\sulo.log" -tracefile "d:\trace.log" -- "D:\fp.exe"

JohnyDoe пишет:
FlashHacker вот так выглядит.
http://s10.postimg.org/aexbqi2l5/asew4wre.jpg
Питон надо поставить. Потом pip и через него установить PySide.

Прелестно! Спасибо =)

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 03 марта 2015 01:15
· Личное сообщение · #6

Ребят, есть типа отладчиков что-то для флеша?
Имеется флеш, в котором хитро формируется определённый массив... Код рипнул, хотелось бы проверить правильно ли. т.е. нужно в определенном месте встать и посмотреть что в массиве или скинуть в лог
Это возможно?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 03 марта 2015 01:55
· Личное сообщение · #7

Isaev попробуй trace забабахать в том месте.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 03 марта 2015 03:52
· Личное сообщение · #8

Солидарен на счёт trace, скомпиль простой пример с трейсом перебираемого массива, глянь байткод и по аналогии сделай в жертве.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 03 марта 2015 11:57 · Поправил: JohnyDoe
· Личное сообщение · #9

На самом деле у меня даже шаблон есть. Просто разбираем rabcdasm'ом и вставляем где надо. Переменную для вывода надо заменить на свою.

Code:
  1.       findpropstrict      QName(PackageNamespace(""), "trace")
  2.       getlex              QName(PackageNamespace(""), "names")
  3.       callpropvoid        QName(PackageNamespace(""), "trace"), 1


| Сообщение посчитали полезным: Isaev


Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 03 марта 2015 12:22
· Личное сообщение · #10

О, а оно без перебора даже все элементы выведет? Я чет давно уже не трейсил массивы, подазбыл видать, значит совсем просто =)
Интересно, с вектором тоже прокатит?

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 03 марта 2015 12:55
· Личное сообщение · #11

Isaev пишет:
Ребят, есть типа отладчиков что-то для флеша?

вот я буквально неделю назад грустил на предмет дебага флеша, пролистай пару страниц почитай

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 03 марта 2015 14:38 · Поправил: JohnyDoe
· Личное сообщение · #12

4kusNick Прокатит. Все элементы через запятую должны выпасть в лог. С ByteArray'ем посложнее будет через трейс. Но его можно например так слить в файл

Code:
  1.       findpropstrict      QName(PackageNamespace("flash.net"), "FileReference")
  2.       constructprop       QName(PackageNamespace("flash.net"), "FileReference"), 0
  3.       getlocal2
  4.       callpropvoid        QName(PackageNamespace(""), "save"), 1


P.S. Вектор тоже выводится как массив. Только что попробовал.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 03 марта 2015 16:12
· Личное сообщение · #13

JohnyDoe пишет:
Вектор тоже выводится как массив. Только что попробовал.

Эт хорошо!)

JohnyDoe пишет:
С ByteArray'ем посложнее будет через трейс. Но его можно например так слить в файл

Да, сам пользовал FileReference.save на одной air приложухе, правда во Flash player такое вроде только в ответ на пользовательское действие можно делать, то есть если был клик по кнопке и в где-то в коде обработчика клика такое прописать - будет ок, но если клика не было могут и послать насколько помню.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 03 марта 2015 16:25
· Личное сообщение · #14

4kusNick Опробовано лично)). Вылезет окно с предложением выбрать файл для сохранения, безотносительно где расположен этот код.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 03 марта 2015 20:34
· Личное сообщение · #15

JohnyDoe
Может флэшка в доверенных была? Либо это очередной косяк в песочннице =) Она не должна позволять такого делать - прикинь баннеры бы умели FileReference использовать без участия пользователей?

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 03 марта 2015 22:17 · Поправил: JohnyDoe
· Личное сообщение · #16

4kusNick

Ну, почему без участия. Я же написал, что выдается окошко для выбора куда сохранять. Это не в браузере. Я в браузере не отлаживаю обычно)). Надо будет попробовать.

Через браузер не работает. Но если URL открыть в standalone плеере, то работает.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 03 марта 2015 23:19
· Личное сообщение · #17

Вероятно в standalone меньше ограничений, рад что там работает "из коробки"!
Без участия - я имел ввиду без предварительного клика по кнопке где-то во флэшке. В доках написано так:

In Flash Player, you can only call this method successfully in response to a user event (for example, in an event handler for a mouse click or keypress event). Otherwise, calling this method results in Flash Player throwing an Error exception. This limitation does not apply to AIR content in the application sandbox.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 05 марта 2015 00:25
· Личное сообщение · #18

В общем поставил Flash-Debug версию, поставил Vizzy по совету JohnyDoe
Логи пишет, но как вевысти нужную переменную так и не разобрался... Можете основные моменты расписать по-подробнее?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 05 марта 2015 00:53
· Личное сообщение · #19

Isaev пишет:
как вевысти нужную переменную


Вкратце - нужно дизассемблировать до байткода, затем в нужном месте вставить байткод вызова трейса с передачей ему аргумента (пример привёл JohnyDoe выше, там трейсится массив с именем names) и ассемблировать обратно.
Для дизасма\асма - лучше использовать что-нибудь на основе RABCDAsm, например --> Link <--.

Это всё про as3.
Если swfка на as2, то подход немного другой, но вцелом аналогичен. Только инструменты иные. Я бы посоветовал SWiX или FFDec для редактирования as2 байткода.

Если есть обфускация - лучше сперва снять, либо пробовать по живому, но внимательно проверять результат, т.к. могут быть проблемы.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 05 марта 2015 02:44
· Личное сообщение · #20

4kusNick, as3, обфускация есть, посмотреть массив хотелось бы "на лету", ибо я без понятия можно ли флешку с социальной сети запустить без авторизации.
Следовательно обфускацию тоже не снять (да и даже если бы можно было, после снятия оно же не соберётся назад в рабочую флешку?!)
пробовал в JPEXS там есть экспериментальная кнопка патча в памяти, но оно вообще похоже ничего не патчит)

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 05 марта 2015 03:26
· Личное сообщение · #21

Я бы действовал так:
- попробовал пропатчить обфусцированную swf (нашёл бы нужно место и впердолил бы туда трейс)
- подсунул бы её браузеру через Map Local в Charles например

- второй вариант - перехватывать FFDec'овсим прокси и патчить через тот же ре-ассемблинг

А обфускацию зачастую можно снять не ломая флэшку. Скорее наоборот, все станет пошустрее работать

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


| Сообщение посчитали полезным: Isaev

Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 05 марта 2015 09:14 · Поправил: VodoleY
· Личное сообщение · #22

4kusNick пишет:
(нашёл бы нужно место и впердолил бы туда трейс)

а можно об этом поподробнее? ссылок натыкать например... ))) у меня на шее ща подобная нужда имеется

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 05 марта 2015 10:18
· Личное сообщение · #23

4kusNick пишет:
А обфускацию зачастую можно снять не ломая флэшку

для SecureSWF v4.x есть туторы?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 05 марта 2015 12:02
· Личное сообщение · #24

VodoleY
Туторов не знаю, но там все довольно просто - дизасмим, лезем в нужный метод нужного класса, добавляем нужный байткод, асмим обратно =)
Как выглядит байткод трейса выше кидал JohnyDoe.
Наверное лучше начать, а там по ходу дела все возникающие вопросы решать.

Isaev
Туторов не видел, но я и не искал, т.к. для деобфускации SecureSWF ASV пользую.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 05 марта 2015 14:03 · Поправил: JohnyDoe
· Личное сообщение · #25

Isaev Вот тебе 3 картинки. Оригинальная флешка накрытая secureswf в софинке, она же в as3sorcerer и она же после прохода модом rabcdasm опять же в софинке.



As3sorcerer не модифицирует флешку. Поэтому придется копаться в обфусцированном коде для того чтобы вставить свой код. Rabcdasm mod вносит изменения в код и копаться в нем много легче потом.

Вставить свой код даже в обфусцированную флешку не такая уж проблема. Надо только найти место, куда его вставить. Но когда у тебя есть исходники, я не вижу проблемы с поиском нужного места. Тем более ты же уже рипнул алгоритм, а значит тебе должно быть известно место.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 05 марта 2015 15:49
· Личное сообщение · #26

JohnyDoe
разобрал, заменил, собрал
при декомпиляции новой флешки появились нужные строки в нужном месте
Code:
  1.   trace(use do);
  2.   trace(_-BQ);

ему как-то нужно сказать, что это массив или он сам догадается?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 05 марта 2015 16:29
· Личное сообщение · #27

Запусти уже флешку! Обсуждали ведь уже выше. Если что-то пойдет не так, тогда и обсудим. Эксперимент дает больше данных, чем чей-то совет.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 06 марта 2015 09:57
· Личное сообщение · #28

Крутил вертел вчера чарли, так и не нашёл как в нём возможно подменить флешку

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 06 марта 2015 10:34
· Личное сообщение · #29

Я чарли никогда не использовал. Делал через старую оперу. Открываем страницу. Ищем в кэше нужный файл и заменяем нашим файлом. В опере открываем исходный код страницы, пару букв правим(чтобы кнопка применить изменения активировалась), применяем изменения. При этом все будет подгружено из кэша.

Вот сейчас чарли глянул. Там все просто. Tools->Map local. Указываешь адрес в интернете и выбираешь файл на винте. Профит. Не забываем указать чарли в качестве прокси.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 06 марта 2015 12:16 · Поправил: 4kusNick
· Личное сообщение · #30

Isaev пишет:
так и не нашёл как в нём возможно подменить флешку

Он при установке в лису в качестве прокси прописывается.
Затем запускаем лису, запускаем чарли, ждём когда прогрузится то что нам надо, находим в дереве в левой части нашу swf, ПКМ на неё и выбираем Map Local... http://i.imgur.com/efN5wCl.png
В разделе Map From уже всё будет заполнено, останется выбрать файл для Map To: http://i.imgur.com/JrxZyUk.png (у меня в Map From там от балды шляпа на скрине, не обращай внимания).
Ну и выбираешь свой swf патченный.
Всё, теперь чисть кэш в лисе и обновляй страницу - должен будет вместо оригинального swf подхватиться твой локальный.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


| Сообщение посчитали полезным: Isaev


Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 07 марта 2015 02:19 · Поправил: Isaev
· Личное сообщение · #31

Всё останавливается при начале загрузки флешки (уже по идее после "подмены"), слева в столбце она помечается красным крестом и
Charles пишет в Notes "You may need to configure your browser to trust the Charles CA SSL Certificate."
Но запроса на сертификат нет и как ему это разрешить?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh



<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
 eXeL@B —› Основной форум —› Flash (swf). Декомпиляция, взлом
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати