首页
社区
课程
招聘
[原创]散谈游戏保护那点事:HShield
发表于: 2012-2-25 14:22 51958

[原创]散谈游戏保护那点事:HShield

2012-2-25 14:22
51958
收藏
免费 6
支持
分享
最新回复 (45)
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
累了就歇歇 `````````````````````````````````````````
2012-2-29 19:20
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
我来了,支持楼主
虽然还是什么都看不懂,但是我在努力学
为了不再疏远大家,我来了
2012-2-29 22:04
0
雪    币: 386
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
28
2012-2-29 22:44
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
mark!
2012-2-29 23:27
0
雪    币: 322
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
mark!!!
2012-3-1 09:34
0
雪    币: 473
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
学习了学习了...
2012-3-1 17:37
0
雪    币: 2223
活跃值: (866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
非常不错的文章,收藏了~
2012-3-1 19:07
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
原来拜读过楼主的帖子,现在赶紧跟上!!~继续膜拜
2012-3-1 22:16
0
雪    币: 111
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
没处理debugport
2012-3-1 23:13
0
雪    币: 209
活跃值: (773)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
小白摘抄:

为什么经常见到include .h文件而不是include .c文件?或者说include是不是就是为包含.h文件设定的语法?这个问题的答案偶不知道,没有见有文档记载、说明这个问题。不过从语法角度讲,include的意思就是从当前位置包含另外一个文件,就象宏替换一样把当前行用另外一个文件的整个内容替换掉。

从这点讲,include .c文件是可行的,c编译器完全能够正常处理。但是为什么不常见include .c文件?从设计角度上讲,源代码区分为.h和.c文件,是为了接口与实现的分离,实际上两者没什么本质的差别。.h文件提供接口,.c文件提供具体的实现,两者可以一一对应,也可以不一一对应,没有强制要求。一个.c文件做为一个模块的实现,有可能要跟其他的模块打交道,这个时候就需要include其他模块的接口(其他模块的.h文件);而包含其他模块的实现(.c文件)是没有意义的、危险的。

对,包含其他模块的.c文件是很危险的,例如会重定义一些结构,变量等等,容易出错。

所以,我们不应该在项目中include .c文件,这样使用者出于直觉很难想到这里会有问题,增加了排错的难度。前几天偶移植一个国际知名大公司的代码就遇到了这个问题,耗费了半天的时间查看了全部的源码和makefile才发现了这个不常见编译现象。当然,那个公司的代码之所以这么做,是他认为这些代码已经很成熟了,不需要修改和反复重新编译。但它的做法确实对我的调试造成了很大的障碍。
2012-3-1 23:43
0
雪    币: 122
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
前来膜拜个……
2012-3-2 16:19
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
习惯了楼主的手法
下次来个跳不过的练练手
2012-3-5 17:36
0
雪    币: 237
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
markkkkkkkkkkkk
2012-3-6 08:37
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
39
支持一个先!
2012-3-8 04:12
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
偶也mark一下~
2012-3-12 22:06
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
用process explorer挂起两条系统线程(这两步我都用工具完成的)
请问这个是什么意思啊?

另外附上,我绕过的地方,然后用带了olly Advanced 插件的OD,能附加上了,但是进游戏一分钟左右卡掉。求拯救!!!
处理方式:
A: hs走自己的流程,非hs绕过hs动手脚的地方
B: hs操作的不是自己则返回失败,
C:凡是被hs替换了的call,都不再调用
NtClose(A)
NtDeviceIoControl(A)
NtOpenProcess(A)
NtGetContextThread 第一处(A)
NtGetContextThread 第二处(如果发现是hs调用,清掉Dr0-Dr7)
ntsetcontextthread(A)
PsSuspendThread(A)
KiAttachProcess(A)
NtQueryPerformanceCounter(C)
NtReadVirtualMemory(B)
NtWriteVirtualMemory(B)

另外做了以下防检测:
NtQueryInformationProcess :ProcessDebugPort,ProcessDebugObjectHandle,ProcessDebugFlags,清空返回结果
ThreadHideFromDebugger,直接返回
NtQuerySystemInformation(SystemKernelDebuggerInformation) 清空返回结果
2012-3-22 17:25
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
好文章,谢谢分享了
2012-3-24 11:48
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
43
不想说什么了..还是研究我的山寨版了...
2012-3-28 11:40
0
雪    币: 49
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
看不懂  ,先支持
2012-5-1 23:00
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
KillMonitoring() 这个是不是无效的?
2012-5-12 11:04
0
雪    币: 2673
活跃值: (2947)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
46
好东西啊,支持!
2012-6-8 15:18
0
游客
登录 | 注册 方可回帖
返回
//