小编Zay*_*Jay的帖子

从相同的源代码构建的两个.NET可执行文件的反汇编有什么区别?

建立:

  • 使用相同的源代码在两台不同的机器上构建.NET 4可执行文件(控制台应用程序).
  • Microsoft Visual Studio 2010 SP1 .NET 4设置在两台计算机上是相同的
  • ildasm projectName.exe /out:test.txt 在两台机器的.exe上执行.
  • ildasm输出不同于预期的差异(mvid,privateimplementationdetails).

问题:
我花了一些时间创建一个应用程序来获取.NET可执行文件的CRC,并成功忽略了所有不同的构建时数据.

我正在删除// =============== CLASS MEMBERS DECLARATION ===================ildasm.exe输出行上方的所有数据.这忽略了MVID.我正在构建没有调试信息的.exe.最后,我解析输出<PrivateImplementationDetails>{GUID}并忽略它们.

我然后CRC剩下的文本文件.

当同一个项目在同一台计算机上构建时,CRC是相同的,但是当相同的项目在具有相同源代码和MSVS 2010设置的不同计算机上构建时,它们会有所不同.

有没有人知道存储在.NET可执行文件程序集中的任何机器相关信息?

以下是差异的示例.似乎每个对象和类都分配了不同的ID,但我发现奇怪的是,当它们的代码构建在不同的机器上时,这只会有所不同......

         `class DSC_PI.MainWindow/'<>c__DisplayClass21' V_2,`
         `class DSC_PI.MainWindow/'<>c__DisplayClass10' V_2,`  

         `class DSC_PI.MainWindow/'<>c__DisplayClass1e' V_3,`
         `class DSC_PI.MainWindow/'<>c__DisplayClassd' V_3,`  
Run Code Online (Sandbox Code Playgroud)

任何见解都会非常感激.

.net visual-studio-2010-sp1

13
推荐指数
1
解决办法
381
查看次数

比较两个.exe的差异(两者都在同一台机器上创建)

我试图测试Visual Studio从相同的代码生成可预测/可重复的可执行文件.

为此,我正在创建一个小程序(一个.cpp文件)并构建.exe(A),进行一些更改并制作另一个.exe(B),然后取消更改并制作另一个.exe( C).

我的理论是A和C的信息是相同的,并确认MSVS从相同的代码生成可预测/可重复的.exe.

几个问题:

(我已经在.txt中保存了命令的结果)

我已经使用dumpbin/rawdata来删除时间/日期戳数据并保存文件每个部分的原始内容(不完全确定"原始"意味着什么),但与windiff比较时留下2行差异.

运行dumpbin/headers显示调试目录下的.rdata部分(原始数据#2)的差异; 差异在时间(预期)和格式:X,{Y},"差异在这里",Z列.

我搜索论坛和msdn几个小时,无法找到使用dumpbin的解决方案.类似的论坛帖子以耸耸肩膀结束.

任何人都可以帮我一把吗?我会尽力按要求添加更多特异性.

谢谢你,ZayJay

已查看参考文献:
http://support.microsoft.com/kb/177429
http://support.microsoft.com/kb/164151
http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
http://www.ms-news.net/f3614/how-can-i-compare-2-executables-1980031.html
+其他...

此外,在我的.cpp和一个新的.cpp之间进行比较,主要只返回0,在同一区域产生差异.我希望dumpbin/headers结果的.text(原始数据#1)部分存在差异......任何阅读或直接答案的内容都会很棒!谢谢!

c++ executable compare

5
推荐指数
1
解决办法
2775
查看次数

标签 统计

.net ×1

c++ ×1

compare ×1

executable ×1

visual-studio-2010-sp1 ×1