本帖最后由 wwh1004 于 2022-3-16 14:42 编辑
解释下为什么又发个帖子:老的帖子因为太久远被锁住了,新版本加入了很多新功能,没法更新到老帖子,所以我开了个新的。
比如两个很厉害的新功能,绕过所有反Dump保护直接Dump程序集。这个功能我还写个文章来说明原理:https://www.52pojie.cn/thread-1604458-1-1.html
还有加载器Hook,可以在.NET程序启动时安装Hook,自动Dump所有用Assembly.Load(byte[])内存加载的程序集到磁盘
项目是开源的,GitHub地址:https://github.com/wwh1004/ExtremeDumper
ExtremeDumper
.NET程序集Dump工具
特性
- 列举所有进程并且高亮.NET进程
- 列举进程中所有模块并且高亮.NET模块
- 通过遍历内存页以Dump进程中全部有效的.NET程序集
- 在模块视图中Dump指定的模块
- 注入.NET程序集到任意进程
- 增强的反反Dump模式
- .NET程序集加载器Hook
- 反标题关键词检测
- 单个可执行文件
介绍
查看进程
默认页面是进程视图。你可以在此选择进程,右键打开菜单,Dump此进程中所有.NET模块或者查看进程中所有模块。你也可以点击"Inject Dll"以注入.NET程序集到任意进程。所有存在clr模块的进程会被高亮为绿色。
查看模块
这个页面会显示选中进程中的所有模块,同时你可以通过点击"Only .NET Modules"选项仅查看.NET模块。所有.NET模块会被高亮为绿色。
查看导出函数
这个页面显示了非托管模块的导出函数。
注入.NET程序集
当前注入器仅支持任意架构下的.NET Framework的程序集。同时你可以在注入器中给Main方法传递字符串参数。计划未来支持.NET Core。
反反Dump
开启前:
开启后:
用法
模块视图中打开右键菜单然后点击"Enable AntiAntiDump"。启用之后你可以很方便地直接Dump任何带有反Dump保护的.NET程序集。
原理
ExtremeDumper会注入核心Dll到目标进程并且从CLR内部对象读取元数据信息。不同于V2版本中的反反Dump,当前版本拥有几乎完美的兼容性。
.NET程序集加载器Hook
用法
在主界面点击"Open Loader Hook"按钮,之后会弹出"Loader Hook"窗口。选择一个要Dump的程序,然后点击"Run With Hook"。
高级用法
把"ExtremeDumper.LoaderHook.dll"重命名为"version.dll",然后把它放在目标程序的根目录下。它将以Dll劫持模式加载。
原理
加载器Hook会在程序启动时挂钩"clr!AssemblyNative::LoadImage"函数。当.NET程序集被"Assembly.Load(byte[])"这些API加载,加载器Hook会将它的原始字节数组保存到磁盘中。
下载
GitHub: Latest release
AppVeyor: Latest build
|