大航海時代2 全村落 探索 MD ROM 靜態 HACKER


 開篇 - 來個低級語言的 MC68000匯編  大航海時代2 全村落 MD ROM的 HACKER

     最近心血來潮,看到MD的大航海時代2 ROM,勾起了很多記憶。一直想要周游全世界,仗劍走天涯,看一看世界的繁華,只奈沒錢,沒時間。

只能回憶當年玩MD大航海時代2的時候的美好時光,因為當年一心想要發現全世界的發現物,但是后來發現是不可能的,開局隨機的,一直想要解決這個問題,今天決定HACKER一下這個ROM。

 

目標:大航海時代2 全村落 探索 MD ROM 靜態 HACKER

工具:IDA ,REGEN,MESSUI 

要求技術:懂一點摩托羅拉MC68000的匯編

 

找到ROM,大航海時代2純中文版原版.smd ROM ,感覺這個比較純,雖然當年玩的都是日文版,那就以這個開始吧。

接下來咋整? 直接運行ROM? 找初始化代碼? 沒有思路?

看來要找到初始化村落的內存地址,地址怎么找? EC代碼呀,去看看有沒有,果然發現了 EC代碼,說 5C25=64 ?啥意思呢

就是說把內存地址: 5C25 SET 為64(16進制),那么說干就干

下斷點:  messui 工具下斷點:

 

wp ff5C25,2,w

 

查看一下內存的內容:

注意內存查看要加上 ff5c25

注意看內存:

 ff5c15 都FFFF 的,大膽猜測: ff5c1E 為村落內存開始數據:  ff5c1E 

 剛才運行系統運行到2個斷點:

先放過,ROM開始初始化,再次查看內存

 

經過N次測試,花了N多的時間,發現

00A8 010E 000A 8400, 這組數據 一個村落的顯示,第一村落應該是英國的石蹲,00A8 010E應該為經緯度,具體算法沒有去跟蹤,8400 這組數據

8表示無法發現,6表示已經發現,0表示可以發現。

 

那么再次下斷點:

wp ff5C24,1,w

進行寫入下斷點,終於跟蹤來的關鍵代碼位置,(當然,這個里面花了N多時間),數據初始化是人物在選擇確定后,進行是否能否的初始化工作的。等下貼反匯編代碼

定位到關鍵代碼,用IDA工具:

 

 第一行    A2就是我們斷點鎖定的位置,直接初始化設計為 8X,剛才說過 8表示是無法探索到的,

后面二行是進行循環初始化,一共是  98個村落,

    

然后產生隨機數據,選擇 50個村落設置為可以探索到。

 

修改思路:

   思路1、直接把初始化村落設置為98個,測試發現死循環。  應該是隨機數設定的問題,可以修改指令跳過。 感覺比較麻煩。

   思路2、 能否直接初始化的時候設置為全部可以探索,再隨機設置5個保留(可能有國王尋寶的任務)。這個思路應該修改的代碼比較少。

我這里采用思路2方式:

 

 ori.b   #$80,6(a2)  修改為 andi #$0,(a2) ,

 cmpi.b  #$32,d2 ; '2'

  32修改為5,下面還有跳轉的驗證,可以跟蹤指令一一去掉,如果遇到死循環,可以單步調試。

修改指令工具可以用:

直接用16進制修改指令, 另外

 

 

 

 這2出也要注意處理一下。 可能存在跳轉問題。

 

 好,hacker 基本結束。CRS修正不要忘了。 

 另。我放上我的修改后的ROM:

大航海時代2純中文版-全村落版.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM