如何在Visual Studio项目中编译/链接IL代码

3
我有一个独特的问题,基本上,我在开发一个.Net混淆器。混淆程序集会出现错误的IL代码导致崩溃。我需要调试这个混淆后的IL代码并找出它崩溃的原因。
我的当前方法是:
1. 使用ildasm反汇编程序集 2. 将IL代码导入Visual Studio并尝试编译、调试和重现。
我的问题是,Visual Studio似乎不喜欢.il文件。我该如何让它正确处理IL文件?
另外,请不要建议this method。我已经尝试过了,重新编译后错误神奇地消失了。

有些东西可能在使用反射,不喜欢名称被改变...(但也许你已经知道了)。混淆器是否给您提供了调试数据库或符号表?如果是这样,您可能只需正常附加调试器并逐步执行即可。也许我说的不对。 - lc.
你已经在混淆的程序集上尝试过PEVerify了吗? - svick
@lc。虽然有一些未经管理的代码,但请勿反射。 - Earlz
@svick 是的。一切都已验证。 - Earlz
数据绑定中指定对象名称的字符串怎么样?也许混淆器没有捕捉到并更改它们? - lc.
@lc。我们的混淆器会检测到它们并将它们排除在外,但这个特定的程序集没有类似的东西。它也不是重命名,只是模糊了控制流程。(将if扩展为冗余开关并重新排序和其他一些事情) - Earlz
1个回答

1

当我遇到类似的问题时,我使用了带有Deblector插件的.NET Reflector(大约是3-4年前)。现在Reflector不是免费的,但我认为您可以使用试用版进行简单的调试。看起来.NET Reflector Pro包含与旧版本Reflector + Deblector相同的功能,因此您可以调试纯IL代码。顺便说一句,您仍然可以使用Deblector,因为新版本支持Reflector 7 - http://deblector.codeplex.com/releases/view/93326


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接