1、识别局部变量。
反汇编出来的伪代码中,后面又注释的 rX@X的就是局部变量;
int v7_stepID; // r0@1
int v8_ret; // r4@1
局部变量可以直接使用,IDA一般不会识别错误;
2、越界判断代码,逆向时不用管。
unsigned __int8 v13_recbuf[1024]; // [sp+ECh] [bp+C0h]@1
int v14; // [sp+4ECh] [bp+4C0h]@1
使用的地方:
v14 = _stack_chk_guard;
...
if ( v14 != _stack_chk_guard )
_stack_chk_fail(result);
3、函数指针的逆向使用
int testFun(int a,int b )
{
return a > b;
}
第一种:
int(*pFun1)(int x, int y);
pFun1 = testFun;
pFun1(1, 2);
第二种:
int(*pFun3)(int x, int y);
int(**pFun2)(int x, int y);
pFun2 = (int(**)(int x, int y))testFun;
//pFun3 = pFun2;
(*(int(*)(int x, int y))pFun2)(1, 2);