題:
加密的Mach-o二進製文件無法使用GDB分解/跟踪
user1815381
2013-07-26 23:36:15 UTC
view on stackexchange narkive permalink

我正在嘗試分析加密的Mach-O二進製文件(非iPhone版本),並且觀察到以下奇怪行為:

  • 當我將此二進製文件加載到GDB中,並嘗試在入口點指示的地址處反彙編代碼,GDB返回垃圾,而不是任何有意義的asm。
  • 與radare2一樣發生

我試圖在GDB中執行此應用程序-根本沒有任何效果。令人驚訝的是,從終端執行該應用程序效果很好。

我擔心我的目標已被GDB / radare2無法應付的某種方式打包/壓縮/混淆了。令人驚訝的是,Hopper處理得很好。

不幸的是,我沒有完整版的Hopper。此外,我希望能夠在GDB中調試此應用。有什麼辦法嗎?

還有其他人遇到過這種情況嗎?如果是這樣,我應該如何進行?

什麼是二進制?如何獲得“入口點指示的地址”以及如何反彙編代碼?向我們展示一些屏幕截圖或文本轉儲。細節越多越好。
好的,我要分析的二進製文件是Mac OS系統軟件的一部分。它似乎是所謂的“ Apple保護”二進製文件之一。我最近發現了對此保護的一些描述:http://osxbook.com/book/bonus/chapter7/binaryprotection/甚至是一個聲稱能夠在此處刪除這種加密的命令行工具:http:// tumblr .alanquatermain.me / post / 97884723 / apple-binary-protection-tool我剛剛嘗試了一下,但是會產生更多的垃圾...
您正在使用哪個端口? [MacPort](http://www.macports.org/)還是其他端口?
雷達2是否使用`libbfd`?我以為是用他自己的庫來管理二進制格式,不是嗎?
Radare2使用自己的Mach-O解析器,該解析器似乎不支持加密的二進製文件。不幸的是,它包含一些錯誤:反彙編清單移位了四個字節。我即將提交適當的錯誤報告。
二 答案:
perror
2013-07-27 04:36:04 UTC
view on stackexchange narkive permalink

實際上,GDB依靠GNU binutils打開和反彙編二進製文件。因此,二進制格式的管理通過 libbfd.so 完成。

通常,MacOS X binutils隨Mach-O管理一起提供,但可能是您正在使用越野車包。或者,您也可以嘗試在MacOS X以外的其他系統上打開Mach-O,而在其他系統上,很少將Mach-O支持添加到默認軟件包中。

獲得Mach-O支持(以及GNU binutils中所有可能的格式和體系結構)的最佳方法是使用選項-enable-targets = all 編譯軟件包。

我個人使用的是Debian不穩定版。而且我習慣於重新編譯從源頭獲取的整個軟件包。以下是要遵循的步驟:

  1. 將以下行添加到您的 /etc/apt/sources.list

      deb-src ftp://ftp.debian.org/debian/不穩定的主要貢獻 
  2. 更新軟件包列表:

      su -c'apt-get更新' 
  3. 獲取編譯 binutils 軟件包所需的軟件包:

      su -c'apt-get build-dep binutils' 
  4. 獲取 binutils code的來源>軟件包:

      apt-get源binutils  
  5. 進入 binutils 源目錄:

      cd binutils-xxx /  
  6. binutils-xxx / debian / rules 中重寫這樣的一行(刪除所有其他目標):

      multiarch_targets = all  
  7. 構建軟件包(這可能需要花費相當多的時間)一段時間):

      dpkg-buildpackage -rfakeroot -us -uc  
  8. 安裝 binutils-multi arch 包:

      dpkg -i binutils-multiarch_x.x.x_amd64.deb  
  9. ol>
user1815381
2013-07-27 04:55:17 UTC
view on stackexchange narkive permalink

非常感謝您的回答!

我做了一些進一步的研究,發現了以下內容:

  • 因為我的目標是Macintosh系統的一部分,所以所謂的“ Apple二進制保護”可防止直接拆卸/調試。

otool -l [target]”揭示了以下信息:

  Load命令0 cmd LC_SEGMENT cmdsize 532 segname __TEXT vmaddr 0xb8000000 vmsize 0x001df000 fileoff 0文件大小1961984 maxprot 0x00000007 initprot 0x00000005 nsects 7標誌0x8 < --------“警告:已加密!!”  
p>因此,在嘗試使用GDB之前,我需要找到一種解密二進製文件的方法,我已經讀到可以使用GDB,dd和任何合適的十六進制編輯器手動進行操作,但是我找不到任何逐步說明

該工具聲稱可以解密: http://tumblr.alanquatermain.me/post/97884723/apple-binary-protection-tool

但這對我不起作用。

還有其他人嗎?這裡曾經處理過這樣的二進製文件嗎?在此先感謝!

這裡有一些關於這種保護模式的更多描述: http://osxbook.com/book/bonus/chapter7/binaryprotection/

http://reverse.put.as/2009/06/30/how-to-dump-an-apple-protected-binary/

更新:我終於設法使用此工具解密我的目標: http://www.insanelymac.com/forum/topic/285375-apb-decrypt-for-mountain-lion-lion- and-snow-leopard-apple-protected-binary-decryptor /

GDB使用“ disas 0xb800e5c4”顯示正確的反彙編,其中0xb800e5c4表示入口點。雖然從終端啟動解密後的二進製文件即可,但是在GDB內單步執行並仍然無法運行...

不要發表評論作為答案。如有必要,請編輯問題以添加詳細信息。
我同意伊戈爾的觀點,而且,這是另一個問題。請填寫另一個問題,並從頭開始。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...