Dotfuscator,同时字符串被混淆了,见下图。
查壳.png (36.09 KB, 下载次数: 0)
下载附件
2022-3-8 16:56 上传
不脱直接dnspy.png (310.3 KB, 下载次数: 0)
下载附件
2022-3-8 16:56 上传
字符串还原
字符串还原应在de4dot之前,貌似de4dot也带还原字符串功能,这点未解,正常拖入字符串还原成了乱码,所以产生了现在手动还原的研究。
直接不处理字符串使用de4dot脱壳(字符串乱码):
脱壳后.png (402.44 KB, 下载次数: 0)
下载附件
2022-3-8 16:56 上传
Dotfuscator字符串还原能在dnspy里查到调用函数和传入参数(每个地方可能不一样,传入int不同,或调用的函数不同),如图。
字符串解密方法.png (160.63 KB, 下载次数: 0)
下载附件
2022-3-8 16:56 上传
所以我们要做的就是想办法根据函数头上定义的int变量(类似于字符串还原的偏移吧,且他有多个还原函数 通常为a b命名, 偏移不一致),拿出来还原函数,跟入还原函数:
字符串解密函数体.png (19.66 KB, 下载次数: 0)
下载附件
2022-3-8 16:57 上传
放入C# 测试(这里要注意Intptr类型无法互相使用加法运算,要先转int。 所以直接抄过来会报错。 有错则修复即可)。 如图
字符串解密复现.png (41.53 KB, 下载次数: 0)
下载附件
2022-3-8 16:57 上传
使用de4dot解密字符串
这里既然拿到字符串的加密函数,那么我们取出地址:0600002F 注意不是0x0600002F!
然后使用命令:
[Asm] 纯文本查看 复制代码de4dot.exe E:\xxxx\xxxxx --strtyp delegate --strtok 0600002F
即可得出解密且脱壳后的程序
解密成功后.png (164.61 KB, 下载次数: 0)
下载附件
字符串还原后
2022-3-8 16:56 上传
完结
完成,待下一步尝试!
希望有更简洁或者文章里有错误的地方大家可以交流,感谢。
软件名称等已打码。