首页
社区
课程
招聘
一个棋类游戏的修改[分享]
发表于: 2004-12-1 19:22 5014

一个棋类游戏的修改[分享]

2004-12-1 19:22
5014
这是一个很好的五子棋小程序.由于我的水平不高,常常需要悔棋,然而这个程序只能够悔棋3步,对我来说太少了,至少悔个百十来步 -:)。于是用w32dasm修改它。
    用w32dasm打开程序,查找字符串“一盘棋只能悔三步!不行了吧?:>”见下面代码:
<<<<<<<<<<
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0046BC37(C)
|
:0046BC89 FF0D10D34700            dec dword ptr [0047D310]
:0046BC8F EB34                    jmp 0046BCC5

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0046BBA1(C), :0046BBAE(C), :0046BBBB(C), :0046BBD1(C)
|
:0046BC91 803D999A470000          cmp byte ptr [00479A99], 00
:0046BC98 7411                    je 0046BCAB

* Possible StringData Ref from Code Obj ->"现在不能悔棋!"
                                  |
:0046BC9A BA54BD4600              mov edx, 0046BD54

* Possible StringData Ref from Code Obj ->"Can not Pull Back Now!"(这个程序好像可以使用两种语言,我不懂,不管他)
                                  |
:0046BC9F B86CBD4600              mov eax, 0046BD6C
:0046BCA4 E88F9CFFFF              call 00465938
:0046BCA9 EB6E                    jmp 0046BD19

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0046BC98(C)
|
:0046BCAB 833D10D3470000          cmp dword ptr [0047D310], 00000000
:0046BCB2 7F11                    jg 0046BCC5

* Possible StringData Ref from Code Obj ->"一盘棋只能悔三步!不行了吧?:>"
                                  |
:0046BCB4 BA98BD4600              mov edx, 0046BD98

* Possible StringData Ref from Code Obj ->"Only Pull Back 3 Steps in a Game!"(这个程序好像可以使用两种语言,我不懂,不管他)
                                  |
:0046BCB9 B8C0BD4600              mov eax, 0046BDC0
:0046BCBE E8759CFFFF              call 00465938
:0046BCC3 EB54                    jmp 0046BD19
>>>>>>>>>>>>
    看到了吧,“一盘棋只能悔三步!不行了吧?:>”(这句话是从0046BC98跳过来的,那里可能是在判断是否发生悔棋行为。)在这句话之上有一个比较语句,
######  
0046BCAB 833D10D3470000    cmp dword ptr [0047D310], 00000000  
######
    是0047D310和00000000作比较,看看0047D310是什么呢?可是并没有发现有0047D310这个行代码,于是搜索0047D310这个字符串,看到有一段这样代码
######
:00471DCD C70510D3470003000000    mov dword ptr [0047D310], 00000003
######
    悔棋3步会不会与这个00000003有关,试着修改它为1保存程序后运行,只悔棋一步就出现了不能再悔棋的对话框,看来就是这里了。
    但是他还是傻乎乎的告诉我不能悔棋三步----@#$#@^%(*$&^%----,不管那些了。以后想悔棋几步就用16进制编辑器查找“C70510D3470003000000”修改03000000为悔棋的步数.必须注意顺序,例如改为123456789步,16进制的123456789为“15 cd 5b 07”,则应该改为“07 5b cd 15”

    小弟初次写文章,有错误还请大虾们指出!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
2
鼓励一下, :D
2004-12-1 23:20
0
雪    币: 547
活跃值: (2200)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
不错
2004-12-2 00:25
0
雪    币: 33
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可以啊。
2004-12-2 01:17
0
雪    币: 187
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
:D  比较详细了~
2004-12-2 08:22
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
鼓励一下!!!!!:D
2004-12-2 08:50
0
雪    币: 547
活跃值: (2200)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
我也试试
2004-12-2 17:41
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请问这是哪一个五子棋游戏,我也想试试
2004-12-2 22:24
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
9
最初由 linf 发布
是0047D310和00000000作比较,看看0047D310是什么呢?可是并没有发现有0047D310这个行代码,于是搜索0047D310这个字符串,看到有一段这样代码
######
:00471DCD C70510D3470003000000 mov dword ptr [0047D310], 00000003
######
悔棋3步会不会与这个00000003有关,试着修改它为1保存程序后运行,只悔棋一步就出现了不能再悔棋的对话框,看来就是这里了。


[0047D310]是内存地址。
如果你贴出:00471DCD C70510D3470003000000 mov dword ptr [0047D310], 00000003这句前后的代码,或许我们可以知道为什么要这样 改了。
2004-12-2 22:26
0
游客
登录 | 注册 方可回帖
返回
//