五、IDA静态分析常用

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,可以解析成函数;

 

...........

猜你喜欢

转载自blog.csdn.net/yuqian123455/article/details/82317361
IDA