[英]How to check if the linux binary file has newly added code or not
我有一个由多个使用g ++编译的*.cpp
文件组成的项目。 我更改了一个源文件以添加一些代码。 再次建立该项目。 只是检查我做了
diff -s origbinaryfile changedbinaryfile
它告诉我文件是相同的,这很奇怪,因为我添加了额外的代码,并希望看到生成的linux二进制文件之间的差异。
我在现有的switch case
代码中添加了一个额外的案例声明代码。例如,我之前有
switch(x) {
case DEV1:
...
case DEV2:
...
改一个是
switch(x) {
case DEV1:
...
case DEV2:
...
case DEV3:
DEV1
, DEV2
, DEV3
是一个enum声明的枚举。
如何使用nm
命令或其他任何命令验证二进制文件中是否确实存在所添加的代码?
还有其他方法吗?
[听起来可能很愚蠢,但是我仔细地做以确保在编译时没有出现任何错误]
你不能。
当然,您可以分解文件并比较asm代码,但是编译器对它进行了很大的优化,以至于您几乎无法通过这种方法获得任何有意义的结果。
或者,您可以使用cmp
命令比较文件,该命令适用于二进制文件,可能比diff
更合适。
但是,二进制差异并不是100%保证实际上已更改任何代码。 编译器通常会添加调试信息并编译时间戳,因此同一代码连续编译两次将导致两个二进制文件具有不同的字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.