2008-08-22 42 views
2

有誰知道反編譯器爲ARMV4i可執行文件和DLL?ARMV4i(Windows Mobile 6)原生代碼反彙編器

我有一個插件DLL我與一個非常罕見的data abort(時間< 5%),寫作,我已經縮小到一個特定的功能(通過DUMPBIN並通過data abort輸出地址) 。但是,這是一個相當大的功能,我想稍微縮小它的範圍。我知道這是發生在memset()調用中,但該特定函數約有35個函數,所以我希望通過查看反彙編,我可以找出問題的實際位置。

+0

另外有用的將是一個編譯器生成的組件列表;它可能更容易與來源相關聯。通常'數據中止'打印堆棧和幀指針;鏈接寄存器`lr`肯定會有幫助。我希望Windows Mobile提供這些信息。 – 2013-03-01 04:56:04

回答

2

IDA Pro肯定會做ARM反彙編。他們(Datarescue)在當地時間晚上11點左右給我安排了許可證,所以我喜歡推薦他們......

我從http://www.datarescue.com/idabase/看到公司有一些重新安排,但我猜這仍然是一個很好的產品。

這裏的鏈接到新的出版商:http://www.hex-rays.com/idapro/

0

幾年前,我發現了一個我在做一些嵌入式工作時使用的ARM反彙編程序。不過,我不記得它的名字 - 儘管我認爲它是仿真器之類的大型軟件包的一部分。

在你的情況,你可以問你的編譯器生成編譯代碼的彙編清單嗎?這可能有助於給你一些範圍。

如果失敗了,你可以將你的函數分解成一個或多個新函數,如果你能得到的只是堆棧跟蹤。然後再將新功能分解成一個或多個。這是久經考驗的「分而治之」的方法。如果你在一個函數中調用memset()35次,從設計的角度來看,這也是一個好主意!

更新:我發現我使用的軟件包:ARMphetamine。它適用於我正在開發的ARM9代碼,但看起來它在一段時間內還沒有更新。

4

我相信IDA Pro會做你想做的。它在O'Reilly Security Warrior書中被提及,並且我在Windows Mobile開發者論壇上看到了它的推薦。

1

ChARMeD是Windows移動/掌上電腦/的Win CE(用於ARM CPU)的反彙編器和彙編

你也可以看看BDASM,一個共享的反彙編 - 更高版本有ARM插件。該網站似乎已關閉,但如果您搜索它,您會發現共享軟件分發。

簡單ARM反彙編器的源代碼DISARM也可用。

Binutils的(++編譯工具)objdump的可用於產生拆卸, 「objdump的-b二進制-m ARM7TDMI -D FILE_NAME」

- 亞當