是否有可能獲得可執行文件的完整反彙編(可用作彙編程序的輸入)?獲取可執行二進制文件的完整反彙編
當我使用otool -tV a.out
時,我只能看到文本部分。其他部分如數據不可見。
當我使用gdb
時,反彙編命令需要開始和結束地址。但是我不知道如何找出二進制文件的開始和結束地址(比如a.out)。
我試圖反彙編一個可執行文件,修補程序與彙編代碼,然後重新組裝它。 這可能嗎?
如果能找出二進制文件中所有部分的名字,它也會有所幫助。
是否有可能獲得可執行文件的完整反彙編(可用作彙編程序的輸入)?獲取可執行二進制文件的完整反彙編
當我使用otool -tV a.out
時,我只能看到文本部分。其他部分如數據不可見。
當我使用gdb
時,反彙編命令需要開始和結束地址。但是我不知道如何找出二進制文件的開始和結束地址(比如a.out)。
我試圖反彙編一個可執行文件,修補程序與彙編代碼,然後重新組裝它。 這可能嗎?
如果能找出二進制文件中所有部分的名字,它也會有所幫助。
報價:
Hopper是爲Mac逆向工程工具,可以讓你反彙編,反編譯和調試32/64位Intel Mac上的可執行文件。
它花費59美元,但你可以下載一個演示來檢查它是否首先完成工作。
編輯
看來你可以用otool
實現這一目標還有,根據the manual。
.B -d 顯示(_ \^_ DATA,_ \^_ data)部分的內容。
也看看this short blog post描述提到使用otool
,以及如何使用objdump
由@Sjlver提及。
在Mac上,您可以安裝(可能通過自制軟件)binutils,其中包括gobjdump。您可以在安裝後反彙編任何二進制程序。它是開放的和免費的。
brew安裝binutils爲我工作 – brthornbury
這應該是一個評論,因爲它沒有試圖回答這個問題。 – jww
嘗試使用此命令,我記得使用它是回:
otool -tvV a.out
這個命令在過去幫助過我以及'otool -IvV a.out'(顯示間接符號表)。此外還有用於_data_部分信息的_-d_開關。更多信息:'man otool' – andwagon
'otool -d'肯定顯示的數據部分。但那不是全部。如果可執行文件調用類似於:'printf(「ABCD」)'的方法,則無法在任何位置找到程序集中字符串「ABCD」的聲明。 – mynk
你嘗試過Hopper嗎? – jurgemaister
我正在尋找一個免費的解決方案。所以沒有給它一個鏡頭。 – mynk