IDA权威指南阅读笔记2
1.之前查看当前函数被哪个函数调用了都是去跳转到LR寄存器(arm)的地址,看这个地址在哪个函数里,现在发现这个功能IDA提供了
依次点击:View--->openSubviews--->Functions calls 即可
显示如图:
2.查看栈相对变化量:
依次点击 Options--->General,勾上 stack pointer
看看多了什么:
红框里边的部分表示的是进入一个函数后,栈相对于调用函数开始时候的栈指针的变化量,通常对抗IDA静态分析就是让IDA在执行ret指令时候,检查到栈的变化量不为0.
3.操纵函数
初步分析完成后,如果IDA无法定位一个函数调用,由于没有直接的方法到达函数,IDA将无法识别他们,因此需要手动干预。
光标放在将要包含在新建函数的第一个字节或者指令上,右键create function
那么问题来了,如何才能知道某处可能是某个函数的第一个调指令呢?对于x86,首先要保存上一个函数的栈桢,然后将当前栈顶作为当前函数的栈桢
代码:
push %ebp
mov %ebp %esp
对于arm也是有一段入栈操作保存寄存器的值
4. 函数块太多,造成分析不方便:
首次加载时候,选择kernel options2 取消选择create function tails
5.删除当前格式:Edit--->Undefine或者热键U
效果:
6.反汇编一组未定义的字节:
Edit-->code 或者热键c
7.创建数组:
edit-->arrays