1、熟練的C語言知識 目前的外掛大部分都是用BC或者是vc寫的,擁有熟練的C語言知識是寫外掛的基本條件
2、具有很強的彙編基礎 一般遊戲都不可能有原始碼的,必須靠反彙編或者跟蹤的辦法來探索其中的機理 ,所以有強的彙編基礎也是必不可少的條件
3、熟練掌握跟蹤和除錯的工具
有了上面2個條件後,掌握一些工具也是很有必要的 跟蹤的工具,softice當然是不二之選,至於反彙編的工具,我推薦用IDAPRO 這個工具反彙編出來的程式碼結構清晰,非常好讀 如果你不具有上面的條件,還是先把基礎打好,再來寫外掛吧,一分耕耘,一分收穫,天下沒有白掉的餡餅的
二、寫外掛面臨的基本技術問題
1、修改程序的執行程式碼 要修改程序的執行程式碼,要先取得程序的ID,如果是由外掛程式啟動,返回值裡就有程序ID,如果不是的話, 需要用findwindow找到視窗控制代碼,再用GetWindowProcessID取得程序ID,取得程序ID以後,就可以用 writeprocessmemory來修改程序的執行程式碼了,使程式按照我們的意願來執行,石器外掛裡的不遇敵、寸步遇敵 就是用這樣的方法來實現的
2、截獲外掛傳送和接收的封包 除了透過修改程式碼來實現的功能以外,很多的功能都是透過修改封包來實現的,要修改封包,首先要能截獲它。 個jmp語句,跳到你的處理函式位置,處理完後,再跳回來,這種方法要求比較高,需要處理好很多事情,另一種辦法 是往那個位置寫條能造成例外的指令,比如int3,然後用DebugActiveProcess除錯遊戲程序,這樣每當遊戲執行到那個 位置的時候,就會停下來,到外掛程式裡面去,等外掛程式處理完以後,用ContinueDebugEvent繼續執行程式。
今天來談談地址的調查問題,地址調查是寫外掛中最艱辛,最富有挑戰性的事情,很多朋友問我要外掛的原程式,其實有了外掛原程式,如果你不會調查地址,還是沒用的, 原程式和地址的關係就象武學中招式與內功的關係,沒有內功的招式,只是一個花架子。
而內功精深以後,任何普通的招式,都有可能化腐朽為神奇,外掛中的地址分為兩類,一類是程式地址,一類是資料地址。象石器中的雙石器,真彩,不遇敵,寸步遇敵,傳送接收封包等,都屬於第一類,而人物座標,狀態等,都屬於第二類。對於第一類地址,主要依靠softice來調查地址,對第二類地址,可以用一些遊戲工具,比如fpe,gameexpert,gamemaster等來調查,我一直用gameexpert,因為我找不到2000下能用的fpe, 各位以前用fpe改遊戲的時候,沒想過他也能用來幹這個吧
對於第二類資料的調查方法,大部分人都很熟習了,我就不多說了,現在主要來談談第一類資料的詳細調查過程,比如我們要調查傳送封包的位置,如何著手呢,客戶端往伺服器要發很多封包,但最簡單的辦法莫過從說話的封包入手,先說一句很長的話,最好是英文,查起來方便,說完以後,用任意一種辦法進入遊戲程式的程序空間(比如先用spy查出遊戲程式的視窗控制代碼,再切換到softice打入bmsg視窗控制代碼wm_lbuttondown,這樣在遊戲程式中一點滑鼠就進入了他的程序空間)然後用s命令查出這句話所放的記憶體地址
,記下這個地址,在softice中打入bpm剛才調查到的地址,這個指令的意思是隻要有訪問這個記憶體的動作,立刻中斷,然後再切換到遊戲,說一句話,你會發現softice自動中斷到某一個位置了,從這個位置跟蹤下去,傳送封包的位置也就不遠了。
上面所說的都是針對一個全新的遊戲程式而言,如果是一個老的程式,有前輩做了大量的工作,還可以用些別的辦法,如反彙編等,來調查。以後遊戲版本的更新也是如此,只要把老版本的地址位置附近的程式碼記下來,去新版本的程式碼裡面search一下,就ok了。 恩,休息一會兒,休息一會兒
1、熟練的C語言知識 目前的外掛大部分都是用BC或者是vc寫的,擁有熟練的C語言知識是寫外掛的基本條件
2、具有很強的彙編基礎 一般遊戲都不可能有原始碼的,必須靠反彙編或者跟蹤的辦法來探索其中的機理 ,所以有強的彙編基礎也是必不可少的條件
3、熟練掌握跟蹤和除錯的工具
有了上面2個條件後,掌握一些工具也是很有必要的 跟蹤的工具,softice當然是不二之選,至於反彙編的工具,我推薦用IDAPRO 這個工具反彙編出來的程式碼結構清晰,非常好讀 如果你不具有上面的條件,還是先把基礎打好,再來寫外掛吧,一分耕耘,一分收穫,天下沒有白掉的餡餅的
二、寫外掛面臨的基本技術問題
1、修改程序的執行程式碼 要修改程序的執行程式碼,要先取得程序的ID,如果是由外掛程式啟動,返回值裡就有程序ID,如果不是的話, 需要用findwindow找到視窗控制代碼,再用GetWindowProcessID取得程序ID,取得程序ID以後,就可以用 writeprocessmemory來修改程序的執行程式碼了,使程式按照我們的意願來執行,石器外掛裡的不遇敵、寸步遇敵 就是用這樣的方法來實現的
2、截獲外掛傳送和接收的封包 除了透過修改程式碼來實現的功能以外,很多的功能都是透過修改封包來實現的,要修改封包,首先要能截獲它。 個jmp語句,跳到你的處理函式位置,處理完後,再跳回來,這種方法要求比較高,需要處理好很多事情,另一種辦法 是往那個位置寫條能造成例外的指令,比如int3,然後用DebugActiveProcess除錯遊戲程序,這樣每當遊戲執行到那個 位置的時候,就會停下來,到外掛程式裡面去,等外掛程式處理完以後,用ContinueDebugEvent繼續執行程式。
今天來談談地址的調查問題,地址調查是寫外掛中最艱辛,最富有挑戰性的事情,很多朋友問我要外掛的原程式,其實有了外掛原程式,如果你不會調查地址,還是沒用的, 原程式和地址的關係就象武學中招式與內功的關係,沒有內功的招式,只是一個花架子。
而內功精深以後,任何普通的招式,都有可能化腐朽為神奇,外掛中的地址分為兩類,一類是程式地址,一類是資料地址。象石器中的雙石器,真彩,不遇敵,寸步遇敵,傳送接收封包等,都屬於第一類,而人物座標,狀態等,都屬於第二類。對於第一類地址,主要依靠softice來調查地址,對第二類地址,可以用一些遊戲工具,比如fpe,gameexpert,gamemaster等來調查,我一直用gameexpert,因為我找不到2000下能用的fpe, 各位以前用fpe改遊戲的時候,沒想過他也能用來幹這個吧
對於第二類資料的調查方法,大部分人都很熟習了,我就不多說了,現在主要來談談第一類資料的詳細調查過程,比如我們要調查傳送封包的位置,如何著手呢,客戶端往伺服器要發很多封包,但最簡單的辦法莫過從說話的封包入手,先說一句很長的話,最好是英文,查起來方便,說完以後,用任意一種辦法進入遊戲程式的程序空間(比如先用spy查出遊戲程式的視窗控制代碼,再切換到softice打入bmsg視窗控制代碼wm_lbuttondown,這樣在遊戲程式中一點滑鼠就進入了他的程序空間)然後用s命令查出這句話所放的記憶體地址
,記下這個地址,在softice中打入bpm剛才調查到的地址,這個指令的意思是隻要有訪問這個記憶體的動作,立刻中斷,然後再切換到遊戲,說一句話,你會發現softice自動中斷到某一個位置了,從這個位置跟蹤下去,傳送封包的位置也就不遠了。
上面所說的都是針對一個全新的遊戲程式而言,如果是一個老的程式,有前輩做了大量的工作,還可以用些別的辦法,如反彙編等,來調查。以後遊戲版本的更新也是如此,只要把老版本的地址位置附近的程式碼記下來,去新版本的程式碼裡面search一下,就ok了。 恩,休息一會兒,休息一會兒