写一个小例子反汇编找找:
class A
{
public:
int bb;
int aa;
void fun(int _aa){aa = _aa;};
};
A a;
a.bb = 4; //说明: a的地址就是bb的地址,也是this的值。(注意:地址和值的说法)
a.fun(9);
mov dword ptr ss:[ebp-8], 4
push 9 ; 参数1
lea ecx, dword ptr ss:[ebp-8] ;隐藏的参数2 this指针 a的地址 bb的地址
call 00401040 ; fun的地址
fun的汇编:
mov dword ptr ss:[ebp-4], ecx
mov eax, dword ptr ss:[ebp-4] ;传说的this指针终于出现了。呵呵
mov ecx, dword ptr ss:[ebp+8] ;参数1 9
mov dword ptr ds:[eax+4], ecx ;eax+4 aa 的地址
太晚了。明天还要上班。今天就研究到这里。睡觉了。