许多的同学可能看到这个界面就头晕。。但是,逆向工程是与汇编打交道,我介绍之后大家就会觉得IDA Pro对于逆向工程最适合不过了。 \N
\N首先,它可以自动分析和注释已知API函数,并以其参数表为基础,推断出相关的变量功能。 \N
\N
第二,它可以自动注释编译库函数。 \N
\N
第三,它会自动分析C语言函数及其堆栈变量结构。 \N
\N
第四,它可以按照你的要求变更几乎所有的东西,包括函数名,变量名,注释等等,甚至自己定义结构体。 \N
\N
。。。。。。。。。。。。。。。。 \N
\N
主要用的就是这些了(这正是W32asm没有的功能),如果没有这些辅助功能,逆向大的程序是不可能的。 \N
\N
\N
详细的使用手册和软件相信大家都有办法获得。这里介绍几个基本操作。
\N打开文件:和大多数的Windows程序一样,从File中Open,或是直接拖一个文件到IDA上面,出现对话框,那里有很多选项,不要动它,仅仅点击OK。
\NIDA开始自动分析,等到分析完成(大程序可能会比较久),就可以浏览汇编的源文件了。
\N1。导航器介绍:如图:
\N[upload=jpg]http://bbs.chnren.com/UploadFile/2005-7/200575011971.jpg[/upload]
导航器就是如此了,图例说明了各个色块的含义:
\N深蓝色:被分析过的函数(可能是该程序程序员编写的函数,或是未识别的库函数)
\N浅青色:已被识别的库函数(功能已知,不用看了)
\N深红色:确定为指令,但是不知功能(可能是从来不被调用的指令)
\N灰色:数据,确定在程序中已使用。
\N棕色:未知其为何数据。
\N粉红:API符号。注意:以上颜色在源代码中含义也是一致的。
\N箭头:当前浏览的位置。
\N这个导航器主要的功能是让你对于文件组成有个大概的了解。你可以缩放它的比例尺
\N顺便说一下,以上的图示为br2可执行文件的比例,可以看到程序中只有大约25%的数据是蓝色的。。其他的75%中有25%是库函数,还有50%是D3D的数据。
\N在导航器上点击,可以直接跳到代码位置,这是一种很大略的定位方法。实际上定位一般使用jump菜单,如下所示
\N[upload=jpg]http://bbs.chnren.com/UploadFile/2005-7/2005721105614927.jpg[/upload]
\N最为常用的是“Jump to Address”,在代码窗口中按下G键也可以。出现以下的窗口。
\N[upload=jpg]http://bbs.chnren.com/UploadFile/2005-7/200572111016149.jpg[/upload]
\N这个就不用我说明了。主要的作用是定位感兴趣的代码,以后会和动态调试一起讲。
\N此外常用的代码定位方式是"交叉引用定位":X Cross Reference,这个的意思是你看到一段代码或数据,想知道哪个地方调用了这段代码或是使用了这些数据,这时候使用"交叉引用定位"就极为合适。如下图:
\N[upload=jpg]http://bbs.chnren.com/UploadFile/2005-7/200572111819162.jpg[/upload]
\Nsub_4C0910是一个函数。是谁调用了他呢?右边绿色的; CODE XREF: Vertex+16p说明了他被Vertex函数调用。在右边的绿色字上双击,你可以直接跳到调用他的代码处。对于数据也是一个道理。这里还介绍一个小的诀窍:有的时候代码被很多的地方调用,右边最多只显示3条,此时可以在绿色字上按下Ctrl+X,出现以下窗口。
\N完了,图片到限制了,明天再讲。。