在特定环境中反编译注入的 SWF

逆向工程 反调试 瑞士法郎
2021-07-01 04:07:27

我正在尝试反转加载到 AS3 应用程序并由该应用程序执行的 swf 文件。问题是注入的文件被混淆了,没有反编译器可以向我展示清晰的代码。此外,在使用完成其工作的SWFWire Debugger 时,我发现加载的 swf 正在检查执行它的环境。因此,当由 SWFWire 调试器加载时,它会将我重定向到一个存根,使 swf 本身崩溃。

因此,我尝试通过创建 AS 应用程序并通过Loader加载它来重新创建执行 swf 的环境它运行良好,注入的文件没有崩溃,这让我认为没有调用存根函数,但我仍然不确定这个注入的文件对应用程序执行的操作是什么,所以我想知道如何调试注入的 swf 就像在 SWFWire 调试器中一样,但保留了我重新创建的所有 AS 环境,以便调试不会再次将我引向存根。

我不确定我的解释是否非常清楚,如果您想了解更多详细信息或只是为了澄清情况,请告诉我。

注意:该应用程序使用的是 Action Script 3

编辑:还发现注入的 swf 在检测到它的字节码已被修改时使其自身崩溃。问题在于 SWFWire Debugger 修改了试图调试的字节码以在代码周围添加跟踪。因此,当注入的 swf 的字节码被修改时,它会在调试时导致自身崩溃。

1个回答

这不能回答您的问题,但是我会尝试提供解决方法的想法(由于我没有足够的声望点,因此无法将它们留在评论中):

  • 您是否尝试过调试加载了要反转的文件的外部 swf 文件?这样它就不会自己崩溃,并且您仍然可以使用调试会话。
  • 既然您声明“您仍然不确定注入的文件对应用程序执行了什么操作”,为什么不反编译“加载程序”swf,在代码中找到完成注入的位置,并根据提供给新 swf 的句柄,查找从父级到注入的所有引用/函数调用,并从那里追溯(在静态​​代码分析中)以查找何时使用新文件。这可能会给你非常有用的见解。
  • 另外,让我为您提供一些我有经验的 swf 反编译器,并且在绝大多数时间设法执行正确的反编译(通常如果一个失败另一个可能会成功):