发新帖

《IDA Pro权威指南》读书笔记

[复制链接]
9593 2
Names窗口:
F,常规函数
L, 库函数
I,导入的名称。与库函数的区别:没有代码
G,命名代码
D,数据
A,字符串数据。
用于自动生成名称的一些常用前缀包括以下一些:
sub_xxxxxx:地址xxxxxxx处的子例程
loc_xxxxxx:地址xxxxxx处的一个指令
byte_xxxxxx:位置xxxxxx处的8位数据
word:16位
dword:32位
unk_xxxxxx:位置xxxxxx处的大小未知的数据

x86 fastcall约定:是stdcall约定的一个变体,它向CPU寄存器(而非程序栈)最多传递两个参数。 传递给函数的前两个参数将分别位于ECX和EDX寄存器中。剩余的其他参数则以类似stdcall约定的方式从右到左放入栈上。

push和pop会修改esp,要记住

在x86程序中,EBP寄存器通常专门用作栈帧指针。
bp-based frame:
[AppleScript] 纯文本查看 复制代码
    push  ebp   ; save the caller's ebp value  
    mov  ebp, esp   ; make ebp point to the saved register value  
    sub  esp, 76   ; allocate space for local variables  
    ……  
    mov esp, ebp   ; clears local variables by reseting esp  
    pop   ebp    ; restore the caller's value of ebp  
    ret      ; pop return address to return to the caller  

使用一个专用的帧指针,所有变量相对于帧指针寄存器的偏移量得以计算出来。正偏移量用于访问函数参数,负偏移量用于访问局部变量。
反汇编清单可能会有错误,你可能需要对反汇编分析和显示过程进行更多的控制。
IDA提供的代码转换包括以下几类:
将数据转换为代码
将代码转换为数据
指定一个指令序列为函数
更改现有函数的起始或结束地址
更改指令操作数的显示格式

Edit->Array菜单中,可以指定连续的数据空间为数组。指定后,反汇编清单会更好看

为了字节对齐,编译器会插入几个字节
结构体在反汇编中看到的就是数据块,并不知道是结构体。可以自己创建。
可以反汇编自己编写一些程序来认识自己使用的编译器得到的结果

编译器会为每一个包含虚函数的类(或通过继承得到的子类)生成一个表,其中包含指向类中每一个虚函数的指针。这样的表就叫做虚表(vtable)。此外,每个包含虚函数的类都获得另外一个数据成员,用于在运行时指向适当的虚表。这个成员通常叫做虚表指针(vtable pointer),并且是类中的第一个数据成员。
通过虚表的分析,可以看出两个类间的关系。
如果两个虚表包含相同数量的条目,则与这两个虚表对应的类之间可能存在着某种继承关系
如果类x的虚表包含的条目比类y多,则x可能是y的子类
如果x包含的条目也可以在y的虚表中找到,则必定存在下面一种关系:x是y的子类,y是x的子类,或者x和y全都是同一个超类z的子类。
如果x包含的条目也可以在类y的虚表中找到,并且x的虚表中至少包含一个纯调用条目,而y的虚表中并没有这个条目,那么y是x的子类

代码交叉引用用于表示一条指令将控制权转交给另一条指令。在IDA中,指令转交控制权的方式叫做流(flow)。IDA中有3种基本流:普通流、跳转流和调用流。j表示跳转流jump,p表示调用,procedure。
数据交叉引用最常用的3种数据交叉引用分别用于表示某个位置何时被读取、何时被写入以及何时被引用。r后缀表示read cross-reference,w表示write,o表示偏移量交叉引用offset cross-reference。

常用快捷键:
g:jump to address
alt+t:搜索
ctrl+t:搜索下一个
ctrl+x:交叉引用列表
F5:反编译成C伪码

Mac OS X版的IDA没有破解,目前只发现6.0的试用版。 Mac版的IDA能更好地识别objective-c函数,并且反汇编结果是AT&T语法,可以和windows版互补一起用。



举报 使用道具

回复

精彩评论2

FindAllBlue    发表于 2015-9-21 19:35:06 | 显示全部楼层
谢谢分享好人啊!关于虚表那段描述写的太棒了!!给你一万个赞!!ios的可以用hopper,最新的hopper破解版,看雪有教你怎么破解他的文章!

举报 使用道具

回复 支持 反对
听鬼哥说故事    发表于 2015-9-22 10:42:28 | 显示全部楼层
好资料i,赞~

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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