flyskyosg 发表于 2021-4-30 10:14

脱壳Dotfuscator不成功

我从网上下载了一个NET程序,用ScanId_1_5看了下,是Dotfuscator压缩混淆的,接下来用dedot进行脱壳,试了默认方式直接脱壳,以及采用-d df方式指定壳,发现脱完之后还是不可读,请大神帮忙分析一下问题出在哪里

链接: https://pan.baidu.com/s/1JpgIyyjha-8lgMyCnFtj2Q 提取码: apvq 复制这段内容后打开百度网盘手机App,操作更方便哦



零下八度 发表于 2021-4-30 10:14

你的基础有些差,这样说吧,完全原生的.net的exe(不加壳不混淆的),在PE头里面有个地方存着一个Method表,这个表里面有整个exe所有方法的信息(包括名字),你以前见过的反编译之后能恢复名字,是基于这个表的,

如果这个表的信息被混淆的壳单纯的破坏了,又没有存在别的地方,那就不能恢复了,因为这时候,谁也不知道原来是什么名字,想恢复就更加不可能了。

【明白了嘛,之所以能恢复,是因为被保存起来了,如果保存的地方被破坏了,那就啥也没了。。。】

有兴趣看看 .net 的PE结构,还是很有意思的。



我与你的时光 发表于 2021-4-30 11:41

来过了 看看 回复~~~~~~~~·

零下八度 发表于 2021-4-30 12:05

本帖最后由 零下八度 于 2021-4-30 12:10 编辑

看起来代码已经蛮清晰了,你要分清哪些东西可以还原,哪些不能,比如非加密类的重命名是不可能还原的,这个可能没法还原到你要的程度...

flyskyosg 发表于 2021-4-30 13:51

零下八度 发表于 2021-4-30 12:05
看起来代码已经蛮清晰了,你要分清哪些东西可以还原,哪些不能,比如非加密类的重命名是不可能还原的,这个 ...

是的,我是想把里面的代码类名,方法名都恢复一下,现在直接脱壳反编译可读性有点差

零下八度 发表于 2021-4-30 23:44

看了下附件exe的命名规则,这个壳应该不可能的,

如上面说的,非加密式的重命名(含类名、方法名,命名空间等),直接修改了Metadata,就相当于它们本来就是这个名字,就无所谓还原了
页: [1]
查看完整版本: 脱壳Dotfuscator不成功