爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 15914|回复: 22
收起左侧

使用IDA反汇编--我的一点经验

[复制链接]
发表于 2005-8-7 00:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
让我们比较一下进行西门子手机Patch和Windows可执行文件(Pe)Patch的比较:
[upload=gif]UploadFile/20044191234258711.gif[/upload]
  以蓝底标示的是进行手机Patch的劣势,而以绿底标示的则是优势。

  对Siemens Mobile phone pathch进行反汇编,IDA几乎是不二之选,毕竟C166的Cpu并不常见,反编译工具很少。

  IDA的4.30版以上具有对C166的反编译功能,不过IDA的身材有些大,4.30以上的版本也不太好找。KoncaCN在他的主页上放上了IDA4.30 For C166的专用版,身材只有2M。
  请大家自已到这个页面中下载:
  IDA 4.30 For C166专用版:http://www.konca.com/mobile/6688i/index.html


  在使用IDA打开我们的FullFlash之后会出现下面的对话框:
[upload=gif]UploadFile/200442612544639547.gif[/upload]

  如果我们使用的是For C166的专用版,那么只需要将“Rename Dll entries”的选中去掉就可以了,否则,还需要选出合适的处理器类型。

  OK之后我们会看到内存组织对话框:(依据S57填写)
[upload=gif]UploadFile/200442612554163162.gif[/upload]

  在这个对话框中使用黄色标注的是我们需要设置的地方。为什么需要这样设定呢?MrJewes在他的http://www.36518.com/sjpd/bbs/dispbbs.asp?boardID=43&ID=9154一文中已经说得很清楚。在下一篇《C166 cpu基本知识》中我会对相关知识做一些更详细的说明,这里只是简单说一下数据是如何来的。

  S57的FullFlash有12M,换算成16进制数就是C0.0000(我使用.作为4位16进制数的分割符)。C166的CPU有16M(100.0000)的寻址能力,为了便于管理和升级,Siemens将RAM放置于地址的前端,ROM放在地址的后端,所以我们应该将取得的FullFlash做一下寻址变换,也就是在FullFlash前面填充16-12=4M的RAM区域。那么这是不是意味着S57拥有4M的RAM存贮器呢?并不是这样,在RAM和ROM之间还有一段空白区域,CPU可以对这一段区域寻址,但是并没有真正的存贮器与它对应。我们填写4M的RAM的主要目的是为了将ROM的地址从文件地址变换到CPU寻址地址,也就是加上40.0000H。至于ROM的大小,IDA会依据文件来设定,不需要我们手工填写了。

  M55的FullFlash有14M,那么我们怎么设定呢?请大家自已练习一下。本篇的最后,我将给出相应的设置,对比一下,看你有没有正确填写?

  再次确认后,IDA就开始辛勤工作了。等IDA反编译成功,IDA会显示八个子窗体,其中对我们最为有用的是IDA View-A,Hex View及Strings窗体。其它的我们可以将它关闭。
[upload=gif]UploadFile/20044271358540084.gif[/upload]

  让我们转到Hex View页,拖动滚动条,你一定能看到下面的画面(依据M55V11。Sorry S57的朋友,单位只有M55的FullFlash,不过应该能很容易的转到S57上去)

  为什么20.0000H之前都是问号呢?这是因为20.0000以前的地址都是RAM,正是我们在内存组织页中填写的内容。由于RAM在实际运行之前是不可知的数据,所以IDA为我们填写了?号作为标识。

  从20.0000H开始的内容就是我们在FullFlash中的内容,大家不妨自已比较一下。结合我们在内存组织页中填写的内容,我们很容易知道:IDA中显示的地址(CPU寻址地址)=文件地址+20.0000H。当然这个20.0000H是针对M55来说的,S57这一值是40.0000H。

  IDA在20.0000H以前的地址使用了类似于Seg031:FFF0这样的段式组织方式,一个段的长度是10000H。依据上图,M55的内存(RAM,注意并不是真正的RAM区域,而是RAM+空白地址空间)有32(注意这里是10进制,以后没有加H的均表示10进制)个段,所以长度为32*1.0000H=20.0000。







[此贴子已经被作者于2004-4-27 13:58:49编辑过]

使用IDA反汇编--我的一点经验<1>

使用IDA反汇编--我的一点经验<1>
 楼主| 发表于 2005-8-17 00:00:00 | 显示全部楼层
 楼主| 发表于 2005-8-17 00:01:00 | 显示全部楼层
 楼主| 发表于 2005-8-17 00:02:00 | 显示全部楼层
发表于 2005-8-17 00:03:00 | 显示全部楼层
顶,远帆大哥,我也想跟你学一下
发表于 2005-8-17 00:04:00 | 显示全部楼层
顶,支持~~!

希望能够详细说一下如何操作IDA才可以反汇编出正确或最接近正确的代码
发表于 2005-8-17 00:05:00 | 显示全部楼层
写个图片教材给我们~
发表于 2005-8-17 00:06:00 | 显示全部楼层
顶~~!
发表于 2005-8-17 00:08:00 | 显示全部楼层
E GOLD+,也是C166核心
发表于 2005-8-17 00:09:00 | 显示全部楼层
*^^*
左GG~~~我也下载了这个东西来玩~~~虽然我其实不懂~~~
楼主GG~~~我的是小蝎~~~是不是你标的那些黄色的地方都改成0x0020000呢?~~~我交作业~~~错了不要笑话我~~~我不是学计算机专业的~~~*^^*
发表于 2005-8-17 00:10:00 | 显示全部楼层
还有还有~~~小蝎的ROM size是0x00E0000~~~loading size也是0x00E0000~~~
 楼主| 发表于 2005-8-17 00:11:00 | 显示全部楼层
虽然有很多人嚷嚷怎么做补丁怎么做补丁,真正写出来倒好像没有什么人关心。真是伤心。
发表于 2005-8-17 00:12:00 | 显示全部楼层
就是这样的!动手的人没几个的!

我是已经习惯了。
发表于 2005-8-17 00:13:00 | 显示全部楼层
以下是引用九花玉露丸在2004-4-26 19:54:23的发言:
还有还有~~~小蝎的ROM size是0x00E0000~~~loading size也是0x00E0000~~~

丸子,你少写了一个0,
是E00000。
发表于 2005-8-17 00:14:00 | 显示全部楼层
哎!不是不动手是实在看不懂,根本就没接触过汇编!
发表于 2005-8-17 00:15:00 | 显示全部楼层
如果只是移植的话对汇编的要求不是很高。但是要自己做时就得用汇编来编好后再修改。而C166的指令实在不不太明白。而手机本身的程度段的很多入口并没找到,所以编起来的确难。如果有个手机程序的源代码,最好还有注译那么就容易多了。是C当然会更好。哈哈。
我想到哪了?IDA的反汇编能给我们的事实上也并不多。主要还是看汇编的功底。要不看来只能象我这样,只会移植一些。
发表于 2005-8-17 00:16:00 | 显示全部楼层
总算读完了入门文章
做补丁的方法是不是:手写代码--〉用sfe生成补丁--〉修改成*.vkp
在这过程中IDA的作用是不是提供fullflash的汇编带码来作参考,本身并不用于写代码?

还有就是这样将现成的vkp文件反编译成代码?自己做补丁之前,希望能多读一些别人的代码

另外,要移植不定是不是只用修改对应的地址就行了,比如extp,jmp后面的数
要怎么才能找到这些地址在m55中对应的值呢?
发表于 2005-8-17 00:17:00 | 显示全部楼层
如今的确是有几个问题还搞不清楚,例如EXTP跳到的那一页如何得知是在哪里,还有一些函数是否已经在FLASH里了?如何得知这些函数有哪些?

现在只是一点一点的吸收,因为要搞毕业设计,少了时间去研究了,等搞完以后一定花多点时间在这上面,还有请远帆兄不要伤心,毕竟这里的不都是学计算机的机油,能够一下子加入实际讨论的相信也没几个,虽然有热情,但是看到你介绍的陌生的东西,毕竟会成为他们进军PACTH界的一道心理障碍,这还是需要时间的调剂的
发表于 2005-8-17 00:18:00 | 显示全部楼层
以下是引用远帆在2004-4-28 9:25:39的发言:
虽然有很多人嚷嚷怎么做补丁怎么做补丁,真正写出来倒好像没有什么人关心。真是伤心。

    高手总是寂寞,英雄总是少数。领导只需一个,随从遍布角落。
    好奇总是存在,现实总是无奈。雄心不在澎湃,发现自己小菜。
    楼主文意深长,揭去心中迷茫。高手实在太强,更增心中敬仰!
发表于 2005-8-17 00:19:00 | 显示全部楼层
太笨,看不大懂
您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-7-20 19:15

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表