游侠NETSHOW论坛

标题: CE修改器“熟练度1000倍”作者请进 [打印本页]

作者: 自由之民    时间: 2009-12-21 20:02:57     标题: CE修改器“熟练度1000倍”作者请进

麻烦你把原始发布帖找出来。谢谢。
作者: kaienfr    时间: 2009-12-21 21:16:10

熟练度最多也就50,对应具体数值是49000,这1000倍何解

[ 本帖最后由 kaienfr 于 2009-12-21 21:19 编辑 ]
作者: 自由之民    时间: 2009-12-21 21:17:50     标题: 回复 #2 kaienfr 的帖子

应该是增长率1000倍。但那个修改器文件就那么叫的。

[ 本帖最后由 自由之民 于 2009-12-21 21:34 编辑 ]
作者: didi629    时间: 2009-12-21 21:18:42

那岂不是杀一个武将就50了?.....20字20字
作者: kaienfr    时间: 2009-12-21 21:20:59

原帖由 自由之民 于 2009-12-21 21:17 发表


应该是增长率1000倍。但那个修改器文件就那么叫的。


修改器直接改熟练度好了,干嘛那么麻烦
作者: 自由之民    时间: 2009-12-21 21:27:01

原帖由 didi629 于 2009-12-21 21:18 发表
那岂不是杀一个武将就50了?.....20字20字



是啊。很有趣吧。XD

原帖由 kaienfr 于 2009-12-21 21:20 发表


修改器直接改熟练度好了,干嘛那么麻烦



那东西出得相当早。
作者: kaienfr    时间: 2009-12-21 21:33:48

原帖由 自由之民 于 2009-12-21 21:27 发表

是啊。很有趣吧。XD

那东西出得相当早。


可是目前这种ORZ修改器满天飞的年代,也没有多少价值了。
想杀一人熟练度1000倍也容易,修改杀人后熟练度增长的代码,改成把增长值*1000倍再写内存就OK了,长一次也差不多就溢出了,何必呢~~
这么不安全的补丁我不会取用的,早期的话想法不错,现在还是用保险点的好。

[ 本帖最后由 kaienfr 于 2009-12-21 21:37 编辑 ]
作者: 自由之民    时间: 2009-12-21 21:38:19

原帖由 kaienfr 于 2009-12-21 21:33 发表


可是目前这种ORZ修改器满天飞的年代,也没有多少价值了。
想杀一人熟练度1000倍也容易,修改杀人后熟练度增长的代码,改成把增长值*1000倍再写内存就OK了,长一次也就溢出了,何必呢~~
这么不安全的补丁我不会取用的 ...


虽说是这么回事,不过,我想还是找出来得好。况且,那个修改器也不溢出,还是有可取之处的。
作者: kaienfr    时间: 2009-12-21 21:42:18

原帖由 自由之民 于 2009-12-21 21:38 发表


虽说是这么回事,不过,我想还是找出来得好。况且,那个修改器也不溢出,还是有可取之处的。


看下面的分析发现,游戏里有判断保护机制,超过最大值49000就不再增加熟练度了,改的好了应该很安全。

[ 本帖最后由 kaienfr 于 2009-12-21 21:59 编辑 ]
作者: kaienfr    时间: 2009-12-21 21:49:24

你想要的话我告诉你好了,看这里

004784D3 - cmp ecx,0000bf68  <--这里判断熟练度是否49000 即bf68
004784D9 - jae 004784eb   <- 如果超过49000就不执行增长操作
004784DB - pop edi
004784DC - mov [esp+08],eax
004784E0 - mov [esi],ecx   <--这里就是杀人后熟练度增长的代码

怎么改不需要我说了吧
作者: kaienfr    时间: 2009-12-21 22:18:45

补充一下,跟了一下发现,
004784BF - mov eax,[esp+10] <- 这里是熟练度增长值,每次熟练度增长2
004784C3 - push edi
004784C4 - mov edi,edx
004784C6 - cdq
004784C7 - add ecx,eax  <- 这里把增长值和原来的熟练度加在一起
004784C9 - mov eax,edi
004784CB - adc eax,edx
004784CD - test eax,eax
004784CF - ja 004784eb
004784D1 - jb 004784db
004784D3 - cmp ecx,0000bf68  <- 从这里开始前面已经解释过了
004784D9 - jae 004784eb
004784DB - pop edi
004784DC - mov [esp+08],eax
004784E0 - mov [esi],ecx

可见熟练度应该是个偶数。从0每次增长2,直到49000最高级。
可问题是,如果每次增加1000还行,但是如果每次增长1000倍,即增长2000,那么就可能冲不满熟练度。
因为2000不能整除49000。所以建议还是不要想增长1000倍的事儿了。

[ 本帖最后由 kaienfr 于 2009-12-21 22:23 编辑 ]
作者: kaienfr    时间: 2009-12-21 22:51:18

你要是找来做汇总收藏贴的话,我支持你,都是作者的辛苦劳动,绝对应该肯定,鼓励和支持。
如果你要找来自己用的话,我个人并不建议,你不如用CE自己改一下,杀一人50熟练度满,很容易的。
给你现成的例子, 改成如下代码即可
004784BF - mov ecx,0000bf68
004784C4 - push edi
004784C5 - mov edi,edx
004784C7 - cdq
004784C8 - nop
004784C9 - mov eax,edi
004784CB - adc eax,edx

杀一人就自动满50熟练度了。
作者: sunli_1985    时间: 2009-12-21 23:29:26

那个修改器是我做的。。请问朋友有什么问题吗??那个是我看别人要的,顺手改给别人的。。所以不是开的帖子。。我也做了不少的。。但是都是回帖的时候贴出来。。
我这里还有一个比较好的。。不知道你有没有兴趣。。按一下F10能有一下效果。
锁定战场速度,攻击力和防御的三个灯。
锁定无双。
锁定全部特技20。
锁定经验值和熟练度3倍。
锁定升级武将和合成武器都不会减少经验值。。

我自己用的。。

[ 本帖最后由 sunli_1985 于 2009-12-21 23:40 编辑 ]
作者: 自由之民    时间: 2009-12-21 23:50:45

原帖由 kaienfr 于 2009-12-21 21:49 发表
你想要的话我告诉你好了,看这里

004784D3 - cmp ecx,0000bf68   


本来就是想问问他的思路,看比我想的完善在哪儿。
既然这样,那干脆就讨论代码好了。

我就是从004784E0 直接跳转的。
每次加1000,乘255都能实现。
如果想要不越界,也确实需要和49万比较。
更确切地说,不超过491000,游戏就会自己控制好。

[ 本帖最后由 自由之民 于 2009-12-22 01:11 编辑 ]
作者: 自由之民    时间: 2009-12-21 23:51:36

原帖由 sunli_1985 于 2009-12-21 23:29 发表
那个修改器是我做的。。请问朋友有什么问题吗??那个是我看别人要的,顺手改给别人的。。所以不是开的帖子。。我也做了不少的。。但是都是回帖的时候贴出来。。
我这里还有一个比较好的。。不知道你有没有兴趣。。按一下F ...



多谢了,我想问的是,你在控制49万,50级上有没有其他方法可以指点一二。
有发布帖的话,也可以让版主看看。
作者: sunli_1985    时间: 2009-12-22 00:03:39

我自己都是个修改器新手,,能给你帮助估计没什么。。
不过我不是在004784E0这里下文章的。。看寄存器,在这里是把得到的熟练度加到自己的熟练度的语句上。
我用od追踪上一层找到这里0047A21F是写入得到多少熟练度的。。我就把他翻倍了。。
我真的很菜,本身就不是搞软件的。。我这个地方连翻倍都不会。还是问了别人用了一个函数来翻倍的。
我还想请教,怎么翻一个固定的倍数?

[ 本帖最后由 sunli_1985 于 2009-12-22 00:06 编辑 ]
作者: xmengmeng    时间: 2009-12-22 00:14:05

http://game.ali213.net/redirect. ... 26&ptid=3001246
原帖在这里.....
8过1985兄没有开新帖.==
作者: sunli_1985    时间: 2009-12-22 00:20:46

原帖由 xmengmeng 于 2009-12-22 00:14 发表
http://game.ali213.net/redirect. ... 26&ptid=3001246
原帖在这里.....
8过1985兄没有开新帖.==

这个没有熟练度的。。另外还有个帖子。。有个朋友说熟练度练起来太慢,问有没有办法。。我就把自己写的改了一下给他了。。不知道是哪个帖子了。。自己用的是3倍经验值熟练度。。。比正常快,但是不变态。。1000倍就是刷董太师和孟获今川义元这种人物用的了。。

[ 本帖最后由 sunli_1985 于 2009-12-22 00:22 编辑 ]
作者: xmengmeng    时间: 2009-12-22 00:26:58

http://game.ali213.net/viewthrea ... 29548846pid29548846
这里。
作者: 自由之民    时间: 2009-12-22 00:33:12     标题: 回复 #16 sunli_1985 的帖子

我也是刚接触这个,只学了一点CE的使用。
你这个比我高级多了。

我jmp之后,直接就是对004784E0 到004784E3 处的寄存器加1000或者乘255。
结果会造成越界,出现超过50级49万熟练的情况。
有需要重新考虑写新的比较来解决这个问题。

[ 本帖最后由 自由之民 于 2009-12-22 01:11 编辑 ]
作者: 自由之民    时间: 2009-12-22 00:41:27

原帖由 xmengmeng 于 2009-12-22 00:26 发表
http://game.ali213.net/viewthrea ... 29548846pid29548846
这里。



多谢xmm!
作者: kaienfr    时间: 2009-12-22 07:36:10

越界判断本来程序就有的,看我#10楼的解释。
程序默认每次增加2熟练度,这个跟踪调试一下就知道了,看我#11楼的说明。
想修改又不越界就不要在004784D3之后跳,具体看我#12楼的例子。
作者: DivXman    时间: 2009-12-22 11:18:03

原帖由 sunli_1985 于 2009-12-22 00:03 发表
我自己都是个修改器新手,,能给你帮助估计没什么。。
不过我不是在004784E0这里下文章的。。看寄存器,在这里是把得到的熟练度加到自己的熟练度的语句上。
我用od追踪上一层找到这里0047A21F是写入得到多少熟练度的。。我 ...

以新手就开始dbg、设堆栈、设triger来玩一个小功能,已经说明了你的层次比那些爱瞎掰的草包高出好几倍。请问师承何处?

原帖由 kaienfr 于 2009-12-22 07:36 发表
越界判断本来程序就有的,看我#10楼的解释。
程序默认每次增加2熟练度,这个跟踪调试一下就知道了,看我#11楼的说明。
想修改又不越界就不要在004784D3之后跳,具体看我#12楼的例子。 ...

我也是个新手,只说一句:你暂时还没看清 自由之民 出错的环节在那里 :-)

[ 本帖最后由 DivXman 于 2009-12-22 11:54 编辑 ]
作者: 19851221zhou    时间: 2009-12-22 11:25:18

增长率1000倍
作者: 自由之民    时间: 2009-12-22 12:19:13

原帖由 kaienfr 于 2009-12-22 07:36 发表
越界判断本来程序就有的,看我#10楼的解释。
程序默认每次增加2熟练度,这个跟踪调试一下就知道了,看我#11楼的说明。
想修改又不越界就不要在004784D3之后跳,具体看我#12楼的例子。 ...


唉……我跳晚了。
刚开始学,什么都不会……
作者: sunli_1985    时间: 2009-12-22 13:37:19

原帖由 DivXman 于 2009-12-22 11:18 发表

以新手就开始dbg、设堆栈、设triger来玩一个小功能,已经说明了你的层次比那些爱瞎掰的草包高出好几倍。请问师承何处?

我是标准的草包,我是自己找到了一些内存,就是那些R键特技,然后用这个跟人家换的。。就是3dm那个寂寞什么的。。他不是也在3dm发了一个R键特技修改器吗?呵呵。。
还有bwmouse,主要是他教我点。。
作者: kaienfr    时间: 2009-12-22 15:19:17

原帖由 DivXman 于 2009-12-22 11:18 发表

以新手就开始dbg、设堆栈、设triger来玩一个小功能,已经说明了你的层次比那些爱瞎掰的草包高出好几倍。请问师承何处?


我也是个新手,只说一句:你暂时还没看清 自由之民 出错的环节在那里 :-) ...


看了我的回复应该这样理解,条条大路通罗马。其实你改代码也行,通过堆栈改寄存器数值也行,直接改内存数值也行。改代码的话,想跳转前改代码也行,跳转后你改也行,想自己补代码实现也行,怎么都行啊。
我仅仅是给出一种不会担心越界问题的简单实现方案,其实知道关键地址和代码处后,想怎么改就怎么改。
你也可以忽略程序自身的判定方式,自己加段代码判定一下是否越界,这样可以完全无视偶数增长规则,还不用担心越界的问题。你也可以把界调高,调低,把增长值调大,调小。
值得注意的是,如果你要调界的话,修改的时候要小心调试一下。也许程序不仅仅一处代码处理熟练度,会有其他暗桩。具体如何要调试一下才能知道了。一句话,要小心谨慎。
难得遇到问修改技术问题的,所以热情的参与交流一下,说说自己的看法,干嘛楼上各位都在抱怨自己新手不新手的呢,新手如何,老手又如何。闻道不论先后,学习实践的多了自然技术能力就强了。
你们都乐于交流,这是很好的现象,我最缺乏的大概就是这个了,我实在太忙了,没时间经常上网,最近几天才因大蛇Z上来聊聊,看看中文版动态什么的。过完圣诞就又忙起来了,玩游戏的时间都没有了。残念啊~~

[ 本帖最后由 kaienfr 于 2009-12-22 18:10 编辑 ]
作者: kaienfr    时间: 2009-12-22 17:37:00

原帖由 自由之民 于 2009-12-22 00:33 发表
我也是刚接触这个,只学了一点CE的使用。
你这个比我高级多了。

我jmp之后,直接就是对004784E0 到004784E3 处的寄存器加1000或者乘255。
结果会造成越界,出现超过50级49万熟练的情况。
有需要重新考虑写新的比较 ...


请问 DivXman 您说的我没看出 自由之民 出错所在具体是指什么呢?
上面自由之民的回复意思很明白,他从写内存的地方004784E0 jmp到自己的代码,对寄存器的值做修正,然后再跳回来继续执行,这是最常见补代码方式了。
问题所在只是因为,这个程序中,ecx的值放得就是熟练度,而ecx的赋值和判定越界的操作都在004784E0这条指令之前执行的(我上面都注释解释过了)。因为他自己的那段代码中少了越界的判定语句,所以才出现可能越界的问题。如果添加了这条语句自然可以没有问题。这我在前面都提示过了。

所以我才会建议在越界判定前,在ecx复制那里修正代码,这样修改起来更简单一些。难道您不这么认为吗?
当然,您可能想通过堆栈跟踪来直接定位代码,然后修改寄存器的值,这样就不需要对代码本身做修正,很安全的思路,外挂里也很常用。但是过程就比较复杂了,
我要解释如何实现这个过程岂不是要写很长。而且要是大家看不懂岂不是白说了。所以才会尽量说些简单易懂,容易操作的方法。

当然修改方法是很多的,如果DivXman有什么其他高见,不妨说出交流一下。不要说些隐晦的语句,让别人理解不了您的真是用意。
作者: kaienfr    时间: 2009-12-22 17:46:31

原帖由 sunli_1985 于 2009-12-22 00:03 发表
我自己都是个修改器新手,,能给你帮助估计没什么。。
不过我不是在004784E0这里下文章的。。看寄存器,在这里是把得到的熟练度加到自己的熟练度的语句上。
我用od追踪上一层找到这里0047A21F是写入得到多少熟练度的。。我 ...


sunli回答的也很实在,也就是前面我说过的其他的修改思路很多,能多一些这种想法和思路,拿出来交流才是好样的
翻倍可以通过mul乘法指令实现
格式: MUL OPRD  
OPRD为源操作数,即作乘数. 目的操作数是隐含的,即被乘数总是指定为累加器AX或AL的内容.
16位乘法时,AX中为被乘数.8位乘法时,AL为被乘数.当16位乘法时,32位的乘积存于DX及AX中;8位乘法的16位乘积存于AX中.
操作过程: 字节相乘:(AX)<--(AL)*OPRD,当结果的高位字节(AH)不等于0时,则CF=1、OF=1.
作者: 3413377    时间: 2009-12-22 18:11:43

作为一个博派。。。我感觉压力很大。。。而且智商随着此贴楼层的升高而不断降低。。目前直接跌破0 了。。。
作者: 自由之民    时间: 2009-12-22 18:12:21

谢谢各位前辈高人的指教。
确实拓宽了我的思路。
很高兴能有机会向各位学习!希望还能继续交流技术问题。
作者: kaienfr    时间: 2009-12-22 18:22:04

原帖由 3413377 于 2009-12-22 18:11 发表
作为一个博派。。。我感觉压力很大。。。而且智商随着此贴楼层的升高而不断降低。。目前直接跌破0 了。。。


你不是程序爱好者,所以无需介意。
参与这贴里回复的人都是已经有些基础的。

原帖由 自由之民 于 2009-12-22 18:12 发表
谢谢各位前辈高人的指教。
确实拓宽了我的思路。
很高兴能有机会向各位学习!希望还能继续交流技术问题。


不用客气,能交流是好事,可惜很难见到这类讨论帖子。我们也都是一点点自己摸索才积累起来的。
我这5年间都很少接触程序了,毕竟不是我的正业,只能算业余爱好,所以交流的机会更少了。相信这几年也一定有很多新技术,和厉害的牛人。有时间有机会也要好好学习一番~
PS: 自由之民兄看你签名是游侠剑阁工作组组长。高人啊~ :)

[ 本帖最后由 kaienfr 于 2009-12-22 18:25 编辑 ]
作者: ey1011    时间: 2009-12-22 23:02:46

                  同30楼




欢迎光临 游侠NETSHOW论坛 (https://game.ali213.net/) Powered by Discuz! X2