拿到一个软件,使用dnspy查看,发现反汇编后关键部分的函数名和代码有很多乱码:
这样的函数非常多,要想进一步调试和逆向,就只能在dnspy中看反汇编代码了,而无法看到c#代码,当时的整个逆向过程只剩下了委屈和沮丧,而开始本来以为,逆向c#是一件很轻松愉快的事。
无奈之下,只能求助于度娘了。百度一下得知,导致此种情况的原因:c#程序有可能被加壳了。同时从百度得知,c#下有个名为de4dot的脱壳神器。
抱着试一下的态度,下载de4dot,并对程序执行如下命令脱壳:
de4dot -r "F:\\searchV\\app" -ru "D:\\work\\tools\\de4dot20201104\\app"
而后,将脱壳出的程序复制回源程序目录并替换掉原来加壳的文件,并使用dnspy再次断点并调试,惊奇的事情发生了,函数名和函数代码已经可以正确的显示了:
de4dot的详细介绍可参考以下链接:https://www.cnblogs.com/zhaotianff/p/17229625.html