ARMV4i (Windows Mobile 6) 本机代码反汇编程序
有谁知道ARMV4i可执行文件和DLL的反汇编程序?
我正在编写一个插件 DLL,其中包含一个非常罕见的数据中止
(<5% 的时间),我已将其范围缩小到特定函数(通过 dumpbin 和地址)由数据中止
输出)。 然而,这是一个相当大的函数,我想缩小它的范围。 我知道这是在 memset()
调用中发生的,但该特定函数大约有 35 个,所以我希望通过查看反汇编我可以找出问题实际上出在哪里。
Does anyone know of a disassembler for ARMV4i executables and DLLs?
I've got a plug-in DLL I'm writing with a very rare data abort
(<5% of the time) that I have narrowed down to a specific function (via dumpbin and the address output by the data abort
). However, it is a fairly large function and I would like to narrow it down a little. I know it's happening in a memset()
call, but that particular function has about 35 of them, so I was hoping that by looking at the disassembly I could figure out where about the problem actually is.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
几年前,我在做一些嵌入式工作时发现了一个 ARM 反汇编器。 然而,我不记得它的名字了——尽管我认为它是一个更大的包的一部分,比如模拟器之类的。
对于您的情况,您可以要求编译器生成已编译代码的汇编列表吗? 这可能会帮助您获得一些范围。
如果做不到这一点,如果您能获得的只是堆栈跟踪,则可以将函数分解为一个或多个新函数。 然后再次将新函数分解为一个或多个。 这就是行之有效的“分而治之”的方法。 如果您在一个函数中调用了 35 次 memset(),那么从设计的角度来看,这可能也是一个好主意!
更新:我找到了我使用的软件包:ARMphetamine。 它适用于我正在开发的 ARM9 代码,但看起来它已经有一段时间没有更新了。
A couple of years ago I found an ARM disassembler I used while doing some embedded work. However, I don't remember its name - though I think it was part of a larger package like an emulator or something.
In your case, could you ask your compiler to generate an assembly listing of the compiled code? That might help give you some scope.
Failing that, you could break up your function into one or more new functions, if all you can get is the stack trace. Then break up the new function into one or more again. This is the tried-and-true "divide and conquer" method. And if you have 35 calls to memset() in one function, it might be a good idea from a design standpoint too!
Update: I found the package I used: ARMphetamine. It worked for the ARM9 code I was developing, but it looks like it hasn't been updated in quite some time.
ChARMeD 是 Windows Mobile / Pocket PC / Win CE(适用于 ARM CPU)反汇编器和汇编
器还可以看看 BDASM,一个共享软件反汇编程序 - 更高版本有 ARM 插件。 该网站似乎已关闭,但如果您搜索它,您会找到共享软件发行版。
简单 ARM 反汇编程序 DISARM 的源代码,也可用。
binutils(linux编译器工具)objdump可用于产生反汇编,“objdump -b binary -m arm7tdmi -D file_name”
-Adam
ChARMeD is a Windows Mobile / Pocket PC / Win CE (for ARM CPUs) Disassembler and Assembler
You might also look at BDASM, a shareware disassembler - later versions have ARM plugins. The website seems to be down, but if you search for it you'll find the shareware distribution.
The source code for the simple ARM disassembler, DISARM, is available as well.
The binutils (linux compiler tools) objdump can be used to produce disassembly, "objdump -b binary -m arm7tdmi -D file_name"
-Adam
我相信 IDA Pro 会做你想要的。 O'Reilly Security Warrior 书中提到了它,并且我在 Windows Mobile 开发人员论坛上看到过它的推荐。
I believe that IDA Pro will do what you want. It was mentioned in the O'Reilly Security Warrior book and I've seen it recommended on Windows Mobile developer forums.
IDA Pro肯定会做ARM反汇编。 他们(Datarescue)曾经在当地时间晚上 11 点左右为我安排了许可证,所以我想推荐他们......
我从 http://www.datarescue.com/idabase/ 该公司进行了一些重新安排,但我认为它仍然是一个很好的产品。
以下是新发布者的链接:http://www.hex-rays.com/idapro/< /a>
IDA Pro will definitely do ARM disassembly. And they (Datarescue) once arranged me a licence at about 11PM local time, so I like to recommend them...
I see from http://www.datarescue.com/idabase/ that there's been some rearrangement of the company, but I guess it's still a good product.
Here's the link to the new publisher: http://www.hex-rays.com/idapro/