相信很多人打遊戲的時候都用修改器,這裡我介紹怎樣用vb編寫修改器。
1、其實修改器原理很簡單,一般來說,在遊戲執行的時候我們對遊戲記憶體空間中必要的資料進行修改就可以了。舉個例子來說,一款拳皇模擬器裡遊戲人物的「血」位址是&h567dc0,當這個人物挨打的時候,這個位址的資料就要減少,只要我們把這個資料再改回去,人物的「血」就有了。要是我們作乙個迴圈,不斷地保持這個位址得數不變化,這個人就「百戰不殆」了。 :)
2、但是我們怎麼查詢這個關鍵的位址哪?可以用遊戲修改器嘛,比如金山遊俠,gm之類。至於要改的資料也同樣啦。
3、程式的流程: 首先用findwindow函式查詢到遊戲視窗,再用getwindowthreadprocessid獲得程序識別符號,然後用openprocess函式取得遊戲程序控制代碼,最後writeproces**emory把資料寫到相應的位址。要是需要讀資料,用readproces**emory函式就可以了。 我在這裡以修改變臉王為例來說明。具體進入下面的鏈結。
值得注意的2個問題:
1、無法使用findwindow函式怎麼辦? findwindow函式需要提供窗體的標題才可以使用,但是有些遊戲很難做到這一點。比如搶灘登陸,它的視窗標題很難查詢到,還有一款日本鳥遊戲,視窗標題是日本話,根本打不出來。碰到這種情況怎麼辦哪? 比較正式且常見的方法是逐條查詢當前所有的程序,找出來遊戲程序就找到遊戲程序控制代碼了。這種方法別的地方都有介紹。我這裡介紹一種比較笨但比較簡單的方法。 由於getforegroundwindow可以找到桌面最上方的視窗,所以我們只要設定乙個時間,比如在程式中設定3秒鐘,讓使用者在3秒鐘以內進入遊戲介面,我們在3秒以後在呼叫這個函式,獲得的自然就是遊戲程序了。呵呵.... 下面有乙個例子來演示這個原理。
2、查出的位址不斷變化怎麼辦? 有些遊戲資料的儲存位址是隨機變化的,比如紅色警戒的金錢,這次查出來的位址是這個,下次不知道是什麼,這種問題遇到後你就不知道應該修改的記憶體位址。碰到這種情況怎麼辦哪? 這種問題需要利用動態除錯來解決。我這裡拿紅色警戒來說明一下原理,其他情況也類似。紅色警戒的金錢存放的位址是不斷變化的,但是這個位址是由乙個確定的地方產生的,就是說程式中有乙個確定的地方,這個地方每次隨機產生乙個位址,程式就把金錢放到這個地方。我們只要找到那個位址**就好辦了。 但怎麼找那個地方哪?先進入遊戲,用金山遊俠查出來錢的位址,比如說是c16a0450h。然後f5調入trw2000,下命令bpm c16a0450 w ,就是說當程式寫c16a0450h記憶體位址的時候中斷。在這個中斷的地方比如說有乙個包含[eax]的命令(具體命令我忘記了,你再查一下吧),然後檢視d [eax] ,如果看到這裡是c16a0450,那就說明找到位址**了。把這個位址記下來,但是我們編寫程式的時候仍然無法讀取[eax],這就需要使用**c(self modify code)技術,可以編寫乙個補丁,在這個位址處寫乙個跳轉,跳到另外乙個地方,把[eax]的內容寫入乙個固定的記憶體位址,比如說 mov 005a627b,[eax] ,這樣寫遊戲修改器的時候就可以用readproces**emory直接讀005a627b的內容,這個內容就是錢的位址了。以後的修改方法就按照上面介紹的方法修改就可以了。 我沒寫過這樣的程式,只不過動態除錯了一下,實踐證明這種方法是可行的。你要是不知道**c之類的,可以去www.pediy.com
的論壇裡問一問,並不是太麻煩。
關於記憶體補丁的問題:
記憶體補丁和遊戲修改是一樣的。用這種方法編寫的記憶體補丁有很多好處:
1、可以擺脫一些加殼軟體的干擾,比如asprotect加密過的軟體沒法作記憶體補丁,因為它有乙個anti-debug功能;
2、對於一些光碟上的檔案有效,通用的記憶體補丁一般都要求把補丁程式和軟體放在同乙個目錄中,但是如果從光碟上安裝軟體,你就無法把補丁放入光碟中,但是自己編寫補丁就不存在這個問題了;
3、當然是鍛鍊自己的能力了,呵呵。我的表達能力不好,有什麼不懂得地方可以和我**一下,不過一般來說我可以給你解釋一下,但我不會看你的**,因為我現在實在沒功夫了。下面我給出一些**,乙個是變臉王的記憶體補丁,還有乙個修改視窗標題的程式,都是用vb寫的。不要說我沒有把所用的控制項列出來,要是你連這都不知道也就不用看了。 :) 附件為vb**。
C 打造傳奇遊戲修改器!(原始碼 文件)附帶教學
c 曾經寫的傳奇遊戲修改器原始碼,傳奇遊戲現在已經不流行了,這個程式是在傳奇風靡一時的時候寫的,曾經在遊戲上測試過,很好用,源 可以在vc6或者vs2003以上的版本中編譯。通過本程式可以讓程式設計開發者了解遊戲修改器的編寫過程,大多都會用到了一些網路知識,因此在這之前你估計要對網路程式設計有所了解...
修改器 inc 增加和減少
修改器 inc 用來增加已有鍵的值,或者 鍵不存在時 建立鍵。它 用來 專門 增加 或減少 數字的。inc 只能用於 整數 長整數 或 雙精度浮點數 修改其他型別 會失敗報錯,即使其他多種語言中能自動轉換的型別 如 null 布林 或 數字構成字串 都是不行的。報錯字串 如下 modifier in...
手把手教你寫遊戲修改器
在玩遊戲的時候,很多人還是喜歡用修改器的 本人一樣哈 但是很多網上下的修改器,要麼不能用,要麼有毒,很不爽,因此還是自己動手豐衣足食吧。下面就以植物大戰殭屍為例,一步一步教大家寫植物大戰殭屍的修改器。首先大家應該對程序有一定的認識。說下大體思路吧,我們知道乙個程序在執行時系統會分配一定的記憶體供這個...