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

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

2004-12-1 19:22
4828
这是一个很好的五子棋小程序.由于我的水平不高,常常需要悔棋,然而这个程序只能够悔棋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”

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

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

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


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