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