3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 3934|回复: 4
打印 上一主题 下一主题

[秘籍] [转帖]【逆向】《云之遥》随时存档研究及实现方法

[复制链接]

821

主题

6501

帖子

17万

积分

游戏终结者

@小幸姐             

Rank: 14Rank: 14Rank: 14Rank: 14

贡献度
42459
金元
31673
积分
173173
精华
17
注册时间
2010-7-9

游戏之神~3DMer古河渚圣诞快乐月宫亚由灭绝师太花好月圆阎魔爱幸运儿

跳转到指定楼层
主题
发表于 2011-1-26 19:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
工具:OllyDBG、StrongOD+HideOD
作者:MaYaFei
原发于百度轩辕剑吧和云之遥吧,转载请注明出处:http://tieba.blacksheepgame.com/f?kz=984854490

今天偶然更新了StrongOD,嘿,居然把VMP加壳的繁体版云之遥让OD给跑起来了。。。对于我这种不会过VMP的ANTI的菜鸟,这下可以研究研究了

直说正题吧

首先来研究随时存档,存档肯定是需要写文件,我们先找一个可以存档的地图,来到存档界面,在OD中设下断点:CreateFileW,这时弹回去时会拦下一大堆读IMD,原来云之遥优化非常不错,需要的时候才读取文件。。。

继续F9可以拦到CreateFileW存档S09.sav,然后可以返回到:
0041BC35     8BF0             MOV ESI,EAX

在0041B30A下一个断点,函数返回回去后。。。OMG,VM代码,继续研究下去要死人,换个思路。。。

我们先右键->超级字串参考->查找ASCII,返回程序,从0041BC35往上面看,有一条指令:
0041B1DA     68 F8C27900      PUSH SwdCF.0079C2F8   ; ASCII "%s\%c\S%02d.sav"

这不就是存档路径吗?继续往上,我们在0041B168下一个断点,单击“储存”,OD就会断下来,F8下去,会看到函数会返回到004FE286,继续在004FE1C0下一个断点,F9运行,然后再单击“储存”,断下来后,观察堆栈,有如下两条:
0012FBCC    004FC0DC   返回到 SwdCF.004FC0DC 来自 SwdCF.004FE1C0
0012FBD8    004FFDAD   返回到 SwdCF.004FFDAD 来自 SwdCF.004FC0A0

我们到004FFDAD去看下,往上在004FFB34下一个断点,再次单击“储存”可以被断下,根据刚才记录,可以看到存档CALL的地址在004FFDA8:
004FFDA8     E8 F3C2FFFF      CALL SwdCF.004FC0A0                       ; 存档 CALL

只要走到这里便能存档,此时我们F8一路单步走,在004FFC18处有一个JMP到存档CALL的上面,我们先标记一下

此时我们读一个不能存档的地图,直接来到储存界面单击“储存”,程序被断下来了,可以看到在这里会跳走从而无法存档
004FFBCC    74 4F            JE SHORT SwdCF.004FFC1D

于是我们把这段代码整理一下:
004FFB34     57               PUSH EDI
004FFB35     85C0             TEST EAX,EAX
004FFB37     0F85 00030000    JNZ SwdCF.004FFE3D                        ; EAX 不为 0 跳走
004FFB3D     A1 283F7E00      MOV EAX,DWORD PTR DS:[7E3F28]
004FFB42     BF 01000000      MOV EDI,1
004FFB47     C680 CC000000 0>MOV BYTE PTR DS:[EAX+CC],0                ; [7E3F28+CC] 置0
004FFB4E     8B4424 08        MOV EAX,DWORD PTR SS:[ESP+8]              ; [ESP+8] -> EAX
004FFB52     3B05 243E8300    CMP EAX,DWORD PTR DS:[833E24]
004FFB58     75 09            JNZ SHORT SwdCF.004FFB63                  ; EAX 不等于 [833E24] 跳走
004FFB5A     33C0             XOR EAX,EAX                               ; EAX 清零
004FFB5C     A3 A03C8300      MOV DWORD PTR DS:[833CA0],EAX             ; EAX = [833CA0]
004FFB61     EB 52            JMP SHORT SwdCF.004FFBB5
004FFB63     3B05 283E8300    CMP EAX,DWORD PTR DS:[833E28]
004FFB69     75 09            JNZ SHORT SwdCF.004FFB74                  ; EAX 不等于 [833E28] 跳走
004FFB6B     8BC7             MOV EAX,EDI
004FFB6D     A3 A03C8300      MOV DWORD PTR DS:[833CA0],EAX
004FFB72     EB 41            JMP SHORT SwdCF.004FFBB5
004FFB74     3B05 2C3E8300    CMP EAX,DWORD PTR DS:[833E2C]
004FFB7A     75 0C            JNZ SHORT SwdCF.004FFB88                  ; EAX 不等于 [833E2C] 跳走
004FFB7C     B8 02000000      MOV EAX,2
004FFB81     A3 A03C8300      MOV DWORD PTR DS:[833CA0],EAX
004FFB86     EB 2D            JMP SHORT SwdCF.004FFBB5
004FFB88     3B05 303E8300    CMP EAX,DWORD PTR DS:[833E30]
004FFB8E     75 0C            JNZ SHORT SwdCF.004FFB9C                  ; EAX 不等于 [833E30] 跳走
004FFB90     B8 03000000      MOV EAX,3
004FFB95     A3 A03C8300      MOV DWORD PTR DS:[833CA0],EAX
004FFB9A     EB 19            JMP SHORT SwdCF.004FFBB5
004FFB9C     3B05 343E8300    CMP EAX,DWORD PTR DS:[833E34]
004FFBA2     75 0C            JNZ SHORT SwdCF.004FFBB0                  ; EAX 不等于 [833E34] 跳走
004FFBA4     B8 04000000      MOV EAX,4
004FFBA9     A3 A03C8300      MOV DWORD PTR DS:[833CA0],EAX
004FFBAE     EB 05            JMP SHORT SwdCF.004FFBB5
004FFBB0     A1 A03C8300      MOV EAX,DWORD PTR DS:[833CA0]             ; EAX = [833CA0]
004FFBB5     83F8 04          CMP EAX,4
004FFBB8     0F87 75020000    JA SwdCF.004FFE33                         ; EAX 大于 4 跳走
004FFBBE     FF2485 44FE4F00 JMP DWORD PTR DS:[EAX*4+4FFE44]
004FFBC5     A0 C13D8300      MOV AL,BYTE PTR DS:[833DC1]               ; [833DC1] -> AL
004FFBCA     84C0             TEST AL,AL
004FFBCC     74 4F            JE SHORT SwdCF.004FFC1D                   ; AL 为 0 跳走
004FFBCE     A0 F9FA8300      MOV AL,BYTE PTR DS:[83FAF9]               ; [83FAF9] -> AL
004FFBD3     84C0             TEST AL,AL
004FFBD5     75 46            JNZ SHORT SwdCF.004FFC1D                  ; AL 不为 0 跳走
004FFBD7     B9 983C8300      MOV ECX,SwdCF.00833C98
004FFBDC     E8 5FE7FFFF      CALL SwdCF.004FE340
004FFBE1     B9 983C8300      MOV ECX,SwdCF.00833C98
004FFBE6     E8 65EEFFFF      CALL SwdCF.004FEA50
004FFBEB     B9 983C8300      MOV ECX,SwdCF.00833C98
004FFBF0     E8 7BEEFFFF      CALL SwdCF.004FEA70
004FFBF5     A1 5C257E00      MOV EAX,DWORD PTR DS:[7E255C]
004FFBFA     893D A43C8300    MOV DWORD PTR DS:[833CA4],EDI
004FFC00     3BC7             CMP EAX,EDI
004FFC02     75 0D            JNZ SHORT SwdCF.004FFC11
004FFC04     6A 0F            PUSH 0F
004FFC06     57               PUSH EDI
004FFC07     B9 A8088300      MOV ECX,SwdCF.008308A8
004FFC0C     E8 3F2BFDFF      CALL SwdCF.004D2750
004FFC11     8B0D 3C257E00    MOV ECX,DWORD PTR DS:[7E253C]
004FFC17     51               PUSH ECX
004FFC18     E9 75010000      JMP SwdCF.004FFD92                        ; 这里去存档
004FFC1D     6A FF            PUSH -1

如果要实现随时存档,方法很明确:

[833DC1]应保持为非0值
[83FAF9]应保持为0

简体版方法是一样的,不过只能让OD附加,直接载入会被SecuROM给Anti掉,而且附加后程序也跑不起来,但可以查找到指令。。。
附简体版的方法及内存地址如下:
[82B779]应保持为非0值
[8374B1]应保持为0

视角转换现在也在研究中........

评分

1

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

5

主题

220

帖子

322

积分

高级玩家

Rank: 4

贡献度
22
金元
2341
积分
322
精华
0
注册时间
2008-9-23
舒服的沙发
发表于 2011-1-26 20:04 | 只看该作者
坐标帝来了,大家就有福了
回复 支持 反对

使用道具 举报

821

主题

6501

帖子

17万

积分

游戏终结者

@小幸姐             

Rank: 14Rank: 14Rank: 14Rank: 14

贡献度
42459
金元
31673
积分
173173
精华
17
注册时间
2010-7-9

游戏之神~3DMer古河渚圣诞快乐月宫亚由灭绝师太花好月圆阎魔爱幸运儿

硬硬的板凳
 楼主| 发表于 2011-1-26 20:53 | 只看该作者
新版本的云之遥控器已按照mayafei的研究结果加入了随时存档功能
我自己简繁用着都没问题,请大家测试。
回复 支持 反对

使用道具 举报

41

主题

1146

帖子

705

积分

超级玩家

Rank: 5Rank: 5

贡献度
14
金元
6493
积分
705
精华
0
注册时间
2008-9-7
冰凉的地板
发表于 2011-1-26 20:53 | 只看该作者
技术帝!!膜拜~~
回复 支持 反对

使用道具 举报

2

主题

109

帖子

173

积分

中级玩家

Rank: 3Rank: 3

贡献度
4
金元
1574
积分
173
精华
0
注册时间
2008-8-8
5#
发表于 2011-1-27 22:36 | 只看该作者
偶然搜索,发现了这个,顶了
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|咖绿茵|求知网|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2024-10-1 04:36 , Processed in 0.174025 second(s), 16 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表