反三國志我方無敵加敵方一碰即死程式碼 (3千字)

看雪資料發表於2015-11-15

反三國志我方無敵加敵方一碰即死程式碼

媽的安個寬頻居然還要等一週才能給安,上不了網只好在家裡玩RPG,這兩天玩反三國志,戰鬥真沒意思一場要半天才能結束,一怒之下修改成無敵模式了!~^_^

先用金山遊俠搞定HP地址,存放在728450開始的一段記憶體中(包括所有人物的...)然後利用bpm找到減血的程式碼,因為很簡單所以不再羅嗦...程式碼就在下面了...

0041FEEF  |. 56              PUSH ESI
0041FEF0  |. 03D1            ADD EDX,ECX //原來的血減去應掉的血
0041FEF2  |. 8990 50847200  MOV DWORD PTR DS:[EAX+728450],EDX //儲存HP
0041FEF8  |. 8BF2            MOV ESI,EDX

因為這是個公用減血模組,敵方我方都用這塊程式碼,遊戲傻啊!還得我們自己判斷,靠!唉...先找個地方放自己程式碼吧...

我找了一塊從406891開始的,裡面全是03,挺怪,不過反正沒見哪裡用到,將就一下先...^_*

加個跳板跳到我的程式碼:

0041FEEF   .^E9 9D69FEFF JMP SANGUO.00406891 //這裡原來是負責處理減血的語句,現在我們自己來處理:)
0041FEF4     90                   NOP
0041FEF5     90                   NOP
0041FEF6     90                   NOP
0041FEF7     90                   NOP
0041FEF8   > 8BF2                 MOV ESI,EDX

處理的程式碼:

00406891   > 56                   PUSH ESI
00406892   . 50                   PUSH EAX
00406893   . 52                   PUSH EDX
00406894   . 8B15 F0FCB600   MOV EDX,DWORD PTR DS:[B6FCF0] //B6FCF0裡面存放的是我方人員數目,遊戲利用這個數來對我方和敵方排序,
0040689A   . 69D2 E40A0000  IMUL EDX,EDX,0AE4 //我們利用這一點來確保在自己人沒有不受傷害
004068A0   . 05 E40A0000      ADD EAX,0AE4 //每隔AE4個位元組是一個新的人物的HP...
004068A5   . 3BC2                 CMP EAX,EDX //判斷是否是自己人^_*
004068A7   . 5A                   POP EDX
004068A8   . 58                   POP EAX
004068A9   . 77 0D                JA SHORT SANGUO.004068B8 //如果大於說明是敵軍
004068AB   . 33C9                 XOR ECX,ECX //ECX是應掉的血
004068AD   . 8990 50847200  MOV DWORD PTR DS:[EAX+728450],EDX //這裡是我方HP所在,將傷害減為0!
004068B3   . E9 40960100      JMP SANGUO.0041FEF8 //控制權交還給遊戲
004068B8   > 33D2                 XOR EDX,EDX //敵方的HP減為0!!!嘿嘿,夠狠吧,我8級的時候去砍青龍賺了N多經驗哦!
004068BA   . 8990 50847200  MOV DWORD PTR DS:[EAX+728450],EDX //存入敵方HP所在地
004068C0   . E9 33960100      JMP SANGUO.0041FEF8
004068C5     90                   NOP
004068C6     90                   NOP
004068C7     90                   NOP
004068C8     90                   NOP

中間用到的B6FCF0這個地址也很簡單可以得到,因為每次戰鬥的時候遊戲負責分配給每個怪物HP存放空間,並且這個空間還要照顧到我方人員的數目(從我方最後一名人員開始存放)...

而我們知道每個人物的HP存放特點(每AE4位元組就是一個了),所以我在第一個怪物應用到的地址下個寫記憶體斷點,然後隨機遇敵一次,然後就能找到遊戲排序存放HP的地方了...

我提供一下具體地址:

0041E82D  |REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI//WE BREAK HERE!!! LOOP ABOVE!

上面的程式碼:

0041E7B0  MOV EAX,DWORD PTR DS:[71F838] 
0041E7B5  MOV EDI,DWORD PTR DS:[B6FCF0] //這裡存放我方人員數目
0041E7BB  MOV EDX,DWORD PTR SS:[ESP+20]
...
0041E82D  |REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI//WE BREAK HERE!!! LOOP ABOVE!
0041E82F  |MOV DWORD PTR DS:[EBX+9E0],EAX


其它物品之類的統統可以利用遊俠搞定我就不廢話了...

相關文章