Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
astaroth-deobfuscator — IDA Python 脚本,用于去混淆 Astaroth/Guildma 注入器 DLL | Kitploit
工具/GitHubGitHub/dodo-sec/astaroth-deobfuscator
静态分析逆向工程恶意软件分析二进制分析
GitHubdodo-sec/astaroth-deobfuscator

astaroth-deobfuscator

IDA Python 脚本,用于去混淆 Astaroth/Guildma 注入器 DLL

查看仓库
813年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

astaroth-deobfuscator

用于反混淆 Astaroth/Guildma 注入器 DLL 的 IDA Python 脚本

在尝试分析近期 Astaroth/Guildma 攻击活动中使用的注入器 DLL 时(感谢 SANS ISC 的这篇日记),我遇到了一个极其烦人的混淆手段。

有一个函数(我在下图中将其命名为 time_waster_3000)在整个 DLL 中被调用了 1,000 多次(!!!)。该函数将六个硬编码字符串作为参数,外加一个随机的 word。就我目前所知,这个函数本身就是一个毫无实际用途的算术无底洞(除了浪费逆向工程师的时间)。以下是在这些烦人的调用存在时 DLLEntry 的样子:

反混淆前的 DLL 入口

这个 IDA Python 脚本的目的是隐藏所有涉及调用这个垃圾函数及其参数的代码块。以下是运行脚本后 DLLEntry 的样子:

反混淆后的 DLL 入口

重要注意事项

  • 该脚本通过查找对填充函数的调用来工作,在脚本中以 call sub_CHANGEME 表示。因此,你需要将其重命名为你所处理样本上找到的函数名。例如,将 idc.print_operand(x, 0) == 'sub_CHANGEME' 改为 idc.print_operand(x, 0) == 'sub_431000'。

  • 我选择遍历 call sub_CHANGEME 指令,而不是遍历参数压栈指令。原因很简单:硬编码字符串在二进制文件中多处存在;因此,当我尝试通过涉及这些字符串偏移量的 push 指令进行搜索时,脚本无法找到这些垃圾数据的所有实例。

  • 该脚本之前的工作方式是将每次参数传递和调用填充函数作为一个折叠块隐藏起来。由于该函数被连续多次调用,这导致反汇编视图中出现巨大的空白区域。我已经对其进行了更新,将连续的填充实例隐藏在一个单一的折叠块中,这确实大大提高了可读性。

下载工具