注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 太阁立志传5·绯红之章·人间五十年 太阁5脱壳版本CE6.4存档CT修改脚本交流(2018年2月2日更 ...
楼主: wangzc2009
打印 上一主题 下一主题

[分享] 太阁5脱壳版本CE6.4存档CT修改脚本交流(2018年2月2日更新,欢迎测试) [复制链接]

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
61#
发表于 2015-7-8 14:27:53 |只看该作者
wangzc2009 发表于 2015-7-7 22:42
例如古代三十斤为钧,四钧为石,是重量单位.粮食论斗,是容量单位;因为十斗粮食的重量大致相当于一石,所以粮 ...

有办法去除给上司交钱的字节限制么,理论上可以把这个上限提高,但系统只默认mod65536后的余数。
已有 1 人评分人气 收起 理由
wangzc2009 + 1 我猜想是and eax 0000ffff实现的

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
62#
发表于 2015-7-9 00:03:17 |只看该作者
本帖最后由 wangzc2009 于 2015-7-9 17:53 编辑
bhima 发表于 2015-7-8 14:27
有办法去除给上司交钱的字节限制么,理论上可以把这个上限提高,但系统只默认mod65536后的余数。
...

我找了个极其做死的方法给上司交军资金。。。。。由于算盘菜单输入限制最多1百万(这个如果修改的话不晓得要多少代码)。。。。。。。。。我的方法非常繁琐。。。。而且主角身上钱不够时,照样可以上交1百万。。。。。。

你可以玩玩。。。由于卡,再由于主角身上钱不够照样可以送1百万贯,。。。所以这个脚本当成搞笑的脚本。不送给所有人了。。。。你看看乐一乐吧!


刚尝试了输入50万。。。结果上交0.。。。。。然后尝试输入5万,结果上交了1百万。。。。。看来这段程序我读糊涂了。。。。。

这断点不好下。。。。我下的断点断后,在那一直打转。。。好像这个地方调用的非常多。头疼死了。

你有啥好的提示没?我读00614b40这开始的函数转晕了头。。。



我已经决定把你说的这个上交军资金上限限制6万贯。。。。以及crispnut说的改改军团长最大带兵数  这2项当自己最近折腾OD练手。。。。。。。。由于本人是挤时间折腾。所以不能保证啥时候折腾好。如果你有好的信息点提示,最好能交流给我。


以下是我找到断点。。。。其中0f4240(1百万)都是我修改后的。原始的是EA60(6万)

Breakpoints
地址       模块       激活                       反汇编                                注释
004E69A0   Taikou5    已禁止                        PUSH 0F4240
0061593B   Taikou5    已禁止                        CMP EDX,0F4240
00615941   Taikou5    已禁止                        MOV ESI,0F4240
00615C1D   Taikou5    已禁止                        CMP ESI,0F4240
00615C25   Taikou5    已禁止                        MOV ESI,0F4240


正如你说的。如果把以上5个位置改为我上面所示的。。。那么可以正常输入主角身上的钱。。。。。但是数值好像变化了。我输入98000贯,实际变成32464贯。




这是我找到的可能是军团长带兵的4000数值的代码参考点。。。。也交流给你一些提示。。。。。我属于慢慢玩的性质。。。不见得立刻动手搞定。实际上面的交军资金还没搞定呢。。。。。你也给我一些提示的好。

00461AD9   这个call之前的edi数值值得重视。。。以及进入了call里可能有用。。。    (目前我跟踪到出征前开战前分配兵力部分)


以下断点都是跟交军资金有关的FFFF
Breakpoints
地址       模块       激活                       反汇编                                注释
004E525E   Taikou5    已禁止                        MOV WORD PTR DS:[730924],0FFFF
004E69A0   Taikou5    已禁止                        PUSH 0F4240
0051E526   Taikou5    已禁止                        CMP ESI,0FFFF
005789C4   Taikou5    已禁止                        MOV EAX,0FFFF
0057B018   Taikou5    已禁止                        MOV DWORD PTR DS:[ESI+7C],0FFFF
0057B072   Taikou5    已禁止                        MOV DWORD PTR DS:[ESI+80],0FFFF
0057E5BE   Taikou5    已禁止                        MOV EBX,0FFFF
0057E68B   Taikou5    已禁止                        CMP WORD PTR DS:[EAX+ECX*4],0FFFF
0057E69A   Taikou5    已禁止                        MOV EAX,0FFFF
0057E6BF   Taikou5    已禁止                        CMP AX,0FFFF
0057E85E   Taikou5    已禁止                        CMP ESI,0FFFF
0057E8ED   Taikou5    已禁止                        MOV EAX,0FFFF
005F7F99   Taikou5    已禁止                        MOV WORD PTR DS:[730924],0FFFF
005FBC07   Taikou5    已禁止                        CMP WORD PTR DS:[ECX+4],0FFFF
0061593B   Taikou5    已禁止                        CMP EDX,0F4240
00615941   Taikou5    已禁止                        MOV ESI,0F4240
00615B4D   Taikou5    已禁止                        CMP WORD PTR DS:[EAX+4],0FFFF
00615C1D   Taikou5    已禁止                        CMP ESI,0F4240
00615C25   Taikou5    已禁止                        MOV ESI,0F4240
00615E05   Taikou5    已禁止                        CMP WORD PTR DS:[EBX+4],0FFFF

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

杨旭辉
『光荣游戏区』
游侠剑阁工作组【制作】
元戎弩军
守护 剑客

版主勋章勤劳之证

帖子
1513
精华
2
积分
1328
金钱
616
荣誉
12
人气
515
评议
6

63#
发表于 2015-7-9 17:15:12 |只看该作者
希望能炸出潜水的大神
已有 1 人评分人气 收起 理由
wangzc2009 + 1 来了就加个你一个人气,我3分力最后一分了.

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
64#
发表于 2015-7-9 20:06:16 |只看该作者
wangzc2009 发表于 2015-7-9 00:03
我找了个极其做死的方法给上司交军资金。。。。。由于算盘菜单输入限制最多1百万(这个如果修改的话不晓得 ...

你说的就是我反映的情况,系统吞掉了65536的部分,怀疑可能系统这个数据是用双字节来存储的?

已有 1 人评分人气 收起 理由
wangzc2009 + 1 补上评分,我一天最多评分3次

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
65#
发表于 2015-7-9 21:28:15 |只看该作者
本帖最后由 bhima 于 2015-7-9 21:29 编辑
wangzc2009 发表于 2015-7-9 00:03
我找了个极其做死的方法给上司交军资金。。。。。由于算盘菜单输入限制最多1百万(这个如果修改的话不晓得 ...

查了几个and * 0000FFFF,地址都离这段比较远。不行也就算了。出兵兵力倒是小事,看看能不能突破带金和带粮的上限,这样配合连续攻城的补丁就可以长期作战了。

已有 1 人评分人气 收起 理由
wangzc2009 + 1 补上评分,我一天最多评分3次

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
66#
发表于 2015-7-9 22:15:41 |只看该作者
bhima 发表于 2015-7-9 21:28
查了几个and * 0000FFFF,地址都离这段比较远。不行也就算了。出兵兵力倒是小事,看看能不能突破带金和带 ...

00615B4D    66:8178 04 FFFF CMP WORD PTR DS:[EAX+4],0FFFF           //我下的断点位置
00615B53    0F84 42020000   JE Taikou5.00615D9B
00615B59    0FB640 0F       MOVZX EAX,BYTE PTR DS:[EAX+F]
00615B5D    6A 01           PUSH 1
00615B5F    50              PUSH EAX
00615B60    E8 8B310900     CALL Taikou5.006A8CF0
00615B65    83C4 08         ADD ESP,8
00615B68    84C0            TEST AL,AL
00615B6A    0F84 50010000   JE Taikou5.00615CC0
00615B70    8B4D 0C         MOV ECX,DWORD PTR SS:[EBP+C]
00615B73    8B7D F8         MOV EDI,DWORD PTR SS:[EBP-8]
00615B76    51              PUSH ECX
00615B77    E8 C4EFFFFF     CALL Taikou5.00614B40                            //此call  Taikou5.00614B40非常重要,几乎就是把军资金去掉高位的地方。。。。。其中ESI寄存器送的就是军资金值
00615B7C    8B53 14         MOV EDX,DWORD PTR DS:[EBX+14]
00615B7F    0FB742 04       MOVZX EAX,WORD PTR DS:[EDX+4]
00615B83    8B7D F0         MOV EDI,DWORD PTR SS:[EBP-10]
00615B86    0FB74F 12       MOVZX ECX,WORD PTR DS:[EDI+12]
00615B8A    8D0480          LEA EAX,DWORD PTR DS:[EAX+EAX*4]
00615B8D    D1E0            SHL EAX,1
00615B8F    33D2            XOR EDX,EDX
00615B91    F7F1            DIV ECX



据我所知。。。。还可以使用类似movzx  ??  WORD PTR ?? 的方式把高位舍去。。。。。。。这段代码实际就是搞鬼的地方,我几乎百分百确定了。。。但是我读call  Taikou5.00614B40。。。这个call跟进去,就被搞晕了。。。。因为里面好多好多call啊。。。。

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
67#
发表于 2015-7-9 22:17:22 |只看该作者
本帖最后由 wangzc2009 于 2015-7-9 22:42 编辑
bhima 发表于 2015-7-9 21:28
查了几个and * 0000FFFF,地址都离这段比较远。不行也就算了。出兵兵力倒是小事,看看能不能突破带金和带 ...

你会OD嘛?我现在关键是没时间沉下心,把这段代码详细读完。。。。。其实花上2,3个小时慢慢把这段代码读完。肯定就问题解决了。。。。


你看,这是下断后一路跟下来,跟到    00615b76这处时的值。。。。其中esi寄存器里的数值就是我上交的军资金98000
00759BE4    数据位置里的低4位7ed0就是真实上交上的军资金32464......而高位c3被舍弃。。。。麻烦的是这c3的来历搞不懂。



附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
68#
发表于 2015-7-9 22:35:25 |只看该作者
本帖最后由 wangzc2009 于 2015-7-9 22:45 编辑
bhima 发表于 2015-7-9 21:28
查了几个and * 0000FFFF,地址都离这段比较远。不行也就算了。出兵兵力倒是小事,看看能不能突破带金和带 ...

我62楼的脚本更新了。一共2个测试脚本。。。。。。这2个测试脚本是从2个方法。。突破输入军资金超过6万的。。。。你最好再下一次。。。。分别使用2个脚本。。这样可以看到跳转的不同情况。。。

其中测试1   输入军资金上限1百万。。。当时好像是做啥测试。。。非要输入军资金超过6万贯。所以一发疯就做了那个搞笑脚本。。。。这个脚本问题非常大。

测试2输入军资金是你身上的最大量的钱。     (这个脚本是分析了很长时间后,已经找到了大量的数据后做的。比较好      ) 目前的问题就是高位被吃的问题。。。。。


  比如我采用的是98000贯。。。。其实配合身上持有金上限。也可以实现1百万贯上交。。。。。。。当然这2个都是有问题的。。。。是通过这种主动弄出问题寻找函数的。。。。。我某天晚上鬼搞的搞笑脚本的。。。。主要目的就是为了实现输入超过6万。。。当然达到目标要求罢了。

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
69#
发表于 2015-7-10 17:22:59 |只看该作者
本帖最后由 wangzc2009 于 2015-7-10 18:43 编辑
bhima 发表于 2015-7-9 21:28
查了几个and * 0000FFFF,地址都离这段比较远。不行也就算了。出兵兵力倒是小事,看看能不能突破带金和带 ...

已经解决了。。。。可以上交军资金超过6万了。。。。把我跳疯了。。。。最后干脆天马行空,发挥想象,自己构造了一个修改器变量存储相关数值过的关。。。。完全无视其内部乱call  (只在显示前截取和实现前截取)


实际上是判断A是否大于6万。当大于6万时,存到我制造的paypublicmoney变量里,设置好标志位flag变量。。。。。。然后把A的低位2字节变为6万。。。高位不管。然后让程序运行!

显示时,判断一下直接显示paypublicmoney里的值。。。。这样其他的之类的东西都是系统按照6万贯后台跑的,并且计算军功之类的。。。。最后是往城里加。。。我再把paypublicmoney减6万贯后,再加上系统跑出来的结果。。。。。。。目前唯一的麻烦就是如果系统跑出来的结果达到城军资金最大值时,可能会数字继续往上涨。。。(算了,我继续纠正一下脚本。)

使用道具 举报

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
70#
发表于 2015-7-10 18:48:54 |只看该作者
本帖最后由 bhima 于 2015-7-10 18:54 编辑
wangzc2009 发表于 2015-7-10 17:22
已经解决了。。。。可以上交军资金超过6万了。。。。把我跳疯了。。。。最后干脆天马行空,发挥想象,自己 ...

其实我自己原先改过商人给大名的钱,那个里头就是可以过10w甚至百万的,并没有这种吞吃,不知道这个为什么不行。我把我的exe文件发给你看看。

附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分人气 收起 理由
wangzc2009 + 1 补上评分,我一天最多评分3次

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
71#
发表于 2015-7-10 18:53:14 |只看该作者
本帖最后由 wangzc2009 于 2015-7-10 19:03 编辑
bhima 发表于 2015-7-10 18:48
其实我自己原先改过商人给大名的钱,那个里头就是可以过10w甚至百万的,并没有这种吞吃,不知道这个为什么 ...

商人送大名的钱?。。。。麻烦了。。。我做的脚本是武将筹集军资金超过6万贯。。。。。。。我的断点你完全可以看脚本明白。。。一共是3个地方断下来取值。。。另外修改几个常量。


我大概粗略的看了一下,这个使用我的脚本没问题。。。。具体你修改了那些地方,以及为啥可不好找。     如果可能你能把你修改的用于送军资金地方说一说嘛?

使用道具 举报

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
72#
发表于 2015-7-10 19:00:33 |只看该作者
本帖最后由 bhima 于 2015-7-10 19:02 编辑
wangzc2009 发表于 2015-7-10 18:53
商人送大名的钱?。。。。麻烦了。。。我做的脚本是武将筹集军资金超过6万贯。。。。。
...

应该是一样的,都是要交出多少钱的选项。

我只是当时改的时候不知道是改了那些地方,我手里头没有原始版的脱壳,缺乏对照了。

附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分人气 收起 理由
wangzc2009 + 1 补上评分,我一天最多评分3次

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
73#
发表于 2015-7-10 19:12:11 |只看该作者
本帖最后由 wangzc2009 于 2015-7-10 19:18 编辑
bhima 发表于 2015-7-10 19:00
应该是一样的,都是要交出多少钱的选项。

我只是当时改的时候不知道是改了那些地方,我手里头没有原始版 ...

送你原版脱壳版本





我刚刚证实。。。送天皇钱还有10万贯上限。。。不过我们都不知道多送天皇钱有啥用?

有点头大。。。。难道要专门写个对比2个文件比特位的程序嘛?也不知道网上有啥现成的软件可以用?(网上程序浩如烟海,以前没想过要这么个软件工具。)
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
74#
发表于 2015-7-10 19:21:54 |只看该作者
本帖最后由 bhima 于 2015-7-10 20:04 编辑
wangzc2009 发表于 2015-7-10 19:12
送你原版脱壳版本

有点晕,我小对比了一下,至少有100处改过上限,算了,我先自己看看吧,多谢了。
已有 1 人评分人气 收起 理由
wangzc2009 + 1 补上评分,我一天最多评分3次

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
75#
发表于 2015-7-10 22:09:25 |只看该作者
本帖最后由 wangzc2009 于 2015-7-14 10:31 编辑
bhima 发表于 2015-7-10 19:21
有点晕,我小对比了一下,至少有100处改过上限,算了,我先自己看看吧,多谢了。
...

我头疼了。。。。刚查军团长4千兵力上限。。。。结果又是高位被吞。。。。


我输入8000兵力(1F40)。。。进去后变成3904兵力(F40)     这次是低比特12位!    估计这次又是要玩命的读代码了!

低位12位是兵力,高位4比特位是兵种。0001为骑兵,0010为铁炮兵,0011为大筒,0100为骑马铁炮




高4位代码标示兵种
0步兵,1骑兵,2铁炮,3大筒,4骑马铁炮,5是忍者 6小船,7大船,8铁甲船

攻城战:
人物名称(2字节)兵力 (2字节)士气(1字节)状态(1字节如bb为风林山火)部队位置(2字节)不明(1字节)不明(1字节)不明(2字节)特技数和总特技数(1字节)

野战
人物名称(4字节?)部队数量(2字节)士气和训练度(各1字节)buff加成状态(1字节)行动与否(1字节)战功(2字节)不明(2字节)特技/总特技数(1字节)特技持续回合/特技代码(1字节持续回合最大7,风林山火特技代码8)



以下是相关的断点
Breakpoints
地址       模块       激活                       反汇编                                注释
0040243A   Taikou5    已禁止                        ADD ESI,0FA0                          战斗过程中触发
0040BC6A   Taikou5    已禁止                        CMP EAX,0FA0                          兵力1
0041C5C3   Taikou5    已禁止                        SUB ESP,0FA0                          战斗中触发
0041E203   Taikou5    已禁止                        SUB ESP,0FA0                          开战就1号门位置触发
0066D053   Taikou5    已禁止                        SUB ESP,0FA0                          进入评定厅触发
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
76#
发表于 2015-7-11 13:37:31 |只看该作者
wangzc2009 发表于 2015-7-10 22:09
我头疼了。。。。刚查军团长4千兵力上限。。。。结果又是高位被吞。。。。

攻城兵突破限制没有意义吧,对手同样可以有这个优待啊。
已有 1 人评分人气 收起 理由
wangzc2009 + 1 补上评分,我一天最多评分3次

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
77#
发表于 2015-7-11 17:32:03 |只看该作者
本帖最后由 wangzc2009 于 2015-7-14 00:42 编辑
bhima 发表于 2015-7-11 13:37
攻城兵突破限制没有意义吧,对手同样可以有这个优待啊。

目前只是做各种调试,并不是一开始就实现,主要是跟数据跑一跑,看到底是咋回事!。。。。根据我调试结果。。游戏里兵力处理是这样的。。。把兵力内存A(2字节)通过屏蔽高4比特位得到的是实际兵力值。。。。。另外有内存B存储兵种是高比特4位。。。。。使用时,这A还要加上B得到结果C。。。。战斗过程中,C and低12比特位出来D兵力。弄出高4位E是兵种。。。


战斗结束后。D和E加起来的结果。再and出低12位比特位 F兵力 进入兵力池。也弄出高4位结合兵力 交还军用物资。。。




http://tieba.baidu.com/p/3876014907       这个链接是百度太阁立志传5吧里的我的更新帖。。。里面也扔进去了一些调试过程中的图片。。。。。我做调试程序一般不是一步调试到位,而是做很多猜想。然后验证猜想。。。尝试断到恰到好处的位置!



00462BB4    8B4D F0         MOV ECX,DWORD PTR SS:[EBP-10]
00462BB7    33D2            XOR EDX,EDX
00462BB9    66:8B54BD 94    MOV DX,WORD PTR SS:[EBP+EDI*4-6C]
00462BBE    33C0            XOR EAX,EAX
00462BC0    66:8B44BD 80    MOV AX,WORD PTR SS:[EBP+EDI*4-80]
00462BC5    66:C1E0 0C      SHL AX,0C
00462BC9    81E2 FF0F0000   AND EDX,0FFF                             ; 攻击据点前 和 派兵完开始攻城 注意着是去高位0FFF,主要下断,每次循环5次     edi从0到4,分别为军团长到第5部队
00462BCF    0BD0            OR EDX,EAX
00462BD1    66:8916         MOV WORD PTR DS:[ESI],DX




点滴记录游戏修改的过程。

经常游戏需要注入后,需先进行cmp判断。。。。。。但是这也导致了一些问题。

最典型的是假设程序本身行数为从1到1000行。。。其中我在第500行注入进行cmp判定。。。然后根据条件跳转。。。

假设现在有游戏程序本身就在第200行有cmp判定等于跳转。。。。这个判断假设后面跳转有多个位置。。。其中一个位置在第700行低于跳转。。。。。。最后结尾还有个高于跳转

可是因为在500行注入进行了cmp判定,结果标志位发生改变后,造成700行的判定也出问题。。。


查资料说。。。。

取标志指令LAHF
格式 ;LAHF
功能:将标志寄存器低八位的内容送给AH,
设置标志指令SAHF
格式:SAHF
功能:将AH的内容送给标志寄存器的低八位

标志寄存器的低8位是 CF PF AF ZF SF
而cmp影响的除上述5项外,还有OF溢出标志位。。。(问大家一下,cmp如何影响OF溢出标志位啊?)

解决方法如下。。。。目前还不晓得cmp关于OF溢出标志位触发而产生的情况。希望没那么巧合
pushad
mov eax,0
LAHF
push eax

这里时你要实现功能的代码段

pop eax
SAHF
popad



另外推荐使用pushf /popf    或者pushfd / popfd 完美解决这些问题



使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
78#
发表于 2015-7-14 10:33:09 |只看该作者
EAX=00007530
EBX=0000B545
ECX=0018FC8C
EDX=00000000
ESI=0018FAB0
EDI=00000005
EBP=0018F9E8
ESP=0018F9D4
EIP=004D8A1A

指针基址可能是 =0018FC8C

004D8A0E - cmp [ecx+18],eax
004D8A11 - je Taikou5.exe+D8A97
004D8A17 - mov [ecx+18],eax
004D8A1A - mov eax,[esi+70]
004D8A1D - movzx ecx,word ptr [eax+0C]

004D8A17    出征时输入出征兵力数。//断点




EAX=00000000
EBX=00000005
ECX=00000000
EDX=00004E20
ESI=0078972C
EDI=0018FC8C
EBP=0018FB7C
ESP=0018FB0C
EIP=004DB9A1

指针基址可能是 =0018FC8C

004DB995 - mov cx,[ebp-08]
004DB999 - mov [edi+0E],cx
004DB99D - mov [edi+0C],dx
004DB9A1 - mov [edi+0A],ax
004DB9A5 - mov edx,[esi]

004DB99D        出征时默认总兵力数值。//断点


以下为重要数据
00462BC9    81E2 FF0F0000   AND EDX,0FFF                             ; 攻击据点前 和 派兵完开始攻城 注意着是去高位0FFF,主要下断   //edx为兵力



以下是相关的断点
Breakpoints
地址       模块       激活                       反汇编                                注释
0040243A   Taikou5    已禁止                        ADD ESI,0FA0                          战斗过程中触发
0040BC6A   Taikou5    已禁止                        CMP EAX,0FA0                          兵力1
0041C5C3   Taikou5    已禁止                        SUB ESP,0FA0                          战斗中触发
0041E203   Taikou5    已禁止                        SUB ESP,0FA0                          开战就1号门位置触发
0066D053   Taikou5    已禁止                        SUB ESP,0FA0                          进入评定厅触发






EAX=00004F90
EBX=00000007
ECX=00000060
EDX=00000000
ESI=081FFA08
EDI=007BEB74
EBP=0018F34C
ESP=0018F314
EIP=0044FF7B

指针基址可能是 =081FFA08

0044FF72 - mov edx,[ebp+1C]
0044FF75 - mov [esi+48],ecx
0044FF78 - mov [esi+44],eax
0044FF7B - mov [esi+4C],edx
0044FF7E - mov ecx,[Taikou5.exe+342128]

以上这段代码为敌我双方攻击兵力减损的情况。。。。可以制作指针


EAX=00000FA0
EBX=0018FA30
ECX=00000000
EDX=0018FB1C
ESI=00000FA0
EDI=00000FA0
EBP=0018F960
ESP=0018F934
EIP=00461AF4

指针基址可能是 =0018FB1C

00461AEA - mov edx,[ebx+74]
00461AED - mov ecx,[ebp+08]
00461AF0 - mov [edx+ecx*4+28],eax
00461AF4 - mov ecx,[ebp-20]
00461AF7 - mov edx,[ebx+74]

军团长兵力输入。。。。实际可能是任何人兵力输入的情况。  其中ecx为0时为军团长。为1时为第2支部队。




00461AFF - 89 72 3C  - mov [edx+3C],esi                //分配兵力后改变总兵力变化的函数。
0046241C - 89 58 3C  - mov [eax+3C],ebx                //分配兵种时,改变总兵力的函数。(原来基础上加上该队兵力总数)
004624A6 - 89 5A 3C  - mov [edx+3C],ebx                //变为步兵时的函数
004624FE - 89 5A 3C  - mov [edx+3C],ebx                //变为铁炮时的函数





0046249B - 89 44 B9 28  - mov [ecx+edi*4+28],eax        //军团长变更步枪时触发
004624C3 - 89 44 BA 28  - mov [edx+edi*4+28],eax        //军团长变更骑兵时触发
004624F3 - 89 44 BA 28  - mov [edx+edi*4+28],eax        //军团长变更铁炮时触发
00462528 - 89 44 BA 28  - mov [edx+edi*4+28],eax        //军团长变更大筒时触发
00462575 - 89 44 BA 28  - mov [edx+edi*4+28],eax        //军团长变更骑马铁炮时触发
00461AF0 - 89 44 8A 28  - mov [edx+ecx*4+28],eax        //军团长士兵总数时触发



EAX=00000FA0
EBX=0018FA30
ECX=00000000
EDX=00000000
ESI=00002134
EDI=00000FA0
EBP=0018F910
ESP=0018F818
EIP=005AABBA

指针基址可能是 =0018F910

005AABAD - mov [ebp-04],00000000
005AABB4 - mov [ebp-24],ecx
005AABB7 - mov [ebp-14],eax
005AABBA - jb Taikou5.exe+1AABC3
005AABBC - mov [ebp-14],Taikou5.exe+58967F

以上是军团长键盘最大兵力数输入情况...其中eax存储着最大兵力数!




EAX=00000FA0
EBX=0018FA30
ECX=00000003
EDX=00000FA0
ESI=00000DAC
EDI=00000002
EBP=0018F960
ESP=0018F934
EIP=004619A1

指针基址可能是 =0018F960

00461999 - add esi,eax
0046199B - cmp edi,07
0046199E - mov [ebp-0C],edx
004619A1 - mov [ebp-20],edi
004619A4 - ja Taikou5.exe+61A1F

以上其中0046195A里call 函数 得到的eax 就是上面的edx    此我武将身份最大兵力数!





00462BB4    8B4D F0         MOV ECX,DWORD PTR SS:[EBP-10]
00462BB7    33D2            XOR EDX,EDX
00462BB9    66:8B54BD 94    MOV DX,WORD PTR SS:[EBP+EDI*4-6C]
00462BBE    33C0            XOR EAX,EAX
00462BC0    66:8B44BD 80    MOV AX,WORD PTR SS:[EBP+EDI*4-80]
00462BC5    66:C1E0 0C      SHL AX,0C
00462BC9    81E2 FF0F0000   AND EDX,0FFF                             ; 攻击据点前 和 派兵完开始攻城 注意着是去高位0FFF,主要下断
00462BCF    0BD0            OR EDX,EAX
00462BD1    66:8916         MOV WORD PTR DS:[ESI],DX




EAX=00004E20
EBX=007946F0
ECX=0078C9EC
EDX=0000C350
ESI=0078972C
EDI=0078972C
EBP=0018FB84
ESP=0018FB80
EIP=004E9701

指针基址可能是 =0078C9EC

004E96F7 - mov ecx,[esi+10]
004E96FA - add esp,08
004E96FD - mov [ecx+02],ax
004E9701 - pop esi
004E9702 - pop ebp

出兵时,城里的兵减少代码。。。






EAX=00000000
EBX=00000000
ECX=007946F0
EDX=00000FA0
ESI=007BEC7E
EDI=00000000
EBP=0018FBB0
ESP=0018FA24
EIP=00462BD4

指针基址可能是 =007BEC7E

00462BC9 - and edx,00000FFF
00462BCF - or edx,eax
00462BD1 - mov [esi],dx
00462BD4 - mov dl,[ecx+00000296]
00462BDA - mov [esi+02],dl
兵力来源变更来源。。

人物名称(2字节)兵力 (2字节)士气(1字节)状态(1字节如bb为风林山火)部队位置(2字节)不明(1字节)不明(1字节)不明(2字节)特技数和总特技数(1字节)






EAX=00000F9F
EBX=00000005
ECX=00000F9F
EDX=0000003F
ESI=007BEC7C
EDI=00000FA0
EBP=0018FA90
ESP=0018FA8C
EIP=0041FE74

指针基址可能是 =007BEC7C

0041FE67 - add esp,0C
0041FE6A - and edx,00000FFF
0041FE70 - xor [esi+02],dx
0041FE74 - pop esi
0041FE75 - pop ebp
为战场兵力变化公式。注意观察0041FE59的ax的数值。很可能是减少的兵力数


00462BC0

00462C64    E8 D70F0E00     CALL Taikou5.00543C40

压入参数 0,04100000(兵种),0,205(主角编码)




以下这些代码段都是访问军团长兵力的代码

0041FDCE - 66 F7 41 02 FF0F - test word ptr [ecx+02],0FFF
00450808 - 66 8B 43 02  - mov ax,[ebx+02]
0045A5F5 - 66 8B 46 EC  - mov ax,[esi-14]
004204EF - 66 8B 11  - mov dx,[ecx]
0045A8FC - 0FB7 84 81 A6000000  - movzx eax,word ptr [ecx+eax*4+000000A6]
0044DDB9 - 0FB7 48 02  - movzx ecx,word ptr [eax+02]
0044DDC5 - 0FB7 40 02  - movzx eax,word ptr [eax+02]
0045481A - 66 8B 70 02  - mov si,[eax+02]
00453CCA - 0FB7 40 02  - movzx eax,word ptr [eax+02]
00453E44 - 66 8B 48 02  - mov cx,[eax+02]
00481604 - 0FB7 46 02  - movzx eax,word ptr [esi+02]
0047E1AF - 0FB7 46 02  - movzx eax,word ptr [esi+02]
0047E22D - 66 8B 7E 02  - mov di,[esi+02]
0047D690 - 0FB7 94 96 A6000000  - movzx edx,word ptr [esi+edx*4+000000A6]
0047E2C8 - 0FB7 8C 37 A6000000  - movzx ecx,word ptr [edi+esi+000000A6]
0047E346 - 0FB7 8C 37 A6000000  - movzx ecx,word ptr [edi+esi+000000A6]
0047ED03 - 0FB7 7F 02  - movzx edi,word ptr [edi+02]
0041FE4B - 66 8B 4E 02  - mov cx,[esi+02]
0041FE60 - 66 8B 56 02  - mov dx,[esi+02]
0041FE70 - 66 31 56 02  - xor [esi+02],dx
00420AC3 - 0FB7 30  - movzx esi,word ptr [eax]                                        //风林山火时触发
00480F06 - 0FB7 48 02  - movzx ecx,word ptr [eax+02]
0045F29C - 0FB7 46 02  - movzx eax,word ptr [esi+02]
0045A25E - 0FB7 B4 8A A6000000  - movzx esi,word ptr [edx+ecx*4+000000A6]        //点特技时触发
0045E0DE - 0FB7 B4 8A A6000000  - movzx esi,word ptr [edx+ecx*4+000000A6]        //点炮击触发
0045F775 - 0FB7 7A 02  - movzx edi,word ptr [edx+02]                                //强袭时触发
0047FD63 - 0FB7 9C 81 A6000000  - movzx ebx,word ptr [ecx+eax*4+000000A6]
00479779 - 0FB7 7F 02  - movzx edi,word ptr [edi+02]
004786E2 - 0FB7 84 8E A6000000  - movzx eax,word ptr [esi+ecx*4+000000A6]
004750D6 - 0FB7 43 02  - movzx eax,word ptr [ebx+02]
0047DF6E - 0FB7 46 02  - movzx eax,word ptr [esi+02]
0047E026 - 66 8B 7E 02  - mov di,[esi+02]
0047E0BB - 0FB7 8C 13 A6000000  - movzx ecx,word ptr [ebx+edx+000000A6]
004479CF - 0FB7 70 02  - movzx esi,word ptr [eax+02]
004741CB - 66 8B 70 02  - mov si,[eax+02]

使用道具 举报

帖子
200
精华
0
积分
107
金钱
2376
荣誉
0
人气
68
评议
0
79#
发表于 2015-7-15 16:55:11 |只看该作者
wangzc2009 发表于 2015-7-14 10:33
EAX=00007530
EBX=0000B545
ECX=0018FC8C

这里的最大兵数难道不能修改去掉各支队兵力上限之和这种计算方法么?跳过残余兵数为0这个检测环节?
已有 1 人评分人气 收起 理由
wangzc2009 + 1 补上评分,我一天最多评分3次

总评分: 人气 + 1   查看全部评分

使用道具 举报

帖子
294
精华
1
积分
453
金钱
4613
荣誉
10
人气
59
评议
0
80#
发表于 2015-7-15 20:32:47 |只看该作者
本帖最后由 wangzc2009 于 2015-7-16 04:28 编辑
bhima 发表于 2015-7-15 16:55
这里的最大兵数难道不能修改去掉各支队兵力上限之和这种计算方法么?跳过残余兵数为0这个检测环节?
...

OK

改的代码量超过了我的预计。。。调试的量也超过了我的预计。。。。

先把附件送给你耍耍。。。。


使用方法是。。。。。开启出城可带城内全部兵力。开启 分配兵力时增强军团长         出征时,请记住多带兵。。。。比如系统默认是20000万。。。你就带3万,甚至3万六。。。。。

等行军到开战前分配兵力时。。。。默认军团长多带兵,不过最多只能带2万的兵。。。。。。。我做了判断,只有主角所在的军团的军团长才能多带。其他的都不行!


目前只实现了出征攻城战 军团长带兵达到2万。。。。。野战的还没实现。。。。。。。目前存在的问题是显示不正确的问题   总兵力显示不正确,以及看我方军团时 兵种显示不正确,   另外有时候会莫名其妙的军团长出现20004个兵!   但是军资和实际出征返还的兵都是正确的!




附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2024-5-15 11:22 , Processed in 0.376716 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到