首页
社区
课程
招聘
[原创]对韩国原装X游戏的服务器端及客户端加固
发表于: 2010-2-1 03:26 32540

[原创]对韩国原装X游戏的服务器端及客户端加固

2010-2-1 03:26
32540
收藏
免费 7
支持
分享
最新回复 (72)
雪    币: 246
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
26
认真学习下。水平太菜了,看的不大懂
2010-2-2 11:33
0
雪    币: 258
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
27
虚函数,及jmp table也可处理,但目前空间已够,所以没有进一步的调整。
举个例子来说,假设funcA省出的空间为freeA,100个字节,funcB省出的空间为freeB,200个字节,我们可以在freeA放95个汇编指令,接着1个长jmp跳到freeB,还可以再放入195个汇编指令,经过这么操作,完全没有必要将原程序所有定位都打乱。
(当然,以上操作不是手工完成的,是程序完成的,如果手工完成的话,我非疯了不可)
2010-2-2 12:04
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
28
不可否认您的做法大大改善了我们的思维,拓展了我们的视野,犹如雪地里的一颗奇芭明亮了我的双眼。但你仍然没说这么做的必要性,宁肯在文件里改300处,也不多加一个section或一个dll,难道彪悍的人生是这么诠释的么?
2010-2-2 12:53
0
雪    币: 446
活跃值: (758)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
29
在我看来,楼主是吹的
2010-2-2 13:18
0
雪    币: 357
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
我也有同样的问题,为什么要300处,而不加一个Dll或so呢?以楼主功底让代码多执行一段加载代码根本不成问题的啊?
2010-2-2 13:46
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
31
mov eax,eax
lea esi,[esi+0]
很早就讲过了,这是编译器优化的边际对齐代码,优化处理器缓存用的。

楼主自作聪明了吧。

当然了,仅仅是为了minimize binary size就当我没说。
2010-2-2 14:42
0
雪    币: 258
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
32
[QUOTE=foxabu;756323]mov eax,eax
lea esi,[esi+0]
很早就讲过了,这是编译器优化的边际对齐代码,优化处理器缓存用的。

楼主自作聪明了吧。

当然了,仅仅是为了minimize binary size就当我没说。[/QUOTE]

呵呵,我知道,align
2010-2-2 16:35
0
雪    币: 258
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
33
那你吹一篇给大家看看吧。
2010-2-2 16:35
0
雪    币: 258
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
34
这位老兄,
1:我已经说了“空间足够,没必要加Section”了
2:这近300处改动,是分布在20多个函数里的,和我直接HardCoding在里面比起来,你用dll,对整个事情有什么提高,对工作效率提高多少?没有。
3:即使用了dll或so,不还是照样需要WriteProcessMemory吗?和我直接HardCoding在bin里,有什么区别吗?有什么提高吗?没有。

不可否认,在改动很小的情况下,例如只改动个3,5处(爆破),UltraEdit很好用。
在改动的函数很少,而改动的代码很多的情况下,例如改1个函数,为其增加100K内容,那么写个dll或so,很好用。
但本案例说的是改动很多,而且改动点分布在很多个函数,并且有足够空间的情况,所以,请大家注意这个大环境前提。
2010-2-2 16:48
0
雪    币: 178
活跃值: (159)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
35
现实生活中未曾见过如此巨牛,bin里面直接几百几百的写,膜拜彪悍之人生
2010-2-2 16:55
0
雪    币: 258
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
36
假如你仔细看我的文章及回复的话,你会发现“我已经说了这么做的必要性”
2010-2-2 17:00
0
雪    币: 111
活跃值: (211)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
仔细看了也没明白
我的理解,你现在的工作
1.腾空间
2.处理jmp push call相关出错的代码
3.修改300多处代码依次填充到挤出来的空间中间零碎的用jmp连接起来
对么?
如果是加个section
1.加section
2.修改300多处代码并填充到section里

哪个工作量大?
2010-2-2 17:50
0
雪    币: 258
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
38
OK,那请你说说,假如你增个Section,添加该添加的代码,修改该修改的代码的具体步骤,用什么现成软件,假如是自己写的,说出大概流程(不用程序代码)。
2010-2-2 19:51
0
雪    币: 111
活跃值: (211)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
呃,linux下不会,win下的话加个节表比缩减移动程序代码要简单吧,lordpe就可以加啊
自己写也不麻烦,加大pe尺寸,修正下pe头的几个值就可以了,一共连读写pe也就几十行代码
然后把要改的代码统一弄到这个section,把你那300多处加个jmp挨个跳过去就行了,这样对程序本身改动很小,比大范围挪动程序代码要安全易用的多吧
2010-2-2 20:07
0
雪    币: 21
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
从这点我可以发现这个游戏的名字,是不是韩国的《挑战》?我也架设过windows上这个游戏的私服,问题确实很多。正如楼主所说,当时甚至把很多功能直接放到客户端上了,服务端都不验证。。我是菜鸟如何解决,我就不知道了
2010-2-2 20:21
0
雪    币: 111
活跃值: (211)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
这里只是说说自己的疑惑,别见怪,作为我一个菜鸟来说感觉你这个问题是把问题复杂化了
且不说创建新节表比缩减移动代码要简易,但说最终执行的代码
假设你要修改的某个函数F,修改的代码为C,把代码缩减出来的n个空隙B1 B2...BN,你的步骤是C填充到
B1-BN,然后修改F==>Jmp B1==>Jmp B2==> ....==>BN==>Jmp Back F
而写到节表的话最终执行是:F==>Jmp C==> Jmp Back F

假如说你每个函数的空隙太小,一段代码要分成很多块跳来跳去,这样是不是要比完整的把这一段代码顺利的执行下来要效率低?
2010-2-2 20:24
0
雪    币: 300
活跃值: (179)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
42
这个就像XX的时候,有的喜欢X上面,有的喜欢X下面,还有的兄弟喜欢X后面。不奇怪啊,关键是要X得高兴~~~
2010-2-2 20:59
0
雪    币: 357
活跃值: (3463)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
43
好久没见过这么烂的技术了
2010-2-2 21:03
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
44
我是来看nbw的
2010-2-2 21:03
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
45
给PE文件增加大小,网上很多工具,我5年前用汇编写过一个,你需要的话我给你翻翻老文件。

大体思路就是首先用 SetEndOfFile 函数在文件最后面添加需要的空字节数,然后根据添加的字节内容,修改相应的PE节区。修改节区的时候,可以新增一个节区信息,也可以修改以前节区属性。

不过这都是传统思路,对你这种讲究效率的高手来说,用你的UE打开文件,进入16进制编辑模式,转到文件最后,手工输入00,想输多少输多少,然后保存,关闭,搞定!

linux下的文件没研究过,不过原理应该差不多。虽然说server有np保护,但考虑到你都任意在文件里进行优化了,我也就不说np下修改文件的问题了。
2010-2-2 22:25
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
46
挑战应该是D游戏,X游戏应该是GY旗下的Q版巨作。
2010-2-2 22:30
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
厉害厉害,,一个个都非同小可啊
2010-2-3 03:34
0
雪    币: 18
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
任重道远 可以这样用啊
2010-2-3 06:57
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
啥游戏,热血江湖么?我做过这游戏的变态外挂,不过已经不玩了。
2010-2-3 09:15
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
50
关于优化的问题,我想起上大学的时候,那时候的论调好像是说直接拿汇编写比用高级语言写效率要高的多,后来很多年我也坚信这一点。又后来,读了K8的书,才知道,CPU的指令集那么复杂的,其实大部分的编译器对代码的优化都比手工写汇编代码要好的多,而且好的还不是一点点。
2010-2-3 20:52
0
游客
登录 | 注册 方可回帖
返回
//