有誰知道反編譯器爲ARMV4i可執行文件和DLL?ARMV4i(Windows Mobile 6)原生代碼反彙編器
我有一個插件DLL我與一個非常罕見的data abort
(時間< 5%),寫作,我已經縮小到一個特定的功能(通過DUMPBIN並通過data abort
輸出地址) 。但是,這是一個相當大的功能,我想稍微縮小它的範圍。我知道這是發生在memset()
調用中,但該特定函數約有35個函數,所以我希望通過查看反彙編,我可以找出問題的實際位置。
有誰知道反編譯器爲ARMV4i可執行文件和DLL?ARMV4i(Windows Mobile 6)原生代碼反彙編器
我有一個插件DLL我與一個非常罕見的data abort
(時間< 5%),寫作,我已經縮小到一個特定的功能(通過DUMPBIN並通過data abort
輸出地址) 。但是,這是一個相當大的功能,我想稍微縮小它的範圍。我知道這是發生在memset()
調用中,但該特定函數約有35個函數,所以我希望通過查看反彙編,我可以找出問題的實際位置。
IDA Pro肯定會做ARM反彙編。他們(Datarescue)在當地時間晚上11點左右給我安排了許可證,所以我喜歡推薦他們......
我從http://www.datarescue.com/idabase/看到公司有一些重新安排,但我猜這仍然是一個很好的產品。
這裏的鏈接到新的出版商:http://www.hex-rays.com/idapro/
幾年前,我發現了一個我在做一些嵌入式工作時使用的ARM反彙編程序。不過,我不記得它的名字 - 儘管我認爲它是仿真器之類的大型軟件包的一部分。
在你的情況,你可以問你的編譯器生成編譯代碼的彙編清單嗎?這可能有助於給你一些範圍。
如果失敗了,你可以將你的函數分解成一個或多個新函數,如果你能得到的只是堆棧跟蹤。然後再將新功能分解成一個或多個。這是久經考驗的「分而治之」的方法。如果你在一個函數中調用memset()35次,從設計的角度來看,這也是一個好主意!
更新:我發現我使用的軟件包:ARMphetamine。它適用於我正在開發的ARM9代碼,但看起來它在一段時間內還沒有更新。
我相信IDA Pro會做你想做的。它在O'Reilly Security Warrior書中被提及,並且我在Windows Mobile開發者論壇上看到了它的推薦。
另外有用的將是一個編譯器生成的組件列表;它可能更容易與來源相關聯。通常'數據中止'打印堆棧和幀指針;鏈接寄存器`lr`肯定會有幫助。我希望Windows Mobile提供這些信息。 – 2013-03-01 04:56:04