首页
社区
课程
招聘
[求助]请问类函数的CALL该如何正确传递类指针
发表于: 2014-4-29 14:31 4434

[求助]请问类函数的CALL该如何正确传递类指针

2014-4-29 14:31
4434
在下有一个这样的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;
	}
}

我知道这个写法肯定是错误的,只是拿来随便做个例子,但请问正确的该如何写呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 53
活跃值: (528)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我建议你去看看 stdcall、cdecl、thiscall 的区别。
把基础搞扎实了再来玩这些...
2014-4-29 14:43
0
雪    币: 3725
活跃值: (614)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
人家上面还 push eax 你怎么给弄丢了?  这个函数不需要你平栈,但是你传参要对啊.
2014-4-29 14:55
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大哥
我当然知道写的是错的
实际上的代码我也不是这么写的,这只是做个例子表示我想干啥而已

关键我想问的是那个模拟的类该怎么写呀
2014-4-29 14:55
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
DWORD WINAPI TestCall
{
__asm
{
    pushad
   xxxxxx
   popad
}
...
}
2014-4-29 14:59
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
老兄你的这个方法好像不行
pushad和popad一开始我就试过了
类指针的问题不解决貌似搞不定这个的
2014-4-29 15:08
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
7
同意楼上
2014-4-29 15:25
0
雪    币: 90
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
很明显 就是上一个CALL的返回值。压入下一个CALL 你得找EAX的和EBX的来源
2014-4-29 15:43
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这位大哥……
手动还是自动平衡堆栈在这里不是重点吧
我想问的是怎样正确传递类指针啊

我能找到的写CALL资料全部对如何HOOK类函数避而不谈,根本找不到人问呀……
刚才发帖太急写错标题没归纳好重点,我修改一下
2014-4-29 15:44
0
雪    币: 302
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
大概是this 指针?指向类本身的一个指针。你要看类分配的地址在哪里。然后传这样一个指针进去。
我是打酱油路过的
2014-4-29 16:05
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
11
this指针一般就是ecx,你的hookfunc不改变ecx在call回去不就完了
2014-4-29 17:41
0
游客
登录 | 注册 方可回帖
返回
//