我正在为一个丢失了其VB.Net WinForms应用程序源代码的客户端工作.他们拥有的组件根本没有混淆.我试图恢复尽可能多的源代码作为C#源,并尝试了几种反编译程序集的工具,包括Reflector,ILSpy和JustDecompile(所有最新版本),但它们都产生了大量错误的代码他们.由于生成的代码中存在大量错误,我将询问具体的错误(在不同的问题中),希望得到更直接的答案,并以此方式尝试解释为什么所有工具都难以反编译这个集会.
这个问题涉及这样一个事实,即所有这些工具生成的代码总是有大量无效的成员变量(字段),如下所示:
private short $STATIC$Report_Print$20211C1280B1$nHeight;
private ArrayList $STATIC$Report_Print$20211C1280B1$oColumnLefts;
private StaticLocalInitFlag $STATIC$Report_Print$20211C1280B1$oColumnLefts$Init;
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么生成的代码有这些无效的成员变量以及我如何解决这些变量?
我正在构建一个库,该库生成一个用户代理字符串,该字符串报告一些漂亮的数据,如操作系统版本和当前安装的.NET Framework版本.我很好奇:
是否有可能以编程方式检测哪种语言正在调用我的库?或者,一旦编译成CIL,源语言是否完全不透明?