kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2012-07-18

Prince of Persia 波斯王子1 PrinceBot

PrinceBot
這是個簡單的 Bot,功能有自動載入/關閉遊戲,補血,補時間。
自動載入遊戲後,再按一次 Enter ,就會更新時間及血量,必須進到遊戲畫面後,才有數值可以抓取,預設是血10,時間100,執行畫面如下。

 
使用說明:

先確認各路徑是否正確,否則會讀不到遊戲或DOSBox。

模擬器 DOSBox  位於

C:\Program Files\DOSBox-0.74 

如果版本不一樣,請修改路徑為0.74 (同上)

Prince of Persia  位於

C:\Prince

請解壓縮後,自行 copy 過去


遊戲操作:

請參考前文  Prince of Persia 波斯王子1 


有興趣寫程式的參考:

人物的PID: 0x071e0020  >> 這個值每台電腦都不一樣
可以在這裡  0x0074B6B0 讀4個 bytes 取得 pid。

人物的血容量 是在位址 0x07202712 = pid offset 226f2
人物的血量 是在位址 0x072013b8 = pid offset 21398
遊戲時間 是在位址 0x0720169e = pid offset 2167e

修改要先改容量,再改血量,不然沒用。
時間就直接更新就行了。

技術參考:

血容量
00486ED0 - 85 C0  - test eax,eax
00486ED2 - 0F84 FBA20000 - je 004911D3
00486ED8 - 0FB7 14 08   - movzx edx,word ptr [eax+ecx] <<
00486EDC - 0FB7 05 3029B901  - movzx eax,word ptr [LoadDLS+15DC090]
00486EE3 - B9 17000000 - mov ecx,00000017


0047A765 - 85 C0  - test eax,eax
0047A767 - 0F84 6F180100 - je 0048BFDC
0047A76D - 66 89 1C 08   - mov [eax+ecx],bx <<
0047A771 - 8B 35 C8B07400  - mov esi,[LoadDLS+194828]
0047A777 - E9 14D6FFFF - jmp 00477D90

時間
0049D32B - 85 C0  - test eax,eax
0049D32D - 0F84 EF000000 - je 0049D422
0049D333 - 66 89 0C 18   - mov [eax+ebx],cx <<
0049D337 - 8B 35 C8B07400  - mov esi,[LoadDLS+194828]
0049D33D - BB 1D000000 - mov ebx,0000001D

人物-x
004775BB - 85 C0  - test eax,eax
004775BD - 0F84 76040000 - je 00477A39
004775C3 - 66 89 0C 18   - mov [eax+ebx],cx <<
004775C7 - 01 7C 24 3C  - add [esp+3C],edi
004775CB - 8B 5C 24 38  - mov ebx,[esp+38]

人物-y
004775BB - 85 C0  - test eax,eax
004775BD - 0F84 76040000 - je 00477A39
004775C3 - 66 89 0C 18   - mov [eax+ebx],cx <<
004775C7 - 01 7C 24 3C  - add [esp+3C],edi
004775CB - 8B 5C 24 38  - mov ebx,[esp+38]

遊戲座標圖


外掛下載: PrinceBot20130218.rar 231kb
(內含 PrinceBot 說明及前一版載入器 PrinceLoader ,PrinceLoader 只載入,不修改,原汁原味的玩),這是 dropbox 的硬碟,不錯用。

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)