首页
社区
课程
招聘
[原创]散谈游戏保护那点事~就从_TP开始入手吧
发表于: 2010-12-20 02:37 483705

[原创]散谈游戏保护那点事~就从_TP开始入手吧

2010-12-20 02:37
483705
收藏
免费 8
支持
分享
最新回复 (234)
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
51
  TX要跨省追捕看雪老大 咋办
2010-12-26 17:33
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
试验后没用,照他那样修改后,直接蓝屏
2010-12-26 22:27
0
雪    币: 439
活跃值: (1284)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
53
楼上的,仔细检查自己的代码.
分析我的思路和逻辑.
真正看懂了,做到了.再发表.起码不会信口雌黄
下面我给出你PM来的代码.有时间人也看看吧

可以看下你的逻辑吗?

我这样hook,dnf一启动就蓝了



__declspec(naked)VOID yjxsoft_com_OpenProcess()
{
__asm
{
call yjxsoft_com_dnf_proc
test eax,eax
jz label
push dword ptr [ebp-38h]
push dword ptr [ebp-24h]
mov eax,ntopenprcaddr
add eax,0bh
push eax
mov eax,TPObOpenObjectByPointerproaddr
jmp eax
label:
push dword ptr [ebp-38h]
push dword ptr [ebp-24h]
mov eax,ntopenprcaddr
add eax,0bh
push eax
jmp ObOpenObjectByPointeraddr

}

}


虽然凌晨3点了,我还是打算和你一起分析一下.
按你的逻辑
call yjxsoft_com_dnf_proc
应该是判断访问进程,返回值在EAX当中
ntopenprcaddr 里面所保存的应该是下面这句的地址
push dword ptr [ebp-38h]

因为你压入的返回地址是+了11个字节
然后TPObOpenObjectByPointerproaddr里面保存的是TP的过滤函数的地址
如果我分析的这些逻辑都和你设计的一样的话.....
先仔细看看你的代码,我那里的处理是经过反复测试的.而且,很多个XP3上面都没有蓝屏

另外,看你的名字应该是理解的hacker的真谛了。
怎会如此不堪?从提问的方式,到处理一件事情的手法...
本来凌晨3点了,我想索性直接点X关闭网页睡觉了。
2010-12-27 02:47
0
雪    币: 439
活跃值: (1284)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
54
本来电脑都关了,又打开了
我获知的信息太少了。你可以自己调试一下
在虚拟机当中调试,这种过滤的办法不需要开游戏
在物理机打开WINDBG连接虚拟机,等蓝屏之后,去你HOOK的地方看看
就知一二
另外,游戏的过滤函数那里是一个相对地址
去第一页看图片上的机器码。
e89726a575
分析是不是自己取地址的时候,直接把它的相对地址取出来了?
导致在自己的过滤函数中跳到一个未知的区域导致蓝屏了
最后,还有DUMP文件。也可以调试
本来不改回复你的。这种问题,能解决的只有你自己
过不了这关,你就成不了个人。何谈hacker
2010-12-27 03:25
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
看雪又将出牛人。
2010-12-27 04:38
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
56
感谢牛人分享成果!
2010-12-27 13:38
0
雪    币: 121
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
57
在次膜拜了哈!
2010-12-27 19:41
0
雪    币: 1233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
向牛人学习,我辈继续努力啊
2010-12-27 19:51
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
59
本来不改回复你的。这种问题,能解决的只有你自己
过不了这关,你就成不了个人。何谈hacker

楼主也不用这么攻击人吧.ID你看了不舒服,那我也没办法,另外楼主敏感了.我说的话伤害到你的话.我向你道歉
2010-12-27 20:24
0
雪    币: 243
活跃值: (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
支持一下

回去睡觉哈哈
2010-12-27 20:35
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
强帖.Mark.学习
2010-12-27 21:52
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
62
不得不承认人家的钻研精神和技术水平!佩服!
2010-12-27 22:13
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
63
楼主你用的是
move eax
jmp 地址

call 偏移地址 不是等于push 返回地址 + jmp吗

可能我理解的错误了.
2010-12-27 22:46
0
雪    币: 268
活跃值: (3243)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
64
先mark下,,回来再研究
2010-12-27 23:31
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
大概明白了,DNF HOOK ObOpenObjectByPointeraddr的时候他内部也肯定处理了Ret返回地址问题了.所以我就不需要Push返回地址了.tp会自己处理的.非常感谢.
2010-12-28 00:06
0
雪    币: 439
活跃值: (1284)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
66
之前言语不慎,见谅。绝无讽刺意味,因为每个人必过的那关就是自己。

你没理解错
我在JMP之前,压入了返回地址
push    dword ptr [ebp-38h]
push    dword ptr [ebp-24h]
push    p_ReturnAddress

而这个返回地址p_ReturnAddress是通过
p_ReturnAddress = p+5;

在Nakd_NtOpenProcess函数中,一定要控制好堆栈的平衡
稍不谨慎,JMP到的函数就找不到返回地址了。会导致蓝屏
其实很好调试
你开着WINDBG先连接到虚拟机上,然后设置虚拟机的系统蓝屏后不要马上重启
等蓝屏了你物理机的WINDBG会断下来。这个时候转到你HOOK的地址跟一下不就知道了
实在不行,看看DUMP文件。

另外一个需要注意的地方就是,取TP的过滤函数地址的时候。要处理好
因为它HOOK的时候写入的是一个相对地址。
比如
call f601ecba
它的机器码是
E89726A575
E8是CALL的指令
后面的地址是个相对于当前地址的地址。
在计算它的时候精细一点。
就没什么了,一个简单的INLINE HOOK
你自己先尝试写一个对NTOPENPROCESS的HOOK,进行过滤
查看下谁在使用这个函数然后打印出来。
如果你这步做成功了,其他的就没问题了。
2010-12-28 01:13
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
67
呵呵..腾迅都在关注看雪..哈哈..看雪一出关于D .N . F的东西一会儿就要升级游戏..哈哈..笑死我了..
2010-12-28 02:33
0
雪    币: 1140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68
思路比较明确,感谢楼主的启发文章
2010-12-28 07:22
0
雪    币: 154
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
继续深入mark
2010-12-29 09:11
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
70
可惜我没帮到你呀。。。。。。
2010-12-29 19:24
0
雪    币: 244
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
71
好贴。做个记号
2010-12-31 15:31
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
虽然看不懂 但是还是顶,希望以后能看懂
2010-12-31 23:34
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
73
NtOpenThread    //防止调试器在它体内创建线程

请问楼主,为什么拦截了NtOpenThread可以防止调试器在它体内创建线程呢?
那会不会防止CreateRemoteThread在它体内创建线程呢?
2011-1-1 18:46
0
雪    币: 193
活跃值: (64)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
74
干点D N F的监控线程,你想干啥就干啥!!!!
2011-1-3 10:17
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
75
既然没意思,那你放个hp的瞧瞧
2011-1-3 11:09
0
游客
登录 | 注册 方可回帖
返回
//