呃……这个,STAR其实已经讲的很细了。
0040736D |. 3C 32 CMP AL,32 ; 50×2=100
0040736F |. 7C 04 JL SHORT Ekd5.00407375
00407371 B0 06 MOV AL,6
00407373 |. EB 29 JMP SHORT Ekd5.0040739E
00407375 |> 3C 2D CMP AL,2D ; 45×2=90
00407377 |. 7C 04 JL SHORT Ekd5.0040737D
00407379 B0 05 MOV AL,5
0040737B |. EB 21 JMP SHORT Ekd5.0040739E
0040737D |> 3C 28 CMP AL,28 ; 40×2=80
0040737F |. 7C 04 JL SHORT Ekd5.00407385
00407381 B0 04 MOV AL,4
00407383 |. EB 19 JMP SHORT Ekd5.0040739E
00407385 |> 3C 23 CMP AL,23 ; 35×2=70
00407387 |. 7C 04 JL SHORT Ekd5.0040738D
00407389 B0 03 MOV AL,3
0040738B |. EB 11 JMP SHORT Ekd5.0040739E
0040738D 3C 1E CMP AL,1E ; 30×2=60
0040738F 7C 04 JL SHORT Ekd5.00407395
00407391 B0 02 MOV AL,2
00407393 EB 09 JMP SHORT Ekd5.0040739E
00407395 B0 01 MOV AL,1
在16进制里,32就是十进制的50,所以cmp al,32就是检测五围是否大于等于50,也就是是否大于等于游戏里显示的100(因为游戏里显示的五围是X2了的)。
同理 28=十进制的40,23=35,1E=30.2D=45,可以自己打开WIN自带的计算器换算。
红字是STAR新添加的(五围100时,增加的X档);
蓝字是S档,绿字是A,B,C档,是EXE里原有的。
1.打开OLLYDBG,把蓝字和绿字这两段用“二进制复制”COPY一遍,
2.再把蓝字部分改成红字部分,
3.然后选取所有的绿字部分(记住还要复制绿字后面的一堆空白),“二进制粘贴”,就可以了。
(其意义就是,把S,A,B,C四档的代码复制,再把S档改成X档,然后把A档开始复制,A档就变成了S档,以此类推,最后面空出来空白成为C档。)
但记住,注意绿字下面是不是空白(也就是一堆显示“INT3”的代码),如果不是,那么就比较复杂了,不能按上面的方法,要用一个跳转。
我大概就是说明一下基本的用法,我也不会用汇编……建议看毅大的教学贴,可能可以明白一些。
|