首页
社区
课程
招聘
[求助]怎么保护重要代码和IAT表??
发表于: 2013-3-5 10:44 6802

[求助]怎么保护重要代码和IAT表??

2013-3-5 10:44
6802
针对某一类DOTA游戏,开图外挂基本都是修改重要DLL的代码段,IAT,硬件断点。
怎么检测这些DLL被修改??试过全部代码段校验,但运行效率太差,只针对某些代码校验,但外挂很容易就修改到别的地方。
     还有输入表的检测,游戏本身就对某些输入表改写过,怎么能做到不误判?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
能不能尝试一下在重要的代码段VM下?或者是混淆下?
2013-3-5 15:08
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
游戏有性能问题,VM能解决问题,但对性能的降低会很厉害,所以要慎重。另外DLL是自己的才可以考虑。如果是第三方的DLL,不可控。

一个DLL的代码,关键的也就少数一些地方吧,对那些地方建立一个代码偏移库,由服务器管理,分发给客户端计算校验(通信数据加密),客户端自己不存放偏移数据以免被破解。其它地方,游戏运行时不定时检测一下,发现修改的就把偏移上报服务器,服务器收集偏移信息,再把偏移信息分发给其他客户端作校验。

游戏自己会改输入表?那启动的时候就做一下校验,以后和这个对比。
2013-3-5 23:53
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
现在很流行CRC32的效验方法。加上这位看官的方法是不是能够更好的同步更新服务器上面的数据对比?
2013-3-6 08:53
0
雪    币: 615
活跃值: (187)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
5
服务器建立代码偏移库,到本地了还是要解密,一样要被破解~
2013-3-7 09:46
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
100%不被破解是不可能的,但只要想方设法增加破解难度,使得破解工作在一定时间内不可行即可达到效果。

具体实现的时候当然可以做得更安全,例如,

1. 服务端不直接传递代码偏移到客户端,而是传递被混淆的代码(例如脚本VM的字节码等),而且这代码借助一些变形混淆算法,定期更新,保证(几乎)每次都不一样,使得攻击者没有足够的时间去解密。被混淆的代码再做校验工作。
2. 服务器传递时间戳给这段被混淆的代码,被混淆的代码使用时间戳初始化其hash算法,杜绝攻击者修改代码返回固定hash值的可能。

其他当然还有一些措施,例如校验代码之间互相校验,形成网络等。但是实现得越多,则性能越低,算法和编码也越困难,实际使用的时候需要折中综合考虑。
2013-3-7 13:57
0
雪    币: 281
活跃值: (237)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
十分感谢楼上的建议,没想到你说的竟然和现在的保护差不太多
2013-3-7 14:08
0
雪    币: 615
活跃值: (187)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
8
100%不被破解是不可能的这个大家都知道。
这个跟本地加密偏移库又有什么区别?客户端代码不变,偏移值不变,解密算法在本地,3楼的意思是“在服务器上新建偏移库,这个偏移库下载到客户端,客户端解密得到偏移的值,不定时检测,发现修改偏移被改上报服务器”
跟踪下指令偏移值就出来了,偏移库也没啥作用了~
2013-3-8 14:10
0
雪    币: 615
活跃值: (187)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
9
静态的偏移库作用不大~
2013-3-8 14:11
0
游客
登录 | 注册 方可回帖
返回
//