5.1交叉参考
通过交叉参考(XREF)可以知道指令代码互相调用的关系.如下:
.text:00401165 loc_401165: ;CODE XREF:sub_401120+B|j
这句CODE XREF:sub_401120+B|j 表示该调用地址是401120,
“j”表示跳转(jump)
“o”表示偏移值(offset)
“p”表示子程序(procedure)
双击这里或按回车键可以跳到调用该处的地方
快捷键: X
5.2参考重命名:N
找到一段代码(一般为函数入口名),右键点击选择”Rename”可以将函数名称变成易懂的名称.
5.3 标签的用法
在菜单”Jump”中选择”Mark Position” 将会打开 标记当前位置功能,输入一个名称, 在菜单”Jump/Jump to marked position” 中或按”Ctrl+M”键双击想要调转的名称,便会到达制定的代码位置.
5.4 进制的转换
选择快捷键的#可以转换进制,选择”Toggle leading zeroes”功能是用0填补数据前的空位.
使用H进行十进制与十六进制之间的转换;
5.5 如何修改数据
在Hex View窗口下,
[S1]双击要修改的地方
[S2]使用F2捷方式修改当前字节
[S3]再按下F2快捷方式应用修改。
5.6如何改变执行流程
[1]修改跳转指令。
[2]修改内存数据。
[3]IDA View中使用下面的命令Jump to IP,Set IP, Run to cursor。
保存修改
使用下面的主菜单命令,直接把修改保存到输入文件中,即可。
[IDA Main Menu]->[Edit]->[PatchProgram]->[Apply patches to input file…]。
5.7 标准的函数起始
在破解的时候,经常可以看见一个标准的函数起始代码:
push ebp ; 保存当前ebp
mov ebp,esp ; EBP设为当前堆栈指针
sub esp, xxx ; 预留xxx字节给函数临时变量.
碰到这样的直接P,可以解析成函数;
...........