《太阁立志传4》 所有武将卡的取得

原创 2002年12月21日 10:42:00

                    《太阁立志传4》 所有武将卡的取得
                               dOSKEY lEE
    想必大家都玩过《太阁立志传4》这个游戏。里面有600个角色可以选择。有很高的灵活
度。如果光靠自己收集完整几乎是不可能的。由于几个同学对收集卡片很感兴趣。所以,近
日对此游戏进行了一些研究,想用修改的手段取得武将卡片。下面是我操作的流程。
    游戏是从藏经阁287中找来的。游戏安装后是289MB,不是很大。在游戏过程中发现可以
取得各种武将卡片。在游戏开始后存档。发现集卡册里多出来两张主角卡(“丰臣秀吉”和
“前田利家”)。另外,在游戏目录里多出来一个新文件,另一个文件被修改。多出来的文
件是SAVEDAT0.DAT,被修改的文件是SAVEDATA.DAT。将SAVEDAT0.DAT文件删除后,发现游戏
里面的存档没有了。集卡册里面的数据还在。可以确定SAVDAT0.DAT是存档文件,而
SAVEDATA.DAT是保存集卡册的文件。
    SAVEDATA.DAT文件大小是1024个字节,刚好1KB。用WINHEX打开文件,发现如下数据:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   54 41 49 4B 4F 55 34 57  49 4E 20 20 20 20 20 00   TAIKOU4WIN     .
00000010   01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ...............
……
000000A0   00 00 00 00 00 00 00 00  00 00 00 F9 00 00 00 00   ...........?...
……
00000290   00 00 00 00 00 00 00 00  00 00 00 A8 00 90 00 00   ...........??.
000002A0   00 00 00 00 00 00 0E 90  53 0B 70 01 00 00 00 45   .......怱.p....E
000002B0   40 82 28 81 00 00 00 00  00 00 00 00 00 00 00 00   @??...........
……
其余都为0。最前面的TAIKOU4WIN一定是文件头,第一行不去管它。然后在10h处发现一个01,
还有0ABh处有一个F9,一定是游戏修改过这个地方。然后将10h处的01改为00,重新进入游
戏后发现集卡册里面少了主角“丰臣秀吉”。将0ABh处的F9改为00,发现少了主角“前田利
家”。可以确定这一段内容就是保存主角卡的位置。我试着看能不能直接将卡片改出来,将
11h处改为02,还在这段范围内改了其他的位置,发现并不能修改出新的角色。说明武将的
代码是经过较复杂的算法取得的。只有另寻它法。记录2B7h到2BBh的一段数据,开启
SOFTICE,在SOFTICE中搜索这段数据:
s 400000 l ffffffff 0e,90,53,0b,70,01
找到后,在内存窗口中发现整个文件都读取到内存中。在内存中发现同样的数据起始地址是
604528h。主角“丰臣秀吉”代码的偏移地址是604538h。在此处设置内存读断点:
bpm 604538 r
开启集卡册,中断在489816h处,附近是如下代码:
:00489806 56                      push esi
:00489807 E864651200              call 005AFD70
:0048980C 68FF000000              push 000000FF
:00489811 E87A651200              call 005AFD90 ;此处是取得正确武将代码的函数
:00489816 8A9638456000            mov dl, byte ptr [esi+00604538]  <=中断在此处,
从内存中读取数据到DL中,准备进行比较
:0048981C 83C408                  add esp, 00000008
:0048981F FEC0                    inc al ;计算出正确的武将代码
:00489821 33C9                    xor ecx, ecx
:00489823 3AD0                    cmp dl, al ;比较武将代码的正确性
:00489825 5E                      pop esi
:00489826 0F94C1                  sete cl
:00489829 8BC1                    mov eax, ecx
:0048982B 5D                      pop ebp
:0048982C C3                      ret
将489823h处的AL值直接填充到相应的内存中便可以在集卡册中显示出相应的武将。一个一
个打出来很麻烦哦。600个!为了发扬我们PEDIYER的精神。我只需要改代码就可以了,既然
程序给我们计算出武将代码了,我只需要让程序把武将代码直接保存回内存中就可以了。在
SOFTICE中做了如下的修改:
a 489816
inc al
mov [esi+604538],al
add esp,8
xor ecx,ecx
cmp al,al
即:
+--------------------------------+---------------------+-----------------------+
|         原来的代码             |     修改后的代码    |          解释         |
+--------------------------------+---------------------+-----------------------+
| mov dl,byte ptr [esi+00604538] | inc al              | 将AL加一,取得武将代码|
| add esp,00000008               | mov [esi+604538],al | 将武将代码保存到内存中|
| inc al                         | add esp,00000008    | 未变更的代码          |
| xor ecx,ecx                    | xor ecx,ecx         | 未变更的代码          |
| cmp dl,al                      | cmp al,al           | AL与AL比较,一定为真  |
+--------------------------------+---------------------+-----------------------+
    其中要注意的是那两句未变更的代码。把自己没有修改,程序中又有的代码保留下来。
否则会发生不可预料的错误。然后回到游戏中,再点击集卡册,600个武将都出来了。还多
出来50个乱七八糟的东西!?没关系。等下再说。看看内存中的604528h处的数据,这儿保
存的就是600个武将的数据!赶快用ICEDUMP将数据DUMP出来:
/dump 604528 400 c:/a.bin
退出游戏,用WINHEX打开文件a.bin。将多出来的50个东西的代码清除掉。将268h到299h的
数据用0填充。
    最后,将a.bin复制到游戏的目录下,改名为savedata.dat。然后进入游戏我们就可以享
受用600个武将随意游戏的乐趣了!另外,其他卡片的储存结构比较简单,都是按二进制位
来存放的,用FF填充29Ah到2B4h的数据就可以取得其他所有卡片了。回到游戏中看看收集度
100%的集卡册吧!:)

    下面给出SAVEDATA.DAT的UUE文件,将下面的内容复制到一个新的文本文件,并将其扩
展名改为UUE,然后用WINRAR打开解包即可。

----------------------开始处(不包括此行)-------------------
filetime 764696804
begin 644 savedata.tr4
M5$%)2T]5-%=)3B`@("`@``%TZ%O/0K8JG1*$^&O?4/8ZK2&4"'SN8]9*OC&E
M&(S^<^9:S4&U*)P0@_9JW5+$.:L@DP=[[6+42;LPHQ>*_7+D6<Q`LR>:#X'U
M:-Q/PSBJ'Y$&>.Q@TT>Z+J(6B?QPXU?+/K(EF0R`]&?;3L(VJ1V0!'?J7]%&
MN2V@%(CZ;^%6R#VP))@+?_)FV4W`-*<<C@-VZ5W01;<LGA.&^6W@5,</KR.6
M"GWP9-A+OS*F&HT"=.A;ST.V*IT1A/ALWU/&.JTAE0A/[F/62KXQI1B,_W/F
M6LU!M"F<$(/V:]U2Q#FK(),'>^UBU$F/,*,7BOUQY5C,0+,HF@^!]6C<4,,W
MJA^1!GGL8--'NRZB%8G/<.17RSZR)9D-@/-GVT["-JD=D`1XZE_11K@MH12(
M^F_A5LD]L"27#'_R9ME-P#6G'(X#=>E>T$6W+)/3AOEMX%3(.Z/CE@I]/638
M2[/RIAJ-`G3H7,]#MBJ=$87W;-]3QCJN(94(?.]CUDJ],:49C/]SYEK-0K0I
MFQ"$]FO=4L0YK""3!WKM8M5)O#"C%XK^<>58S$"S*)H/@?5IW%##-ZH>D@9Y
M[&#41[LNHA6)_'#D5/L^LB:9#8#S9]I/P3:I'9$$>.I?T4:Y+:`4B/IOXE;)
M/;`EEPQ^/F;93L`UIQR.`W;I7=!%N"R?$X;Y;>%4R#NO(I8+??%DV$N_,Z8:
MC0%UZ%S/0[8JGA&%]VS>4/<ZKB&5"7SO8]9*O3*D&8S_<^9;S4*T*9L0@_9K
MW5+%.:P@DP=Z[F'52;PPHQB*_G'E6<Q`LR>:#X+U:0``````````````````
M````````````````````````````````````````````````____________
M________________________````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
B````````````````````````````````````````````````
`
end
----------------------结束处(不包括此行)-------------------

安全程序设计

安全程序设计 概述 在当前的软件行业里,太多的程序有安全问题,代码在被发布前只是经过很少的测试,即使 一些有专业测试人员的软件公司也很少进行安全编程方面的测试,原因在于缺少对安全编程 技术的了解。本文...
  • doskey
  • doskey
  • 2002年12月02日 09:25
  • 2548

中国共享软件如何进军海外市场完全指导手册

中国共享软件如何进军海外市场完全指导手册周弈(dOSKEY lEE整理)前言:  西哥特人消灭了罗马帝国,也谈共享软件   当匈奴大军把西哥特人赶得没有地方去的时候,他们只好逃往罗马,结果消灭了罗马帝...
  • doskey
  • doskey
  • 2002年09月09日 09:13
  • 2876

取得SD卡所有名称关键代码

 lv_sd = (ListView)findViewById(R.id.lv_sd);        ArrayList listItems = new ArrayList();        St...
  • zeng622peng
  • zeng622peng
  • 2011年02月23日 15:06
  • 743

深度学习GPU卡的理解(四)

这一篇是对于卷积的理解《Understanding Convolution in Deep Learning》 Convolution is probably the most import...
  • langb2014
  • langb2014
  • 2016年12月26日 13:04
  • 1633

给Windows7 Windows8右键添加 取得管理员所有权限 命令

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\runas] @="获取管理员所有权" "NoWork...
  • ncepu307
  • ncepu307
  • 2014年10月24日 12:21
  • 1913

js获取相同name的元素个数和获取其中任意一个元素的值(获取最后一个元素值)

$(function(){ alert($('input:[name="a"]').length); //4 alert($('input:[name="a"]:last').val()); ...
  • superit401
  • superit401
  • 2017年05月22日 20:01
  • 2614

三国志9修改器最新版【针对繁体版三国志9存档】

三国志9修改器 最新版 [针对繁体版三国志9存档] 授权方式:免费软件 界面语言:简体中文 软件大小:3.86MB 所属专题:网络软件 运行环境:Win2...
  • u011168635
  • u011168635
  • 2013年07月22日 11:58
  • 1238

三国群英传——哪些官职可以不封?

最近重玩了三国群英传7,结果强迫症犯了,想要花尽可能少的功勋值升满所有“武将技”和“军师技”。 经过测试,确实可以省去几个官职不升: 武职有:校尉、建武将军、折冲将军、偏将军、镇军将军、奋威将军、左将...
  • lewisyou9
  • lewisyou9
  • 2015年02月23日 22:40
  • 733

android 获取SD卡里的所有TXT文件

1.声明变量 private List file_name; private List file_txt_path; private List file_size; 2.获取SD卡路径...
  • zzldm
  • zzldm
  • 2016年09月07日 22:35
  • 737

msstdfmt.dll缺失报错

msstdfmt.dll是微软标准数据格式对象相关动态链接库文件。 msstdfmt.dll里面包含了定义好函数,如果系统中没有它,包含相关函数的VB工程不能用。包括其生成的exe文件会出错。 ...
  • corpse2010
  • corpse2010
  • 2015年08月24日 21:35
  • 525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《太阁立志传4》 所有武将卡的取得
举报原因:
原因补充:

(最多只允许输入30个字)