ida反汇编学习心得

ida反汇编学习心得

ID:9365580

大小:333.00 KB

页数:15页

时间:2018-04-29

ida反汇编学习心得_第1页
ida反汇编学习心得_第2页
ida反汇编学习心得_第3页
ida反汇编学习心得_第4页
ida反汇编学习心得_第5页
资源描述:

《ida反汇编学习心得》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用IDA反汇编动态库最近,一直在学习如何利用IDA来反汇编动态库,这里把我的学习心得写下来。为简单起见,这里就自己所写的一个动态库里的一个简单函数进行一下反汇编,给出如何写出其C代码的详细过程,希望对新手有点帮助。废话少说,先给出其动态连接库的C代码如下_declspec(dllexport)intadd(chara,intb,intc[2]){intd=a+b+c[0]+c[1];returnd;}至于为什么要设置这样的参数,待会在反汇编时进行说明。下面给出其详细的反汇编过程,并补充相关的经验总结

2、。第一步、装载动态库文件”first.dll”,装载之后得到下面的截图:通过在Functions一栏中双击add函数,我们来到add()函数的地方(同上图),我们看到”text:10001010addprocnear;CODEXREF:add(char,int,int*const)j”这样一栏显示了add函数的参数,虽然有点出入,但大体正确。可能是因为add函数本身比较简单,所以IDA很容易就识别出了其参数,一般地,IDA是识别不出来的,网上有一个插件为”Flair.v5.20”据说可以部分地解决

3、函数的参数识别问题,但这个软件我没有下载到,就不说这个了。第二步、我们看到”.text:10001010”这些栏有很多标示,在下面的汇编语句中会用到。我们看接下来的三行代码:.text:10001010pushebp.text:10001011movebp,esp.text:10001013subesp,44h这三行代码模式基本上是固定的,(至少我遇到的都是这样)首先是保存ebp,然后用ebp来保存esp的原始指向,再将esp的指向向上移动44h个字节,(当然这里44h不是固定的)为什么会有这样固定

4、的代码呢?就代码“subesp44h”而言,在原esp的基础上向上移动44h的字节空间,而esp-----esp-44h这个44h的空间是为了存放一般变量的。其他两行相信读者很容易理解其理由。第三步、看下面三行代码..text:10001016pushebx.text:10001017pushesi.text:10001018pushedi当我们在函数的开头看到这样的代码时,而后面又没有紧跟着”call+function”时,我们大可不用理解,因为这些push语句目的都是为了不破坏原始ebx,esi

5、,edi的值而将他们保存起来,并且这里我们可以看到,是保存在esp-44h之上的。也就是说,如果我们看到函数的开头出现将寄存器push进esp-x之上的空间(我们将”esp-x至esp”的堆栈空间成为“一般变量栈空间”),这里就是指push进esp-44h之上的堆栈空间,我们不用去关心,在函数末尾肯定会有相应的代码将他们还原的。(待会我们会看到)第四步、继续向下看,进入关键代码段。在做进一步解释之前我先画一幅堆栈图。如下:ediexiebx一般变量堆栈空间can1can2can3ebp=esp(假设

6、这里是最先的esp,且值为0x0013ff80,“1000101代码”)(esp-44h)指向,为(0x0013ff80-44h)esp-44h之上的空间ebp+arg_0ebp+arg_4ebp+arg_8好了,有了上一幅图,说明起来会容易些。看接下来的四条代码:.text:10001019leaedi,[ebp+var_44].text:1000101Cmovecx,11h.text:10001021moveax,0CCCCCCCCh.text:10001026repstosd这四条代码和上面的

7、三条代码一样,其模式一般是固定不变的。其作用就是实现了“一般变量栈空间”的初始化。这里将图中所示的“一般变量栈空间“初始化为0xCCCCCCCC.其具体的代码解释如下:leaedi,[ebp+var_44]:edi=ebp+vat_44movecx,11h:ecx=0x11hmoveax,0CCCCCCCCh:eax=0xCCCCCCCC;repstosd:for(inti1=0;i1

8、初始化为eax=0xCCCCCCCC;这下就清楚了为什么上面的四条代码一般模式是固定的,原因就是对将要用到的“一般变量栈空间”进行初始化。第五步、进入核心代码段.text:10001028movsxeax,[ebp+arg_0].text:1000102Caddeax,[ebp+arg_4].text:1000102Fmovecx,[ebp+arg_8].text:10001032addeax,[ecx].text:10001034movedx,[ebp+arg_8]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。