簡體   English   中英

如何檢查linux二進制文件是否具有新添加的代碼

[英]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:

DEV1DEV2DEV3是一個enum聲明的枚舉。

如何使用nm命令或其他任何命令驗證二進制文件中是否確實存在所添加的代碼?

還有其他方法嗎?

[聽起來可能很愚蠢,但是我仔細地做以確保在編譯時沒有出現任何錯誤]

你不能。
當然,您可以分解文件並比較asm代碼,但是編譯器對它進行了很大的優化,以至於您幾乎無法通過這種方法獲得任何有意義的結果。

或者,您可以使用cmp命令比較文件,該命令適用於二進制文件,可能比diff更合適。

但是,二進制差異並不是100%保證實際上已更改任何代碼。 編譯器通常會添加調試信息並編譯時間戳,因此同一代碼連續編譯兩次將導致兩個二進制文件具有不同的字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM