我试图用ConfuserEx混淆一个库,但之后我的应用程序崩溃,MissingMethodException
堆栈跟踪指向第一次使用混淆的类和方法是被重命名的。我不知道在哪里找到它的调用或其他用法,所以不清楚我应该检查什么。我的猜测是在 JIT 过程中发生了异常。
只应用了重命名混淆,我有映射来反转它。
我查看了混淆模块和方法的重命名版本肯定存在。
在混淆模块上运行 PEVerify.exe 也会产生一些错误(下面仅提供一小段摘录):
[IL]: Error: [d:\1\Confused\my.dll : _YGbNngBKpRxvvy7NkSKSrcvDmJG_::_17w1GiROq6y1aWRw9wWSUGOde1C_][mdToken=0x60003cd] Method does not exist.
Method does not exist.
Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : _cdMM5QrQwL2ksRGa1UJRmJUkVTd_::.ctor][mdToken=0x60006c8][offset 0x00000002] Unable to resolve token.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tGtv2dtaIMIA6LoHXu7DwMxfvlS_][mdToken=0x6000732] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tk0zK3VXciZeRsH2nVWBZ6jNVdE_][mdToken=0x6000733] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tGtv2dtaIMIA6LoHXu7DwMxfvlS_][mdToken=0x6000732] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_tk0zK3VXciZeRsH2nVWBZ6jNVdE_][mdToken=0x6000733] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_PkJlSB6sykBdsQ8OXX3CBVEXudk_][mdToken=0x6000735] Method does not exist.
[IL]: Error: [d:\1\Confused\my.dll : ClassXyz::_AYy29oWv1vnvKJP5Q1lcxUcQZRd_][mdToken=0x6000757] Method does not exist.
我已准备好调试混淆过程以搜索出了什么问题……但我不知道要查找什么。我如何找出代码的哪一部分正在尝试使用旧方法名称?如何使用 PEVerify 的输出,例如 mdTokens 将如何帮助我?