首页
社区
课程
招聘
来看看这个call hook哪里有问题
发表于: 2013-4-24 21:12 5221

来看看这个call hook哪里有问题

2013-4-24 21:12
5221
想测试一个call hook,修改后不蓝但是会整台机子罢工(除了鼠标)
push C4
push 804DB4C0    //原始NtOpenProcess开头7字节
call 8053CB90    

这个是hook代码,hook后的头7字节变为call+nop+nop,我已经代码删成这么短了
void  _declspec (naked) MyOpenProcess(){
  _asm{
    pop eax;
	push 0C4h;
    push 0804DB4C0h;       
	push eax;              //push edi+2,也照样不通
    ret;
  }
}

新手望各位不吝赐教,全副身家都已经用在这贴上了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 1631
活跃值: (3810)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我的天啊...
2013-4-24 22:26
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
push 804DB4C0    //原始NtOpenProcess开头7字节
PUSH XXXXX  跳回去的地址
ret;
2013-4-24 23:03
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
4
没有平衡堆栈吧
2013-4-25 09:11
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
5
【引用楼主】这个是hook代码,hook后的头7字节变为call+nop+nop,我已经代码删成这么短了

push C4
push 804DB4C0    //原始NtOpenProcess开头7字节

这2句是10个字节。

替换成 call+nop+nop ,7个字节。
2013-4-25 12:32
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
天大的糊涂啊,记得用户层下NT开头的push共占7字节,就以为R0的也是
我用push eax+5改好了,奇怪的是为什么只改7字节也不会bsod呢
2013-4-25 13:04
0
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
7
push 语句占多少字节,是看操作数大小来确定的。2个字节,或5个字节。

push eax+5(这时的eax是你HookCall的返回地址,HookCall本身5个字节,你又+5,恰好10个字节,指令对齐。)
2013-4-25 13:55
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
push 34          //2字节,0x34h=52d,刚开始以为这个和push 0C4h长度相等
push 0C4h      //5字节,0xC4h=196d,这里都没超出字节范围,为什么就用到了4字节呢
2013-4-25 18:34
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
void  _declspec (naked) MyOpenProcess(){
  _asm{
	pop ecx
	mov eax,[esp+8]
	cmp eax,1                     //我这个新手对二进制的比较命令不熟,还是用cmp吧
	jz pass
	mov eax,[esp+0x10]
	test eax,eax
	jz pass
	mov eax,[eax]
	cmp eax,MyProtecProcess       //这里有其他更好的方法进行比较吗?cmp效率不高
	jnz pass
	push [esp]
	mov eax,0xC0000030
	ret 4*5;
pass:
	push 0C4h;
  push 0804DB4C0h;                //懒了点这里写死了,如果原来已经被hook了就比较难处理
	add ecx,5
	push ecx;
    ret;
  }
}


我把弄好的代码发上来,一是让各位指导改进;二是与其他同级一起学习,毕竟jmp hook的例程多,call hook较少。
另外这样是否需要防止该函数调用时被hook引发异常呢,又该如何处理
2013-4-25 18:48
0
游客
登录 | 注册 方可回帖
返回
//