前因
前几天在分析某款软件时,遇到了使用开源混淆器ConfuserEx的dll(动态链接库),当时使用dnspy加载dll文件时部分方法反编译不了,部分变量为unicode编码,无法进行反编译。
后来经过多个工具配合使用成功的进行了反混淆,故在此记录下对ConfuserEx反混淆的过程。
过程
直接使用dnspy加载
直接使用dnspy进行反编译可以看到变量为unicode编码、大部分方法无法进行反编译。
没有任何的可读性,且无法追踪具体方法实现代码。
查壳
先使用查壳工具ExeinfoPe进行检查下是什么壳或混淆,这里可以看到提示了使用ConfuserEx混淆。
可以看到使用了开源.net 混淆器ConfuserEx ,这里我参考了大佬的一篇文章https://www.suajin.com/detail/891 ,里面用到的
unConfuserEx工具如下:1264812240972943360.zip
反混淆处理
解包
先使用UnConfuserEx进行“解包”操作
这时反混淆后的dll仍为不可读的,虽然能成功反编译,但还是有大量的乱码等方法名。
Remove Junk Methods
使用Fixer工具来删除垃圾方法,这一步直接勾选Remove Junk Methods就好了
Decrypt strin
使用ConfuseExStringDecryptor工具来解密字符串(dnspy上看到的那一大坨unicode等编码的字符串)
deobfuscate
使用ConfuserEX Switch Killer工具进行反混淆操作
rename symbols
上述生成的文件经过de4dot工具进行更改符号表等操作,使之更有可读性
成果
把反混淆处理后的dll文件拖入dnspy工具中查看,可以看到已经能成功的还原出来具有高度可读性的代码了