首页
社区
课程
招聘
[原创]菜鸟调试经典老游戏之富甲天下3
发表于: 2017-4-18 17:43 11966

[原创]菜鸟调试经典老游戏之富甲天下3

2017-4-18 17:43
11966

为避免不必要的麻烦,附上本人调试的版本:度盘链接 c60K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4m8S2L8W2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8U0q4E0K9q4u0W2x3f1g2G2,密码 l4pm

=============================================================================================================

富甲天下3是一个三国题材的大富翁类游戏,里面有一个赌场小游戏,游戏中随机生成5个象棋棋子,不同排列组合的5个棋子对应不同倍数的奖励。

本次调试的目标是拿到5个棋子完全相同的10倍奖励“五子登科", 先上最终成果图。

切入点: 游戏中点击'保留'以将棋子翻转至反面,同时'保留'键会被重新绘制为'换棋'。我们以通过观察按键转化时的内存数据变化,找到调试入口。

由于数据的初始值与增减性无从知晓, 因此使用CE时只能采取模糊搜索。先从'unknown initial value'开始搜索, 按键后再勾选'changed value'继续搜索,中间可以穿插一些无关的操作后勾选'unchanged value'以期大幅度减少搜索范围

反复几次后,我们观察到一个可疑的地址:0x00492444。当按键为'保留'时,其值为0,当按键为'换棋'时,其值为1.

当全部五个按键为'换棋'状态时,0x00492444到0x00492454的内存区间全部为小字节序1。当全部五个按键为'保留'状态时,相同的内存区间全部为0。由此可以推断,这段内存被用来表示棋子翻开的状态。接下来判断这个变量在进程空间中的位置,先看看会谁往这个地址里写东西。

根据之前观察到的现象,图中edx的作用很有可能是棋子的偏移量, 当edx = 0,1,2,3,4时,对应第1,2,3,4,5个棋子。因此,0x00492454位于进程数据段或BSS段,其地址不会随每次程序的装入而变更。CE已经提供了足够的信息,下一步使用OD开始调试。

如图所示,棋子在'换棋'状态时棋子上的字符是不显示的,跳转至'保留'状态后才会重新显示。我们可以利用这一特点,搞清楚棋子翻转显示字符时的依据,进而搞清楚棋子的属性。举个例子,棋子'士'在'换棋'状态时是白板,在'保留'状态时才被赋值'士',当我们这个赋值动作依据什么知道这个白板应该被赋值'士'的,我们再修改这个依据,就可以把这个棋子更改为任意棋子。先将棋子翻转至'换棋',然后在0x00492444下断。翻转棋子,在写0的时候果然被断下来了。

 棋子被翻出了角度,然而并没有出现字符,同时我们观察到了一个大循环,目测循环结束之后整个棋子就会逐渐显现字符并最终被翻转至'保留'。

蛋疼的一幕出现了,翻转过程中无论棋子上本来是什么都会显示'兵',这个循环略过。最终,棋子完全翻转成’保留’并且被赋值了正确的字符。完成这个动作的函数位于0x00411790,我们进去看看。

进去后里面还有一个调用0x00404D10,真正的换图发生在这个调用之后,再跟进去。

看到一个系统调用bitblt。这个函数接受一个源HDC句柄,一个目标HDC句柄,并且把源HDC所属的图像资源粘贴至目标HDC句柄。很明显,这个源HDC就是写有'士'棋子的容器,这个目标HDC就是我们的白板棋子,我们看看它的来源。


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/05/08
最新回复 (20)
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
高手就是厉害,这么复杂的数据,都能找出自己需要的!
2017-4-19 08:14
0
雪    币: 2347
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
思路正确了感觉接下来的方向也就明确了呢
2017-4-20 00:29
0
雪    币: 6510
活跃值: (4389)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
写的很详细,不错的文章
2017-4-20 20:10
0
雪    币: 335
活跃值: (350)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
foresen 高手就是厉害,这么复杂的数据,都能找出自己需要的!
多谢支持
2017-4-20 23:09
0
雪    币: 335
活跃值: (350)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6




空白即是正义

思路正确了感觉接下来的方向也就明确了呢

调试到一半我就后悔了,因为更简单的方法是从奖励金钱做为入口逆推出10倍奖励的条件。

2017-4-20 23:11
0
雪    币: 335
活跃值: (350)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
Kisesy 写的很详细,不错的文章
多谢支持
2017-4-20 23:12
0
雪    币: 5206
活跃值: (5451)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好帖我要收藏学习
2017-4-24 12:08
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
好贴。
2017-4-25 14:16
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主哪里下的富甲天下,我下的运行不了
2017-4-25 14:28
0
雪    币: 335
活跃值: (350)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
蛋蛋好疼 楼主哪里下的富甲天下,我下的运行不了
我有两个版本,一个是1.01一堆bug但能在win10下运行,另一个1.08修复了bug但是不能再win8以后的版本运行,不知道你要哪个。话说有时间我准备调试下1.08,  找出不能在win10运行的原因。
2017-4-25 16:41
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
战舰少女R 我有两个版本,一个是1.01一堆bug但能在win10下运行,另一个1.08修复了bug但是不能再win8以后的版本运行,不知道你要哪个。话说有时间我准备调试下1.08, 找出不能在win10运行的原 ...
给个能WIN7下运行的就行了
2017-4-26 08:11
0
雪    币: 28
活跃值: (34)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
CES是什么工具?全称?
2017-4-26 09:53
0
雪    币: 335
活跃值: (350)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
蛋蛋好疼 给个能WIN7下运行的就行了
度盘链接  480K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4m8S2L8W2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8U0q4E0K9q4u0W2x3f1g2G2i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4@1q4r3i4K6R3$3i4@1f1%4i4@1p5H3i4K6R3I4i4K6t1$3L8X3u0K6M7q4)9K6b7R3`.`. l4pm。
2017-4-26 11:32
0
雪    币: 335
活跃值: (350)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
bingkan CES是什么工具?全称?
CE的全称是'cheat engine', 原文中因为笔误多打了一个S, 现已更正。链接是CE的官网,有下载。319K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4Z5k6h3q4@1k6h3&6Y4K9h3&6W2i4K6u0W2L8%4u0Y4i4K6u0r3

2017-4-26 11:35
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
战舰少女R 度盘链接 f22K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4m8S2L8W2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8U0q4E0K9q4u0W2x3f1g2G2i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4@1q4r3i4K6R3$3i4@1f1%4i4@1p5H3i4K6R3I4 l4pm。
谢谢
2017-4-26 14:19
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
大写的服啊厉害
2017-4-26 19:11
0
雪    币: 3407
活跃值: (2421)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
标示佩服
2017-4-27 10:38
0
雪    币: 28
活跃值: (34)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
战舰少女R CE的全称是'cheat engine', 原文中因为笔误多打了一个S, 现已更正。链接是CE的官网,有下载。735K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4Z5k6h3q4@1k6h3&6Y4K9h3&6W2i4K6u0W2L8%4u0Y4i4K6u0r3 ...
感谢
2017-5-18 21:14
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
留名,等技术在熟练在学习
2017-5-21 10:28
0
雪    币: 6483
活跃值: (3452)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习学习
2017-5-21 10:54
0
游客
登录 | 注册 方可回帖
返回