免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5459 | 回复: 0
打印 上一主题 下一主题

ARM指令机器码学习——反汇编必学 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-02 15:27 |只看该作者 |倒序浏览
以前,死活看不懂这个DLL文件的16进制(其实是二进制,为了好看,以16进制ASCII码显示),对一些高手使用IDA反汇编流口水,今天终于轮到俺上场了。
    现在来看看这个指令通常的编码格式

——————————————————————————————————————————————————————
这个貌似和英文原版不一样,现在来看看ARM Architecture Reference Manual里面的格式

——————————————————————————————————————————————————
还是以这个为准安全点。现在看看这个最高四位的con到底是怎么决定的。

————————————————————————————————————————————————

————————————————————————————————————————————————————
上面这些条件都是可选的,ARM都有固定的指令。下面看看无条件指令。

——————在ARMv4架构中任何带条件域0b1111的都是不可预测的。
看了那么多,现在来举个例子吧。
——————————————以branch指令为例子——————————————
引用驱动调试助手作者的成果,并解释验证
———————————————————
[color="#800080"]Foxit Reader V1.1 for WinCE6.0

     今天终于整理清了PXA270上的WinCE6.0,为了方便给客户演示WinCE6.0的强大,定制了一个增强型的操作系统。但WinCE6.0中已经不支持PDF等阅读器了。于是从网站上找了一个PPC版的Foxit Reader,把它放到WinCE6.0的设备上面运行,竟然提示OS不支持,只能在PPC上面跑。看到这个提示有些失望,但也有一丝希望。这个提示似乎是Foxit Reader运行时的提示框,与一般的“不是有效的Windows CE应用程序”是不一样的。既然这样,那说明程序还是运行起来了,只是检测OS时出错,所以才会出现如下图所示的提示。      
                              

       想一想,如果让程序跳过检测OS,是不是就可以正常运行呢。满怀着希望,用IDA反汇编了这个程序,并找到了对应的函数调用。
                           

      
     显而易见,0x000182b4处是有条件的调用,如果改成绝对调用loc_0_182D0,按理就不会出现那个提示框了,修改方法就是将BEQ改为B。         
               

     用UltraEdit将上面的0A改为EA,即将BEQ改成B,再拷贝到设备上面去,果然可以运行
——————————————————————————————————————————————————————
现在我们解释这个B和BEQ机器码指令

这个本来这BEQ,这个con由EQ决定,按照上面的知识,应该是0b0000,所以高八位为0x0A,现在改成B——绝对跳转,这样con就变成了0b1110,所以0xEA 就是由此而来。OK完工。
———————————————————————
    这个指令机器码对驱动开发人员非常有帮助,有时候画错电路图,如果不能反汇编修改代码就会无计可施了,如果可以就可以轻松为企业节省时间和成本。
    其实每个指令的机器码都有差异,不过有规律,查阅手册即可。我准备过段时间把eboot反汇编,把以前一些编译疑惑全部解决。
参考书籍:ARM System Developer's Guide: Designing and Optimizing System Software
——ARM
System Developer's Guide: Designing and Optimizing System
Software——ARM嵌入式系统开发:软件设计与优化的英文原版——我个人感觉这是国内翻译ARM书籍最好的一本之一,比杜XX的ARM体系结构与
编程好千倍。 本书虽然说软件设计与优化,但是讲的硬件也很多,比如MMU和cache等,讲的精彩纷呈
下载地址:
http://download.csdn.net/source/904273

ARM920T Technical Reference Manual——不多说了,想了解2440等的bootloader的人一定要看这个东西了,一些协处理器指令讲的很详细
下载地址:
http://download.csdn.net/source/903240

ARM Architecture Reference Manual(2nd Edition) ——比较有价值的英文ARM书籍
下载地址
http://download.csdn.net/source/901433

转载请标明:作者
[email=wogoyixikexie@gliet]wogoyixikexie@gliet[/email]
.桂林电子科技大学一系科协,原文地址:
http://blog.csdn.net/gooogleman
——如有错误,希望能够留言指出;如果你有更加好的方法,也请在博客后面留言,我会感激你的批评和分享
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/64117/showart_2044028.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP