mov ecx,dword ptr [esp+04h] | //取出 index 值,是 pointercall 的第一个必填参数 |
mov eax,dword ptr [esp+08h] | //取出 this 指针,是 pointercall 的第二个必填参数 |
mov eax,dword ptr [eax] | //从 this 指针获取虚函数表指针 |
mov ecx,dword ptr [eax+ecx*4] | //根据 index * 4 算出偏移,并取出函数入口 |
mov dword ptr [esp+04h],ecx | //将函数入口覆盖到 index 参数 |
pop eax | //弹出返回指针 |
xchg dword ptr [esp],eax | //此时 [esp] 指向函数入口,并且跟 eax 做交换,以此恢复 stdcall 调用结构 |
jmp eax | //跳至函数入口... 后面交由com方法或属性自行处理 thiscall 的形式 |
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) | Powered by Discuz! X3.1 |