首页
社区
课程
招聘
修改“是男人就下一百层”
发表于: 2005-8-2 13:47 5927

修改“是男人就下一百层”

2005-8-2 13:47
5927
相信大家都玩过这个日本人做的小游戏罢,本人由于反应不太快,最多只玩到109层。在看雪论坛游荡了一段时间,学到不少东西,也想自己改造一下这个程序。于是按照lzqgj大侠的“打造一个游戏成无敌版”的方式搜索血条的内存地址,结果无法找到改内存地址。我用的是(GE6.4版)。
    回想游戏中计算血量的方式,这个值似乎是跟血条这个位图有关。于是先用exesc6.5打开游戏资源,可以发现血条位图的大小为96x16。然后使用OllyDbg打开游戏,查找BitBlt函数,得到很多地址,但是根据我们上面的分析,可以来到
.text:00404AC5     mov     [ebp+var_4], eax
.text:00404AC8     mov     eax, [ebp+arg_0]
.text:00404ACB     cmp     dword ptr [eax+1170h], 0;<---血量值
.text:00404AD2     jge     loc_404AE5 ;<---大于零,画血条
.text:00404AD8     mov     eax, [ebp+arg_0] ;<--小于零,画"Gemaover"
.text:00404ADB     mov     dword ptr [eax+1170h], 0
.text:00404AE5
.text:00404AE5 loc_404AE5:           ; CODE XREF: sub_404AA6+2Cj
.text:00404AE5     mov     eax, [ebp+arg_0]
.text:00404AE8     cmp     dword ptr [eax+1310h], 2
.text:00404AEF     jz      loc_404B45
.text:00404AF5     push    0CC0020h        ; DWORD
.text:00404AFA     mov     eax, [ebp+arg_0]
.text:00404AFD     mov     eax, [eax+1170h]
.text:00404B03     shl     eax, 4
.text:00404B06     push    eax             ; int
.text:00404B07     push    180h            ; int
.text:00404B0C     mov     eax, [ebp+arg_0]
.text:00404B0F     mov     eax, [eax+1380h]
.text:00404B15     push    eax             ; HDC
.text:00404B16     push    10h             ; int
.text:00404B18     push    60h             ; int
.text:00404B1A     push    20h             ; int
.text:00404B1C     mov     eax, [ebp+arg_0]
.text:00404B1F     cmp     dword ptr [eax+1310h], 1
.text:00404B26     sbb     eax, eax
.text:00404B28     and     eax, 0FFFFFED8h
.text:00404B2D     add     eax, 158h
.text:00404B32     push    eax             ; int
.text:00404B33     mov     eax, [ebp+arg_0]
.text:00404B36     mov     eax, [eax+4]
.text:00404B39     push    eax             ; HDC
.text:00404B3A     call    ds:BitBlt
这个BitBlt函数就是当血量值变化时改变血条的绘图函数了。由此可以分析到[eax+1170h]是保存的血量值。这时就可以使用lzqgj大侠的方式随意改血了。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 221
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵,109层,已经达到男人的标准了,还不满足啊!
2005-8-2 19:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
曾经想改 是男人就上一百层,跳的力量是根据加力的时间不断循环的,
因为本人愚钝,老是掌握不了力度,想将力量改为不循环的,
猜想他的力量值是这样算的:power = (++power) % N
那样反汇编的结果就会是:
                  MOV     EAX,[EBP-4]                     
                  ADD     EAX,1         ;++power                  
                  MOV     [EBP-4],EAX                     
                  MOV     EAX,[EBP-4]                     
                  CDQ                                    
                  MOV     ECX,64        ;N = 64H                  
                  IDIV    ECX                             
                  MOV     [EBP-4],EDX   ;power = power % N

如果要改成:power = power < N ? ++power :power

那么上面的汇编代码该怎么改呢?
请指点,谢谢
2005-8-5 13:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个问题我还没有想过,不过我猜测应该可以用拦截键盘消息来找到相关部分吧。呵呵其实可以把游戏的定时器改慢一点效果是一样的。
2005-8-5 13:47
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
5
很灵活的思路啊,支持~
2005-8-5 15:09
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
修改除数为10000000,这样就够你跳1000层的了,呵呵
2005-8-6 11:55
0
游客
登录 | 注册 方可回帖
返回
//