stdcall 参数使用栈,平衡是在函数内,通过函数内的最后一个retn X来平衡,这个X用来指定pop几个字来平衡堆栈

cdecl 栈传参,函数外平衡堆栈

fastcall 是通过寄存器,因为是寄存器fast嘛

下面这种call是用在有类对象引用的时候来表示传参的
thiscall 是用ecx来穿this指针的,一般都是 类似lea ecx [ebp+var_20]
进入函数函数后 ecx就能会直接拿来用,不会再次赋值。

识别参数个数
1.点亮call后依次进去看调用的方式,非stdcall则再看参数的中占用大小
2.划分push 的归属
3.遇到栈平衡相关指令。点亮push核对下已分配是否有误
4.注意识别出某些push为下一个函数所用
5.另外还要看某push归属于某个函数的最后参数却不使用的参数
不确定的可以call进函数里,看看最后函数返回的时候堆栈平衡的参数大小,来确定传入参数



逆向  

传参方式

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!