能力值:
( LV6,RANK:90 )
26 楼
认真学习下。水平太菜了,看的不大懂
能力值:
( LV3,RANK:20 )
27 楼
虚函数,及jmp table也可处理,但目前空间已够,所以没有进一步的调整。
举个例子来说,假设funcA省出的空间为freeA,100个字节,funcB省出的空间为freeB,200个字节,我们可以在freeA放95个汇编指令,接着1个长jmp跳到freeB,还可以再放入195个汇编指令,经过这么操作,完全没有必要将原程序所有定位都打乱。
(当然,以上操作不是手工完成的,是程序完成的,如果手工完成的话,我非疯了不可)
能力值:
( LV13,RANK:970 )
28 楼
不可否认您的做法大大改善了我们的思维,拓展了我们的视野,犹如雪地里的一颗奇芭明亮了我的双眼。但你仍然没说这么做的必要性,宁肯在文件里改300处,也不多加一个section或一个dll,难道彪悍的人生是这么诠释的么?
能力值:
( LV7,RANK:100 )
29 楼
在我看来,楼主是吹的
能力值:
( LV2,RANK:10 )
30 楼
我也有同样的问题,为什么要300处,而不加一个Dll或so呢?以楼主功底让代码多执行一段加载代码根本不成问题的啊?
能力值:
( LV13,RANK:530 )
31 楼
mov eax,eax
lea esi,[esi+0]
很早就讲过了,这是编译器优化的边际对齐代码,优化处理器缓存用的。
楼主自作聪明了吧。
当然了,仅仅是为了minimize binary size就当我没说。
能力值:
( LV3,RANK:20 )
32 楼
[QUOTE=foxabu;756323]mov eax,eax
lea esi,[esi+0]
很早就讲过了,这是编译器优化的边际对齐代码,优化处理器缓存用的。
楼主自作聪明了吧。
当然了,仅仅是为了minimize binary size就当我没说。[/QUOTE]
呵呵,我知道,align
能力值:
( LV3,RANK:20 )
33 楼
那你吹一篇给大家看看吧。
能力值:
( LV3,RANK:20 )
34 楼
这位老兄,
1:我已经说了“空间足够,没必要加Section”了
2:这近300处改动,是分布在20多个函数里的,和我直接HardCoding在里面比起来,你用dll,对整个事情有什么提高,对工作效率提高多少?没有。
3:即使用了dll或so,不还是照样需要WriteProcessMemory吗?和我直接HardCoding在bin里,有什么区别吗?有什么提高吗?没有。
不可否认,在改动很小的情况下,例如只改动个3,5处(爆破),UltraEdit很好用。
在改动的函数很少,而改动的代码很多的情况下,例如改1个函数,为其增加100K内容,那么写个dll或so,很好用。
但本案例说的是改动很多,而且改动点分布在很多个函数,并且有足够空间的情况,所以,请大家注意这个大环境前提。
能力值:
( LV4,RANK:50 )
35 楼
现实生活中未曾见过如此巨牛,bin里面直接几百几百的写,膜拜彪悍之人生
能力值:
( LV3,RANK:20 )
36 楼
假如你仔细看我的文章及回复的话,你会发现“我已经说了这么做的必要性”
能力值:
( LV2,RANK:10 )
37 楼
仔细看了也没明白
我的理解,你现在的工作
1.腾空间
2.处理jmp push call相关出错的代码
3.修改300多处代码依次填充到挤出来的空间中间零碎的用jmp连接起来
对么?
如果是加个section
1.加section
2.修改300多处代码并填充到section里
哪个工作量大?
能力值:
( LV3,RANK:20 )
38 楼
OK,那请你说说,假如你增个Section,添加该添加的代码,修改该修改的代码的具体步骤,用什么现成软件,假如是自己写的,说出大概流程(不用程序代码)。
能力值:
( LV2,RANK:10 )
39 楼
呃,linux下不会,win下的话加个节表比缩减移动程序代码要简单吧,lordpe就可以加啊
自己写也不麻烦,加大pe尺寸,修正下pe头的几个值就可以了,一共连读写pe也就几十行代码
然后把要改的代码统一弄到这个section,把你那300多处加个jmp挨个跳过去就行了,这样对程序本身改动很小,比大范围挪动程序代码要安全易用的多吧
能力值:
( LV2,RANK:10 )
40 楼
从这点我可以发现这个游戏的名字,是不是韩国的《挑战》?我也架设过windows上这个游戏的私服,问题确实很多。正如楼主所说,当时甚至把很多功能直接放到客户端上了,服务端都不验证。。我是菜鸟如何解决,我就不知道了
能力值:
( 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
假如说你每个函数的空隙太小,一段代码要分成很多块跳来跳去,这样是不是要比完整的把这一段代码顺利的执行下来要效率低?
能力值:
( LV7,RANK:100 )
42 楼
这个就像XX的时候,有的喜欢X上面,有的喜欢X下面,还有的兄弟喜欢X后面。不奇怪啊,关键是要X得高兴~~~
能力值:
( LV3,RANK:25 )
43 楼
好久没见过这么烂的技术了
能力值:
( LV9,RANK:970 )
44 楼
我是来看nbw的
能力值:
( LV13,RANK:970 )
45 楼
给PE文件增加大小,网上很多工具,我5年前用汇编写过一个,你需要的话我给你翻翻老文件。
大体思路就是首先用 SetEndOfFile 函数在文件最后面添加需要的空字节数,然后根据添加的字节内容,修改相应的PE节区。修改节区的时候,可以新增一个节区信息,也可以修改以前节区属性。
不过这都是传统思路,对你这种讲究效率的高手来说,用你的UE打开文件,进入16进制编辑模式,转到文件最后,手工输入00,想输多少输多少,然后保存,关闭,搞定!
linux下的文件没研究过,不过原理应该差不多。虽然说server有np保护,但考虑到你都任意在文件里进行优化了,我也就不说np下修改文件的问题了。
能力值:
( LV13,RANK:970 )
46 楼
挑战应该是D游戏,X游戏应该是GY旗下的Q版巨作。
能力值:
( LV2,RANK:10 )
47 楼
厉害厉害,,一个个都非同小可啊
能力值:
( LV2,RANK:10 )
48 楼
任重道远 可以这样用啊
能力值:
( LV2,RANK:10 )
49 楼
啥游戏,热血江湖么?我做过这游戏的变态外挂,不过已经不玩了。
能力值:
( LV3,RANK:20 )
50 楼
关于优化的问题,我想起上大学的时候,那时候的论调好像是说直接拿汇编写比用高级语言写效率要高的多,后来很多年我也坚信这一点。又后来,读了K8的书,才知道,CPU的指令集那么复杂的,其实大部分的编译器对代码的优化都比手工写汇编代码要好的多,而且好的还不是一点点。