之前的笔记搬运
0x1 逆向函数需要的信息
逆向中需要识别函数的信息有, 参数/返回值/调用约定,
没有这三个信息是无法还原出等价的函数的;
那么如何得到这三样信息呢?
通过名称粉碎后的名字, 使用undname获取函数声明
1 | 识别外部函数(导出函数)时, 想要得到调用约定只能通过名称粉碎 |
可以发现在C粉碎规则的stdcall与fastcall粉碎后名称一样,
所以还需要通过方式其他进一步确认
从汇编代码来判断
1 | 1) 从平栈方判断 |
0x2 浮点数传参和返回值形式
浮点数传参是通过把浮点数压入到st0再弹出到堆栈里, 实现传参
返回值是通过把堆栈里的输入压入到st0来实现取返回值
返回值的大小可以通过后续是用大小确定是double还是float
如: mov qword prt [xx], 1
mov dword prt [xx], 1