sower
级别: 注册会员
编号: 7248
精华: 1
发帖: 98
威望: 0 点
配偶: 单身
火 花 币: 32955 HHB
注册时间:2003-05-26
最后登陆:2009-02-28
|
关于命中敌人,但不击倒敌人时所获得经验值的动态追踪结果。
这是我的设置断点的方法,不知道是否正确,请指教。前面的与网友cystev 的搜索动作相同,只是我觉得按照那种设置方法,如果不升级的话,加上的只是表象值,并非真正的加上设定值。我所做的就是在语句:
0802B8B2 F000FDDB bl 802C46Ch
处按 F7 进行跟踪。
单步执行到以下语句时:
0802C4BE F7FFFF6B bl 802C398h
0802C4C2>9900 ldr r1,[sp] // 将 sp(也就是栈顶元素)的值存入 r1 中
0802C4C4 1809 add r1,r1,r0 // 将 r1 值加上 r0 值然后存入到 r1 中
0802C4C6 9100 str r1,[sp] // 将 r1 值存入到栈中
0802C4C8 2964 cmp r1,64h
0802C4CA DD01 ble 802C4D0h
0802C4CC 2064 mov r0,64h // 当 r1 中值大于或等于 64h 也就是 100 时将 r0 的值赋为 100h
0802C4CE 9000 str r0,[sp]
0802C4D0 9800 ldr r0,[sp]
0802C4D2 2800 cmp r0,0h
0802C4D4 DC01 bgt 802C4DAh
0802C4D6 2001 mov r0,1h
0802C4D8 9000 str r0,[sp]
0802C4DA 1C20 mov r0,r4
0802C4DC 1C29 mov r1,r5
0802C4DE 466A mov r2,r13
0802C4E0 F7FFFFA2 bl 802C428h
将 0802C4C2>9900 ldr r1,[sp] 语句改为 mov r1,64h 也就是 2164 便可以使得攻击命中时(不管是否击倒敌人)均获得 100 的经验值,另外如果要使攻击时获得的经验值大于 100,我想只要将 0802C4CC 2064 mov r0,64h 中的 64h 换成大于 100 的数即可。
那么金手指代码就是:0x0002C4C2 XX 21(XX表示设定经验值)
遗憾的是没有找出单纯命中但不击倒敌人时所获得经验值的代码。
PS:我有个问题没有搞明白,在执行 ldr 命令时,比如 ldr r1,[sp] 命令,是否会进行弹出栈的操作,还是仅仅进行栈顶元素的读写?我觉得应当是仅仅进行读写;还有执行 str 命令时,比如 str r1,[sp] 命令,是否会进行压入栈的操作,还是仅仅进行栈顶元素的改写?请指教。
|
|
[20 楼]
|
Posted:2004-11-06 12:46| |
顶端
| |