Изучение SWF

Discussion in 'Реверсинг' started by severum, 24 Jul 2013.

  1. severum

    severum New Member

    Joined:
    5 May 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Расскажите можно ли расковырять обфусцированный SWF.
    Есть рабочий опыт восстановления пары функций - плагинов к 3д редактору (с ассемблера) через IDA на cpp целью дополнить функциональность.
    Но Flash не владею.
    Хочу поковырять swf клинта к игрушке. Могу посниффить, то что игрушка отправляет (частично читаемо, частично могут быть какие-то контрольные данные).
    Может можно вклинится в какие-то функции перед самой отправкой пакетов.
    Может следить за какими-то данными. Координаты, здоровье и т.д.
    swftools падает при попытке выполнить SWFExtract.
    Существует что-то типа IDA для swf? Я не хочу красиво декомпилировать, чтобы потом снова собрать. Хочу следить за процессом исполнения.
     
  2. Euler

    Euler New Member

    Joined:
    9 Sep 2012
    Messages:
    30
    Likes Received:
    0
    Reputations:
    0
    Есть отладчики типа http://demonsterdebugger.com/ .
    Есть встроенные средства отладки через файл mm.сfg, например можно логгировать все вызовы функций.
    Ну и декомпиляторы конечно.
    Не думаю, что будет сложно восстановить протокол.
     
  3. severum

    severum New Member

    Joined:
    5 May 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Спасибо, попробовал немного.

    mm.сfg - При этом после вызовов global/trace() в лог начинают попадать пересылаемые по сети данные. Видимо не отключен какой-то лог.
    Можно ли посмотреть аргументы функций?
    AS3Verbose - вроде не работает.
    TraceOutputFileName - почему-то тоже не сработал, пользуюсь логом там где он и был \AppData\Roaming\Macromedia\Flash Player\Logs\

    demonsterdebugger - нашел какую-то из версий MonsterConnector.swf
    Получаю список объектов и даже нашел где спрайты. Можно поменять их размеры, но это мало помогает. Там координаты на экране. Где лежат реальные данные объектов пока не нашел.
    Плюс там еще кучи (объектов или свойств не знаю) типа parent и т.п. которые указывают на другие ветки этого же дерева. В результате разворачивать все это можно бесконечно.
    И как я понял нельзя понять какая функция в какой момент с какими параметрами вызывалась?

    И это все ручные способы.
    Было бы конечно хорошо получить что-то типа MonsterConnector.swf и с оберткой из питона. Чтобы вешаться на вызовы функция и получать их аргументы. И иметь возможность вызвать что-то самому.
    Может опять же поможет http://www.swftools.org/
    SWFCombine - A multi-function tool for inserting SWFs into Wrapper SWFs, contatenating SWFs, stacking SWFs or for basic parameter manipulation (e.g. changing size).

    Посоветуйте еще что-нибудь )
     
  4. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    289
    Likes Received:
    44
    Reputations:
    6
    JPEXS Free Flash Decompiler
    С помощью RABCDAsm можно удалять самостоятельно(написать на том же python простенький парсер) мусорные avm2 инструкции.
     
  5. Euler

    Euler New Member

    Joined:
    9 Sep 2012
    Messages:
    30
    Likes Received:
    0
    Reputations:
    0
    Увы, аргументы посмотреть нельзя. AS3Verbose больше не работает, в старых версиях работал. TraceOutputFileName с 9-ой версии игнорируется.

    Я особо не вникал в отладку flash, мне пока всегда хватало лога трафика, AS3 Sorcerer'а и AS3Trace из mm.cfg. Внедряться во флешку можно, но перехватывать функции нельзя- вот пример.