-
-
[求助]请问类函数的CALL该如何正确传递类指针
-
发表于:
2014-4-29 14:31
4435
-
在下有一个这样的CALL想要HOOK,但是发现堆栈处理很麻烦,怎么弄都不成功,后来求问了一下某达人说这是一个类函数,内部调用了类指针,ECX存储的就是类指针数值,需要自己先构造一个模拟的类然后用IDA查询自己的类的地址再代入云云……完全听不懂的节奏。
但是相反的是,我在相关的资料里没见提到过类函数该如何写CALL的说法,所以感到非常困惑和不理解。
请问一下各位,像0x021AB400处这样的CALL到底该如何写呢?
这是该函数的内部:
由于被HOOK的函数用到了类指针,所以关键就是如何让类指针正确传递下去呢?比如像这样(stc_baseaddr=模块TKLordLZ.dll的基址0x02160000):
void GetCMD(DWORD val)
{
DWORD dweax = 0;
DWORD dwecx = 0;
_asm
{
mov dweax, eax;
mov dwecx, ecx;
}
DWORD dwback = stc_baseaddr + 0x109A0;
_asm
{
push val;
mov ecx, dwecx;
mov eax, dweax;
mov edx, dwback;
call edx;
}
}
我知道这个写法肯定是错误的,只是拿来随便做个例子,但请问正确的该如何写呢?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!