能力值:
( LV2,RANK:10 )
|
-
-
2 楼
外挂攻防。无止境的较量
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
希望么123123
|
能力值:
(RANK:860 )
|
-
-
4 楼
强烈支持,好文章啊
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
牛人 膜拜一下
|
能力值:
( LV13,RANK:970 )
|
-
-
6 楼
轻则受到攻击后Server崩溃,重则被精心构造的ShellCode执行了恶意操作,例如添加个超级用户之类的,死都不知道是怎么死的。
我觉得黑客拿不到server,应该不会构造这么彪悍的溢出;
其次LZ为什么留QQ呢?
看楼主的做法是优化原exe程序,空出来的多余空间添加你自己的汇编代码,达到zeroadd,这样没什么意义吧?服务器硬盘又不是手机卡,省那点空间没啥意义的,何况你的“优化”可能会导致原程序出问题;
游戏server都加np了,我感觉这没什么必要,既然server已经往外传了(你都能拿到),我觉得你可以建议游戏公司在server端去掉np,一方面节省费用,一方面提高资源利用率;
你目前的工作貌似只解决了第6个问题,个人感觉前面的“致命问题”如果都这么处理,显然任重道远。个人提出以下思路:
前提:
在server端写个dll注入进去,方便对其进行修改,即比你修改反汇编简单,又能直接上高级语言;
问题1处理方法:
可以找到server处理recv数据的地方,如果有明显的bug,直接修复之;如果找不到此类所在,在自己的dll中提前对数据长度进行检测,发现异常数据直接丢弃;
问题2处理方法:
反外挂问题不是简单几步能搞好的,你有以下选择:1、找到成熟可靠的反外挂套路,放弃np,用新套路;2、在np基础上进行反外挂。分析外挂数据与正常游戏的不同,可以在服务器检测异常数据;
问题3处理方法:
客户端的保护是无法防止游戏穿墙的,你所做的只有一条道路:在server处检测客户端数据流,对所有走路数据进行检查坐标点,发现异常则清退。这可能会有很大的资源消耗,所以我建议检测不必是实时检测,每隔一定时间查一次,可以极大减低资源消耗;
问题4处理方法:
可以对你说的那个标记进行同步,也可以对server的装备处理加锁,防止同时修改数据。不过这要看服务器的具体实现了;
问题5处理方法:
网络容错能力差一般在于2点:1、可能是心跳同步数据太频繁;2、异常数据检测太严,每个数据包内可能都有校验值,一旦发现校验出错马上断开。如果是第一种情况,可以降低心跳频率,实在不行去掉心跳,用connect断开作为掉线检测;如果是第二种情况,把每个封包内的数据校验去掉,或者作为掉线辅助判断。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
同问,呵呵,感觉关键的点都没怎么说,可能是保密需要,不过既然是保密需要,为啥要留qq?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
绝对的牛人啊,幸亏你是正方,如果在黑方,那棒子的游戏公司早被你给XX了,呵呵
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
来这坛子就是为了交流。如果有同道,方便交流。本人不常上论坛,也不常上Q,如果通过论坛短信找我要Q,需要等几天,通过Q找我,又需要等几天,所以直接留Q
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
拿不到Server的bin程序,也能让Server崩溃,这点不用怀疑。
我说的(轻则。。。重则。。。),是从逻辑上表示问题的严重性,并不表示一定能发生或容易发生。
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
谢谢你的关心,不过我发现你还是没仔细看我的文章,可能是我的文章写得还不够好。
1:谢谢你对那6个问题所提出的自己的观点。可见你在这些方面也有相当深的研究。
2:window上可执行程序是exe/com/dll/sys,PE结构,linux上文件扩展名没有强制要求,文件结构也不是PE,是ELF结构。
3:我解决了6个问题,不是只解决了第6个问题。有些问题不是孤立的,是有联系的。
另外,我对这些程序的改动,不是像你想象的那样,用UltraEdit逐个字节写入,那样太累,所以你建议我用高级语言写程序,直接hook在关键点。
谢谢你的建议,但是我有更好的方法:
我对bin的改进,是自己写了个程序,能自动将我写的汇编代码,直接嵌入到合适的位置(该增的增,该改的改,该删的删,该跳的跳),这也相当于用高级语言写程序一样的方便,而我又能将目标程序的汇编优化整理出足够的空间,所以完全没有必要另外写个拖泥带水的程序。
如果用UltraEdit逐个字节加入,当修改规模大到一定程度的时候,会出现以下问题:
1:在我们尝试修正的时候,我们很难控制各个测试版本是否会混乱。
2:假设A bug的修正集合是改动了5处,B bug的修正集合是改动了6处,显然,在不断的尝试中,我们会因为这些修正的组合错误或改动点的不小心错误,带来更大的问题。
3:可能因为修正A bug引入A+ bug,
而我采用自己写个程序,能自动修改PE/ELF文件,自动嵌入汇编代码的方式,能从高级语言的视角去看整体的改进,所以即使改动很大,从思维上也能控制整个程序的改进,不会版本错乱,而且降低修正某bug带来新bug的可能性
|
能力值:
( LV13,RANK:970 )
|
-
-
12 楼
从你文章里仍然看不到前面5点问题的处理方法。
不过如果能实现你说的那个高级视角上的汇编代码修改,是比较牛的。佩服一下。
|
能力值:
( LV13,RANK:970 )
|
-
-
13 楼
拿不到server情况下让server崩溃这个我绝对承认,但如果拿不到server仍能搞个shellcode过去拿到权限,这就比较深邃了,没听说过这么高级的人物。
|
能力值:
( LV13,RANK:970 )
|
-
-
14 楼
你说你改改汇编码就完成那些问题了,我觉得还是有点诡异。
别的不说,光说那个穿墙加速吧。
穿墙加速问题的处理肯定在服务器,客户端是没用的。
要对付穿墙,你肯定要检测障碍,检测障碍首先就是个麻烦事,理想情况下,你要读取障碍图,对获取到的移动坐标点进行障碍判断,如果是3D地图,更麻烦了,不过你的xw貌似是2D的,这倒问题不大。你就算不采用检测数据流的办法,也要去读取数据库,也是个麻烦事;
其次是加速,判断加速要判断移动距离和时间,考虑到网络间隔,几个不同时段的数据会同时涌入的情况,你要加大时间间隔判断,这也是麻烦事。
这些东西我不是说无法实现或者是实现多复杂,但你说的改改二进制就行了,也太诡异了,调试一周+修改一周搞出来,再处理bug,我觉得光这个功能就起码半个月。你说你用工具改改几下就行了,是不是有点夸大其辞了?
|
能力值:
( LV3,RANK:20 )
|
-
-
15 楼
韩国开发团队的软件工程效率很高,政 府也出面组织引擎共享,代码复用,所以,如果你逆向了多个韩国游戏,你会发现他们的代码复用率很高,当然,正如我们调侃某人考试作弊一样:“你抄就抄了,怎么把别人名字也写在自己考卷上了?”是的,多数韩国游戏连bug都很相似。
看完我之前说的这句话,你应该有思路了吧?不好意思,不能说太细了。
|
能力值:
( LV3,RANK:20 )
|
-
-
16 楼
20年前,我听说牛人把游戏改了,从最后1关开始打,倒着打到第一关,也以为是不可能实现的事情。
你可能觉得我的文章没贴出大段的汇编不过瘾,但你不觉得我文章的思路比大段汇编更有意义吗?
有些Idea,不是我1个人的,况且我要保护我客户的利益,所以我不可能贴出具体汇编或具体解决方法。不用激将,我有原则。
而且我也没说这个项目做了多长时间完成。我更没有说“用工具改改几下就行了”。不知道是不是你搞错了?我通篇都没说这个任务很轻松,恰恰相反,我说了需要改动的地方太多,如果用UltraEdit手工改,很累,所以我自己写了工具,提高效率。提供1个思维与大家共享。
有时候,换个思维思考问题,我们不能仅仅满足于现有的现成的一些工具,像IDA,OD,SoftICE,ExeScope,ImportREC。
其实,用工具的人,和写工具的人视野是完全不一样的。
当我们自己会写这些工具的时候,你会发现有很多“不可能完成的任务”也有可能完成了。
|
能力值:
( LV13,RANK:970 )
|
-
-
17 楼
我一点也不觉得那大段汇编对我有哪怕一点的作用和吸引力,你要这么认为的话我没啥好说的了。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
应该是个精品的文章,呵呵,楼上的朋友,楼主主要表达的是解决的思路。
|
能力值:
( LV4,RANK:50 )
|
-
-
19 楼
对楼主的那个工具比较的好奇~
|
能力值:
( LV3,RANK:20 )
|
-
-
20 楼
你可能觉得“改改二进制”,改不出什么名堂,不能加太多功能进去,所以觉得要么是我夸大了bug,要么就是在吹牛,没能力改那么多地方。
根据我程序的统计,每个函数精简后,可以cut掉4%到16%不等的大小。假设文件为2M呢,3M呢?你想想看,能不能实现复杂功能,够不够实现?
希望本案例能改变你的思路。
|
能力值:
( LV13,RANK:970 )
|
-
-
21 楼
那的确是比较牛的,佩服。
|
能力值:
( LV4,RANK:50 )
|
-
-
22 楼
不会是4f吧
正常来说开发公司只充许你提交bug然后等待他们修复
做为代理公司是不充许修改服务器程序的
|
能力值:
( LV3,RANK:20 )
|
-
-
23 楼
X是个韩国游戏,得过很多奖项,据公开资料,其几年前的代理费为500万美元。韩国开发团队的软件工程效率很高,政 府也出面组织引擎共享,代码复用,所以,如果你逆向了多个韩国游戏,你会发现他们的代码复用率很高,当然,正如我们调侃某人考试作弊一样:“你抄就抄了,怎么把别人名字也写在自己考卷上了?”是的,多数韩国游戏连bug都很相似。
从他们代码复用的角度来说,有些bug,是他们这些软件工程中的蓝领工人解决不了的,已经超出了他们知识范畴了。所以我们经常发现,韩国合作伙伴改bug的能力非常低,1个bug几年都改不了也是正常的。
|
能力值:
( LV4,RANK:50 )
|
-
-
24 楼
1:对指定bin程序(PE/ELF都可)中某Section一定范围内的汇编程序自动做优化调整。该删的删、该插的插,优化后的汇编指令直接向前靠,同时能修正相对jmp/call/内存引用
能做到这点太牛了,佩服LZ 虚函数也自动的吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
我猜只是针对函数挨个进行调整,如果整体代码处理感觉工作量挺大还容易失误
|
|
|