逆向知识十一讲,识别函数的调用约定,函数参数,函数返回值....在Debug版本下的调用处,我们会看到这种代码,没有流水线优化,没有任何优化
看到了,两个push,紧接着一个Call,然后平栈在外面
识别参数
有经验的可能会说两个push 就是两个参数,其实不然...有两处使用,所以是两个参数. 而且直接给eax反回了,此时我们就可以在main函数位置,调用此函数的位置往上数几个push了,这些push才是属于自己这个函数的....识别参数类型,看其参数是怎么使用.
3.识别调用约定,看其函数内部是否平栈
4.识别返回值类型,看其eax是否是被重写,如果被重写,则是返回值是int类型
2.返回值 __int64 C调用约定...上面返回值类型么有更改为doubLe和float,可以看出,在main函数下面是用浮点的出栈指令 fstp指令,从浮点协处理器出栈,浮点协处理器是64位的,所以返回double
总结:
1.调用约定