❶ 怎麼做游戲輔助需要什麼工具
1 游戲輔助工具的原理
輔助工具現在分為好多種,比如模擬鍵盤的,滑鼠的,修改數據包的,還有修改本地內存的,但好像沒有修改伺服器內存的哦,呵呵!其實修改伺服器也是有辦法的,只是技術太高一般人沒有辦法入手而已!(比如請GM去夜總會,送禮,收黑錢等等辦法都可以修改伺服器數據,哈哈)
修改游戲無非是修改一下本地內存的數據,或者截獲api函數等等,這里我把所能想到的方法都作一個介紹,希望大家能做出很好的輔助工具來使游戲廠商更好的完善自己的技術.
我見到一片文章是講魔力寶貝的理論分析,寫的不錯,大概是那個樣子.
下來我就講解一下技術方面的東西,以作引玉之用2 技術分析部分
1 模擬鍵盤或滑鼠的響應
我們一般使用
UINT SendInput(
UINT nInputs, // count of input events
LPINPUT pInputs, // array of input events
int cbSize // size of structure
);api函數
第一個參數是說明第二個參數的矩陣的維數的,第二個參數包含了響應事件,這個自己填充就可以,最後是這個結構的大小,非常簡單,這是最簡單的方法模擬鍵盤滑鼠了,呵呵
注意:這個函數還有個替代函數:
VOID keybd_event(
BYTE bVk, // 虛擬鍵碼
BYTE bScan, // 掃描碼
DWORD dwFlags,
ULONG_PTR dwExtraInfo // 附加鍵狀態
);和
VOID mouse_event(
DWORD dwFlags, // motion and click options
DWORD dx, // horizontal position or change
DWORD dy, // vertical position or change
DWORD dwData, // wheel movement
ULONG_PTR dwExtraInfo // application-defined information
);
這兩個函數非常簡單了,我想那些按鍵精靈就是用的這個吧,呵呵,上面的是模擬鍵盤,下面的是模擬滑鼠的.
這個僅僅是模擬部分,要和游戲聯系起來我們還需要找到游戲的窗口才行,或者包含快捷鍵,就象按鍵精靈的那個激活鍵一樣,我們可以用GetWindow函數來枚舉窗口,也可以用Findwindow函數來查找制定的窗口(注意還有一個FindWindowEx),FindwindowEx可以找到窗口的子窗口,比如按鈕,等什麼東西.當游戲切換場景的時候我們可以用FindWindowEx來確定一些當前窗口的特徵,從而判斷是否還在這個場景,方法很多了,比如可以GetWindowInfo來確定一些東西,比如當查找不到某個按鈕的時候就說明游戲場景已經切換了,等等辦法.有的游戲沒有控制項在裡面,這是對圖像做坐標變換的話,這種方法就要受到限制了.這就需要我們用別的辦法來輔助分析了.
至於快捷鍵我們要用動態連接庫實現了,裡面要用到hook技術了,這個也非常簡單,大家可能都會了,其實就是一個全局的hook對象然後SetWindowHook就可以了,回調函數都是現成的,而且現在網上的例子多如牛毛,這個實現在輔助工具中已經很普遍了.如果還有誰不明白,那就去看看msdn查找SetWindowHook就可以了.
這個動態連接庫的作用很大,不要低估了哦,它可以切入所有的進程空間,也就是可以載入到所有的游戲裡面哦,只要用對,你會發現很有用途的!
這個需要你復習一下win32編程的基礎知識了,呵呵,趕快去看書吧!2截獲消息
有些游戲的響應機制比較簡單,是基於消息的,或者用什麼定時器的東西,這個時候你就可以用攔截消息來實現一些有趣的功能了.
我們攔截消息使用的也是hook技術,裡麵包括了鍵盤消息,滑鼠消息,系統消息,日誌等,別的對我們沒有什麼大的用處,我們只用攔截消息的回調函數就可以了,這個不會讓我寫例子吧,其實這個和上面的一樣,都是用SetWindowHook來寫的,看看就明白了很簡單的.
至於攔截了以後做什麼就是你的事情了,比如在每個定時器消息裡面處理一些我們的數據判斷,或者在定時器裡面在模擬一次定時器,那麼有些數據就會處理兩次,呵呵,後果嘛,不一定是好事情哦,呵呵,不過如果數據計算放在客戶端的游戲就可以真的改變數據了,呵呵,試試看吧!用途還有很多,自己想也可以想出來的,呵呵!3攔截socket包
這個技術難度要比原來的高很多哦,要有思想准備.
首先我們要替換winSock.dll或者winsock32.dll,我們寫的替換函數要和原來的函數一致才行,就是說它的函數輸出什麼樣的,我們也要輸出什麼樣子的函數,而且參數,參數順序都要一樣才行,然後在我們的函數裡面調用真正的winSock32.dll裡面的函數就可以了
首先:我們可以替換動態庫到系統路徑
其次:我們應用程序啟動的時候可以載入原有的動態庫,用這個函數LoadLibary
然後dingwei函數入口用GetProcAddress函數獲得每個真正socket函數的入口地址
當游戲進行的時候它會調用我們的動態庫,然後從我們的動態庫中處理完畢後才跳轉到真正動態庫的函數地址,這樣我們就可以在裡面處理自己的數據了,應該是一切數據.呵呵!
興奮吧,攔截了數據包我們還要分析之後才能進行正確的應答,不要以為這樣工作就完成了,呵呵!還早呢,等分析完畢以後我們還要模擬應答機制來和伺服器通信,一個不小心就會被封號,呵呵,嗚~~~~~~~~我就被封了好多啊!
分析數據才是工作量的來源呢,游戲每次升級有可能加密方式會有所改變,因此我們寫輔助工具的人都是亡命之徒啊,被人娛樂了還不知道,呵呵!(聲明我可沒有賺錢,我是免費的)
socket源代碼下載4截獲api
上面的技術如果可以靈活運用的話我們就不用截獲api函數了,其實這種技術是一種補充技術.比如我們需要截獲socket以外的函數作為我們的用途,我們就要用這個技術了,其實我們也可以用它直接攔截在socket中的函數,這樣更直接.
現在攔截api的教程到處都是,我就不列舉了,我用的比較習慣的方法是根據輸入節進行攔截的,這個方法可以用到任何一種操作系統上,比如98/2000等,有些方法不是跨平台的,我不建議使用.這個技術大家可以參考windows核心編程裡面的545頁開始的內容來學習,如果是98系統可以用window系統奧秘那個最後一章來學習.
好了方法就是這么多了,看大家怎麼運用了,其它的一些針對性的技巧這里我就不說了,要不然會有人殺了我的,呵呵!記住每個游戲的修改方法都不一樣,如果某個游戲數據處理全部在伺服器端,那麼你還是別寫輔助工具了,呵呵,最多寫個自動走路的輔助工具,哈哈!
數據分析的時候大家一定要注意,不要輕易嘗試和伺服器的連接,因為那有很危險,切忌!等你掌握了大量的數據分析結果以後,比較有把握了在試試,看看你的運氣好不好,很有可能會成功的哦,呵呵!
下面給個VB例子吧。
自己加幾個checkbox試試。
傳說中的一個傳奇的輔助工具
功能是讓魔法像跟蹤彈一樣。
原理是讓滑鼠快速移動,讓人名標簽還在屏幕上。實際上只是改一下滑鼠位置。
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As LongPrivate Function MyHotKey(vKeyCode) As Boolean
MyHotKey = GetAsyncKeyState(vKeyCode) < 0
End Function
Private Sub Timer1_Timer()
Dim i As Integer
For i = 0 To 7
If MyHotKey(112 + i) And Check1(0).Value = 1 Then
If Option1.Value = True Then
SetCursorPos 0, 599
End If
If Option2.Value = True Then
SetCursorPos 0, 767
End If
End If
Next i
End Sub
❷ 怎樣製作游戲輔助
做游戲輔助程序的原理及方法原 理 就 是 調 用 外 部 ( 游 戲 ) EXE 文 件 對 話 原 理 1 可 以 采 用 參 數 2 采 用 進 程 通 信 用 參 數 傳 遞 主 機 信 息 和 一 些 信 息 用 進 程 通 信 實 現 驗 證 是 否 是 我 項 目 中 的 游 戲 。 要看是什麼 游戲的輔助程序, 單機版游戲的輔助程序無非就是讀內 存中 的數據進行修改, 網 絡 游 戲 的 是 攔 截 數 據 包 進 行 修 改 . 摘 錄 : 輔助程序現在分為好多種, 比如模擬鍵盤的, 滑鼠的, 修改數據包的, 還有修改本地內存的, 但好像沒有 修 改 服 務 器 內 存 的 哦 。 修改游戲無非是修改一下本地內存的數據, 或者截獲 API 函數等等。 這里我把所能想到的方法都作一個介紹, 希望大家能做出很好的輔助程序來使游戲廠商更好的完善自己的技術。 我見到一篇文章是講魔力寶 貝 的 理 論 分 析 , 寫 得 . . . . . . . 進 程 間 通 信 , 你 開 發 的 什 么 輔 助 程 序 啊 。 那 你 還 要 啟 動 主 程 序 , 真 正 的 輔 助 程 序 是 模 擬 的 客 戶 端 , 不 用 啟 動 主 程 序 。 要 做 的 工 作 太 多 了 。 先 要 截 獲 登 入 網 絡 封 包 , 用 動 態 調 試 軟 件 截 獲 網 絡 接 受 封 包 也 就 是 rectveto 函 數 , 然 後 找 到 加 密 的 地 方 , 全 是 匯 編 , 然 後 翻 譯 為 你 寫 輔 助 程 序 的 語 言 。 然 後 把 截 獲 的 封 包 來 解 密 , 想 出 登 入 的 通 信 協 議 。 然 後 做 一 個 程 序 發 送 該 加 密 信 息 , 得 到 服 務 器 返 回 的 數 據 。 在進行解密分析任務屬性。 這樣一來一樣破解出登入的信息至少要 1 天。 這是高手中的高手。 一 般 破 解 出 大 部 分 通 信 協 議 要 一 段 時 間 , 決 不 是 什 么 進 程 間 通 信 。 這 樣 你 可 以 任 意 修 改 網 絡 的 數 據 封 包 發 送 模 擬 信 息 。 要 完 成 所 有 的 通 信 協 議 怎 么 也 要 有 一 個 月 。 所 以 輔 助 程 序 沒 有 專 門 的 公 司 一 般 只 有 一 點 點 功 能 。 向 什 么 , 瞬 間 移 動 , 就 不 是 發 送 了 一 個 平 常 的 數 據 把 坐 標 發 過 去 就 可 以 了 。 但是有些做得好的網路游戲, 它的主機會判斷你在這么短的時間裡面, 不可能移動著么遠的距離。 所以有些 輔 助 程 序 只 能 穿 牆 , 等 等 那 就 是 移 動 了 一 點 點 距 離 。 伺服器的解決辦法, 把牆加厚, 厚到你不可能在短時間通過, 哈哈輔助程序失效。 我 可 以 提 供 我 寫 的 截 獲 網 絡 封 包 程 序 , 解 密 工 作 要 大 家 自 己 做 了 。 應 為 我 的 匯 編 也 不 怎 么 的 , 只 能 拿 到 匯 編 論 壇 , 請 大 哥 翻 譯 。 動 態 調 試 工 具 softi ce, trw2000 trw2000 國 產 軟 件 , 簡 單 好 用 。 支 持 98 softi ce 功 能 強 大 。 支 持 98 , 2000 。 大家要的話在這里留言, 好多的人話我把我原來的程序改寫一下, 提供給大家。 QQ 登入這些信息都可以截 獲 , 但 是 亂 碼 ! 你 要 自 己 破 解 了 加 密 算 法 才 行 。 我 說 兩 句 , 1 、 網 絡 游 戲 , 客 戶 端 和 服 務 器 端 的 幾 種 通 訊 方 式 a 、 直 接 通 過 Wi nSock 編 程 接 口 進 行 , 大 多 數 的 網 絡 游 戲 采 用 這 個 方 式 。 b 、 通 過 HTTP 協 議 進 行 通 訊 , 有 些 網 絡 游 戲 利 用 I E 的 組 件 進 行 通 訊 。 很 少 C、 一種設想: 可以同過 SOAP 協議進行通訊, 還沒有見過這樣的大型網路游戲, 可能很快就會有。 2 、 服 務 器 端 程 序 的 構 造 方 式 通常是一個接受客戶端數據提交和響應客戶端數據請求的資料庫服務程序。 很多的網路游戲用 SQLServer 作為資料庫, 服務程序其實很簡單, 就是接受數據提交和響應數據請求。 有些伺服器端程序給予客戶-服務模型, 只有客戶請求數據他才向客戶傳輸數據, 這樣這個伺服器端演變成了一個普通的資料庫應用的伺服器端。 客戶之間數據同步也都是基於請求-響應模型。 伺服器端通常不主動地向客戶端發送數據。 這種模型有一個漏洞, 就是客戶端可以加快請求的頻率以獲得更多的伺服器相應, 這是某些輔助程序的基本原理。 有些伺服器端可以主動地向客戶端發送數據, 從而避免了這類輔助程序的干擾。 這類伺服器端構造比較復雜, 它需要紀錄鏈接的客戶信息等等。 為了加快響應時間, 平衡負載, 某些伺服器端使用了 Com+技術, 每次客戶請求數據或者更新數據的時候需要提供一個連接標志, 或者當前客戶的狀態。 還有的伺服器端為了加快響應速度, 他根本不紀錄客戶端的狀態, 他也不去資料庫請求數據進行驗證, 客戶端必須自己記住當前的狀態。 為了防止惡意輔助程序, 通常他會檢查新數據和客戶端提交的狀態之間的關系。 3 、 輔 助 程 序 的 基 本 方 式 a、 提高客戶端的時間節律, 這裡面有很多的方式, 一種, 提高時鍾硬體的節律, 和 I ntel 系列的 CPU 的配合的主板在時間控制方式上和早期的 8086 沒有任何差異, 可以直接修改, 在 Wi n2000 下面需要取得 Ri ng0 的許可權, 可以通過Servi ce 程序獲得。 還有一種截獲時間頻率的 API 比如 SetTi mer 之類的 API , 替換成自己的函數, 但是這樣根據不同的游戲控制節律的方式決定。 這一類方式對於伺服器端控制節律的網路 游 戲 是 沒 有 效 果 的 。 b、 修改客戶端的內存, 從而直接修改你需要修改的屬性, 這種方式一般沒有用, 如果伺服器端加強驗證是 很 難 奏 效 的 。 不 過 做 得 巧 妙 也 是 很 有 效 果 的 。 C、 控制客戶端和伺服器端的通訊, 這有很多的辦法, 常見的截獲Wi nsock 的 API 和使用網路過濾驅動程序, 這也有很多的辦法, 可以用增加 Wi nSock 的過濾層, 使用小埠網路驅動程序, 還有一個辦法就是使用代理伺服器截獲。 修改網路封包的方法, 和直接修改內存數據的效果差不多, 但是要靈活很多, 可以採用的策略更多, 取決於伺服器端的如何驗證數據有效的策略, 伺服器端的有效性驗證不可能十全十美,總有漏洞可以鑽, 這需要不斷的實驗和猜測, 如果你認識開發組的人, 那麼要簡單很多了 。 D、 完全的自己的客戶端, 效果和控制通訊一樣, 但是系統資源的耗費要少很多, 畢竟一個大的圖形客戶端佔用 的資源很龐大, 這適合於掛機玩游戲的玩家, 可以 同 時掛上好多 的角 色一起干。 E、 黑客的方式, 入侵伺服器, 直接修改資料庫, 這個方法最有效了, 繞開了一切伺服器的檢查, 不過要小心 GM 的檢查, 不要一次弄上很多, 一天升 2-3 級就可以了 , 否則, 肯定引起懷疑。 如果對方的 SQLServer 伺服器不在防火牆後面, 那麼就更容易一些, 有大量的方法可以採用。 直接攻擊伺服器程序也可以, 或者供給伺服器上面的其他服務, 唯一的目標, 就是植入木馬, 經典的就是緩存溢出攻擊, 如果對方的伺服器程序寫得不好, 一個極品封包就可以使他出錯。 植入了你的木馬, 你再寫一個好用一點的客戶端輔助程序就可以了。 小心坐牢。 如果你清楚電信機房的內幕, 可以攻擊任何和她比較近的伺服器, 比如在同一個網段的其他伺服器, 然後迂迴的攻擊。 不會所有的伺服器都是鐵桶一個, 一個有點漏洞, 其他的都有可能遭殃。 4、 封包破譯, 有很多的網路監控軟體可以使用, 可以直接看到客戶端和伺服器端的通信情況, 解密需要依靠自己的智慧了。 速度快一點, 用兩台電腦, 一個作代理伺服器, 截獲, 並且紀錄通訊的情況, 最簡單的你移動一下角色, 看看發送了什麼數據, 解密都不用作, 直接再發就可以了, 不過如果他整個封包加密,而不是一個數據一個數據的加密, 就很難看出來。 通常加密機制不復雜, 因為伺服器承受不了解、 加密的壓力 , 太 復 雜 的 加 密 他 不 會 用 的 。 分 析 數 據 包 , 主 要 依 靠 猜 測 。 基 本 方 法 就 是 對 比 。 1 、 完整的隔離出一個數據封包, 去掉其他的關於代理的, 或者其他的外加的信息, 這需要你熟悉網路協議。 2 、 對 比 封 包 , 觀 察 不 同 封 包 的 內 容 , 關 鍵 是 甄 別 出 不 同 封 包 之 間 相 同 的 結 構 。 3、 不同封包的差分對比。 上一個封包的狀態和下一個封包之間的微小差異, 客戶端僅僅變動很小, 觀察兩個 封 包 直 接 的 差 異 。 4、 不同用戶的, 相同操作的封包對比。
❸ 怎麼才能自己製作一個游戲輔助
你必須先學會一種編輯語言、我推薦你做外掛用易語言比較好學一點、還要學過各種游戲的HS跟學會搜游戲的地址、有時間加我扣、我給你一些工具跟教程、希望採納、
❹ 怎麼做DNF輔助軟體
首先聲明:這個是在抄別人的,希望能幫到你。
一、先說一下寫一個外掛需要什麼條件
1、熟練的C語言知識
目前的外掛大部分都是用BC或者是Delphi或者是vc寫的,擁有熟練的C語言知識是寫外掛的基本條件!
2、具有很強的匯編基礎
一般游戲都不可能有原代碼的,必須靠反匯編或者跟蹤的辦法來探索其中的機理
,所以有強的匯編基礎也是必不可少的條件
3、熟練掌握跟蹤和調試的工具
有了上面2個條件後,掌握一些工具也是很有必要的
跟蹤的工具,softice當然是不二之選,至於反匯編的工具,我推薦用IDA PRO
這個工具反匯編出來的代碼結構清晰,非常好讀
如果你不具有上面的條件,還是先把基礎打好,再來寫外掛吧,一分耕耘,一分收獲,天下沒有白掉的餡餅的
二、寫外掛面臨的基本技術問題
1、修改進程的執行代碼
要修改進程的執行代碼,要先取得進程的ID,如果是由外掛程序啟動,返回值里就有進程ID,如果不是的話,
需要用findwindow找到窗口句柄,再用GetWindowProcessID取得進程ID,取得進程ID以後,就可以用
writeprocessmemory來修改進程的執行代碼了,使程序按照我們的意願來執行,石器外掛里的不遇敵、寸步遇敵
就是用這樣的方法來實現的
2、截獲外掛發送和接收的封包
除了通過修改代碼來實現的功能以外,很多的功能都是通過修改封包來實現的,要修改封包,首先要能截獲它。
第一步是要跟蹤出發和收的位置,至於怎麼跟蹤,我以後會提到,找到位置以後,有2個辦法,一是在那個位置加一
個jmp語句,跳到你的處理函數位置,處理完後,再跳回來,這種方法要求比較高,需要處理好很多事情,另一種辦法
是往那個位置寫條能造成例外的指令,比如int 3,然後用DebugActiveProcess調試游戲進程,這樣每當游戲執行到那個
位置的時候,就會停下來,到外掛程序裡面去,等外掛程序處理完以後,用ContinueDebugEvent 繼續運行程序。
今天先寫這么多,下回將討論外掛的具體功能該怎麼實現
今天來談談地址的調查問題,地址調查是寫外掛中最艱辛,最富有挑戰性的事情,很多朋友問我要外掛的原程序,其實有了外掛原程序,如果你不會調查地址,還是沒用的,
原程序和地址的關系就象武學中招式與內功的關系,沒有內功的招式,只是一個花架子。而內功精深以後,任何普通的招式,都有可能化腐朽為神奇,外掛中的地址分為兩類,一類是程序地址,一類是數據地址。象石器中的雙石器,真彩,不遇敵,寸步遇敵,發送接收封包等,都屬於第一類,而人物坐標,狀態等,都屬於第二類。對於第一類地址,主要依靠softice來
調查地址,對第二類地址,可以用一些游戲工具,比如fpe,game expert,game master等來調查,我一直用game expert,因為我找不到2000下能用的fpe,
各位以前用fpe改游戲的時候,沒想過他也能用來干這個吧
對於第二類數據的調查方法,大部分人都很熟習了,我就不多說了,現在主要來談談第一類數據的詳細調查過程,比如我們要調查發送封包的位置,如何著手呢,客戶端往伺服器要發很多封包,但最簡單的辦法莫過從說話的封包入手,先說一句很長的話,最好是英文,查起來方便,說完以後,用任意一種辦法進入游戲程序的進程空間(比如先用spy查出遊戲程序的窗口句柄,再切換到softice打入bmsg 窗口句柄 wm_lbuttondown,這樣在游戲程序中一點滑鼠就進入了他的進程空間)然後用s命令查出這句話所放的內存地址,記下這個地址,在softice中打入bpm 剛才調查到的地址,這個指令的意思是只要有訪問這個內存的動作,立刻中斷,然後再切換到游戲,說一句話,你會發現softice自動中斷到某一個位置了,從這個位置跟蹤下去,發送封包的位置也就不遠了。
上面所說的都是針對一個全新的游戲程序而言,如果是一個老的程序,有前輩做了大量的工作,還可以用些別的辦法,如反匯編等,來調查。以後游戲版本的更新也是如此,只要把老版本的地址位置附近的代碼記下來,去新版本的代碼裡面search一下,就ok了。
恩,休息一會兒,休息一會兒
我主要對外掛的技術進行分析,至於游戲裡面的內部結構每個都不一樣,這里就不做講解了,我也沒有那麼厲害,所有的都知道,呵呵!
1 首先游戲外掛的原理
外掛現在分為好多種,比如模擬鍵盤的,滑鼠的,修改數據包的,還有修改本地內存的,但好像沒有修改伺服器內存的哦,呵呵!其實修改伺服器也是有辦法的,只是技術太高一般人沒有辦法入手而已!(比如請GM去夜總會,送禮,收黑錢等等辦法都可以修改伺服器數據,哈哈)
修改游戲無非是修改一下本地內存的數據,或者截獲api函數等等,這里我把所能想到的方法都作一個介紹,希望大家能做出很好的外掛來使游戲廠商更好的完善自己的技術.
我見到一片文章是講魔力寶貝的理論分析,寫的不錯,大概是那個樣子.
下來我就講解一下技術方面的東西,以作引玉之用
2 技術分析部分
1 模擬鍵盤或滑鼠的響應
我們一般使用UINT SendInput(
UINT nInputs, // count of input events
LPINPUT pInputs, // array of input events
int cbSize // size of structure
);api函數
第一個參數是說明第二個參數的矩陣的維數的,第二個參數包含了響應事件,這個自己填充就可以,最後是這個結構的大小,非常簡單,這是最簡單的方法模擬鍵盤鼠
標了,呵呵
注意:這個函數還有個替代函數:
VOID keybd_event(
BYTE bVk, // 虛擬鍵碼
BYTE bScan, // 掃描碼
DWORD dwFlags,
ULONG_PTR dwExtraInfo // 附加鍵狀態
);和
VOID mouse_event(
DWORD dwFlags, // motion and click options
DWORD dx, // horizontal position or change
DWORD dy, // vertical position or change
DWORD dwData, // wheel movement
ULONG_PTR dwExtraInfo // application-defined information
);
這兩個函數非常簡單了,我想那些按鍵精靈就是用的這個吧,呵呵,上面的是模擬鍵盤,下面的是模擬滑鼠的.
這個僅僅是模擬部分,要和游戲聯系起來我們還需要找到游戲的窗口才行,或者包含快捷鍵,就象按鍵精靈的那個激活鍵一樣,我們可以用GetWindow函數來枚舉窗口,也可以用Findwindow函數來查找制定的窗口(注意還有一個FindWindowEx),FindwindowEx可以找到窗口的子窗口,比如按鈕,等什麼東西.當游戲切換場景的時候我們可以用FindWindowEx來確定一些當前窗口的特徵,從而判斷是否還在這個場景,方法很多了,比如可以GetWindowInfo來確定一些東西,比如當查找不到某個按鈕的時候就說明游戲場景已經切換了,等等辦法.有的游戲沒有控制項在裡面,這是對圖像做坐標變換的話,這種方法就要受到限制了.這就需要我們用別的辦法來輔助分析了.
至於快捷鍵我們要用動態連接庫實現了,裡面要用到hook技術了,這個也非常簡單,大家可能都會了,其實就是一個全局的hook對象然後SetWindowHook就可以了,回調函數都是現成的,而且現在網上的例子多如牛毛,這個實現在外掛中已經很普遍了.如果還有誰不明白,那就去看看msdn查找SetWindowHook就可以了.
這個動態連接庫的作用很大,不要低估了哦,它可以切入所有的進程空間,也就是可以載入到所有的游戲裡面哦,只要用對,你會發現很有用途的!
這個需要你復習一下win32編程的基礎知識了,呵呵,趕快去看書吧!
2截獲消息
有些游戲的響應機制比較簡單,是基於消息的,或者用什麼定時器的東西,這個時候你就可以用攔截消息來實現一些有趣的功能了.
我們攔截消息使用的也是hook技術,裡麵包括了鍵盤消息,滑鼠消息,系統消息,日誌等,別的對我們沒有什麼大的用處,我們只用攔截消息的回調函數就可以了,這個不會讓我寫例子吧,其實這個和上面的一樣,都是用SetWindowHook來寫的,看看就明白了很簡單的.
至於攔截了以後做什麼就是你的事情了,比如在每個定時器消息裡面處理一些我們的數據判斷,或者在定時器裡面在模擬一次定時器,那麼有些數據就會處理兩次,呵呵,後果嘛,不一定是好事情哦,呵呵,不過如果數據計算放在客戶端的游戲就可以真的改變數據了,呵呵,試試看吧!用途還有很多,自己想也可以想出來的,呵呵!
3攔截socket包
這個技術
難度要比原來的高很多哦,要有思想准備.
首先我們要替換winSock.dll或者winsock32.dll,我們寫的替換函數要和原來的函數一致才行,就是說它的函數輸出什麼樣的,我們也要輸出什麼樣子的函數,而且參數,參數順序都要一樣才行,然後在我們的函數裡面調用真正的winSock32.dll裡面的函數就可以了
首先:我們可以替換動態庫到系統路徑
其次:我們應用程序啟動的時候可以載入原有的動態庫,用這個函數LoadLibary
然後定位函數入口用GetProcAddress函數獲得每個真正socket函數的入口地址
當游戲進行的時候它會調用我們的動態庫,然後從我們的動態庫中處理完畢後才跳轉到真正動態庫的函數地址,這樣我們就可以在裡面處理自己的數據了,應該是一切數據.呵呵!
興奮吧,攔截了數據包我們還要分析之後才能進行正確的應答,不要以為這樣工作就完成了,呵呵!還早呢,等分析完畢以後我們還要模擬應答機制來和伺服器通信,一個不小心就會被封號,呵呵,嗚~~~~~~~~我就被封了好多啊!
分析數據才是工作量的來源呢,游戲每次升級有可能加密方式會有所改變,因此我們寫外掛的人都是亡命之徒啊,被人娛樂了還不知道,呵呵!(聲明我可沒有賺錢,我是免費的)
好了,給大家一個不錯的起點,這里有完整的替換socket源代碼,呵呵!
http://www.vchelp.net/vchelp/zsrc/wsock32_sub.zip
4截獲api
上面的技術如果可以靈活運用的話我們就不用截獲api函數了,其實這種技術是一種補充技術.比如我們需要截獲socket以外的函數作為我們的用途,我們就要用這個技術了,其實我們也可以用它直接攔截在socket中的函數,這樣更直接.
現在攔截api的教程到處都是,我就不列舉了,我用的比較習慣的方法是根據輸入節進行攔截的,這個方法可以用到任何一種操作系統上,比如98/2000等,有些方法不是跨平台的,我不建議使用.這個技術大家可以參考windows核心編程裡面的545頁開始的內容來學習,如果是98系統可以用window系統奧秘那個最後一章來學習.
好了方法就是這么多了,看大家怎麼運用了,其它的一些針對性的技巧這里我就不說了,要不然會有人殺了我的,呵呵!
記住每個游戲的修改方法都不一樣,如果某個游戲數據處理全部在伺服器端,那麼你還是別寫外掛了,呵呵,最多寫個自動走路的外掛,哈哈!
數據分析的時候大家一定要注意,不要輕易嘗試和伺服器的連接,因為那有很危險,切忌!等你掌握了大量的數據分析結果以後,比較有把握了在試試,看看你的運氣好不好,很有可能會成功的哦,呵呵!
其實像網金也瘋狂的那種模擬客戶端的程序也是不錯的,很適合office的人用,就看大家產品定位了.
好了不說了,大家努力吧!切忌不要被游戲廠商招安哦,那樣有損
❺ 如果做游戲外掛 需要什麼語言基礎 做外掛步驟又是如何
做出一個游戲外掛,少說要有5年的編程基礎,首先需要花3年左右精通c語言,c++語言,並能熟練編寫。
簡潔的語言:C語言包含的各種控制語句僅有9種,關鍵字也只有32個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。
具有結構化的控制語句:C語言是一種結構化的語言,提供的控制語句具有結構化特徵,如for語句、if...else語句和switch語句等。可以用於實現函數的邏輯控制,方便麵向過程的程序設計。
實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
❻ 外掛的製作原理是什麼如何製作個外掛
通常使用的方法有兩種(用途不同)
1.截取和偽造傳送數據(截取封包)
2.截取屏幕和模擬按鍵(簡單游、按鍵精靈就是使用這個原理)
截取封包從WPE著手開始,難度比較高,需要熟悉網路傳輸、伺服器、游戲結構等
第二種方法可以直接從編寫[按鍵精靈]腳本開始,需要簡單編程概念
❼ 製作輔助需要什麼
C語言可以,學會了別的語言就都會了,C語言出了個漢化版的
一、
先說一下寫一個外掛需要什麼條件
1
、熟練的
C
語言知識
目前的外掛大部分都是用
BC
或者是
vc
寫的,擁有熟練的
C
語言知識是寫外掛的基本條件
2
、具有很強的匯編基礎
一般游戲都不可能有原代碼的,必須靠反匯編或者跟蹤的辦法來探索其中的機理
,所以有強的匯編基礎也是必不可少的條件
3
、熟練掌握跟蹤和調試的工具
有了上面
2
個條件後,掌握一些工具也是很有必要的
跟蹤的工具,
softice
當然是不二之選,至於反匯編的工具,我推薦用
IDA
PRO
這個工具反匯編出來的代碼結構清晰,非常好讀
如果你不具有上面的條件,還是先把基礎打好,再來寫外掛吧,一分耕耘,一分收獲,天下
沒有白掉的餡餅的
二、寫外掛面臨的基本技術問題
1
、修改進程的執行代碼
要修改進程的執行代碼,
要先取得進程的
ID,
如果是由外掛程序啟動,
返回值里就有進程
ID,
如果不是的話,
需要用
findwindow
找到窗口句柄,
再用
GetWindowProcessID
取得進程
ID,
取得進程
ID
以後,
就可以用
writeprocessmemory
來修改進程的執行代碼了,使程序按照我們的意願來執行,石器外掛里
的不遇敵、寸步遇敵
就是用這樣的方法來實現的
2
、截獲外掛發送和接收的封包
除了通過修改代碼來實現的功能以外,
很多的功能都是通過修改封包來實現的,
要修改封包,
首先要能截獲它。
第一步是要跟蹤出發和收的位置,
至於怎麼跟蹤,
我以後會提到,找到位置以後,
有
2
個辦
法,一是在那個位置加一
個
jmp
語句,跳到你的處理函數位置,處理完後,再跳回來,這種方法要求比較高,需要
處理好很多事情,另一種辦法
是往那個位置寫條能造成例外的指令,
比如
int 3,
然後用
DebugActiveProcess
調試游戲進程,
這樣每當游戲執行到那個
位
置
的
時
候
,
就
會
停
下
來
,
到
外
掛
程
序
里
面
去
,
等
外
掛
程
序
處
理
完
以
後
,
用
ContinueDebugEvent
繼續運行程序。
今天先寫這么多,下回將討論外掛的具體功能該怎麼實現
今天來談談地址的調查問題,
地址調查是寫外掛中最艱辛,
最富有挑戰性的事情,
很多朋友
問我要外掛的原程序,其實有了外掛原程序,如果你不會調查地址,還是沒用的,
原程序和地址的關系就象武學中招式與內功的關系,
沒有內功的招式,
只是一個花架子。
而
內功精深以後,
任何普通的招式,
都有可能化腐朽為神奇,
外掛中的地址分為兩類,
一類是
程序地址,一類是數據地址。象石器中的雙石器,真彩,不遇敵,寸步遇敵,發送接收封包
等,
都屬於第一類,
而人物坐標,
狀態等,
都屬於第二類。
對於第一類地址,
主要依靠
softice
來調查地址,對第二類地址,可以用一些游戲工具,比如
fpe,game
expert,game
master
等來
調查,我一直用
game expert,
因為我找不到
2000
下能用的
fpe,
各位以前用
fpe
改游戲的時候,沒想過他也能用來干這個吧
對於第二類數據的調查方法,
大部分人都很熟習了,
我就不多說了,
現在主要來談談第一類
數據的詳細調查過程,
比如我們要調查發送封包的位置,
如何著手呢,
客戶端往伺服器要發
很多封包,
但最簡單的辦法莫過從說話的封包入手,
先說一句很長的話,
最好是英文,
查起
來方便,
說完以後,
用任意一種辦法進入游戲程序的進程空間
(比如先用
spy
查出遊戲程序
的窗口句柄,
再切換到
softice
打入
bmsg
窗口句柄
wm_lbuttondown,
這樣在游戲程序中一點
滑鼠就進入了他的進程空間)
然後用
s
命令查出這句話所放的內存地址,
記下這個地址,
在
softice
中打入
bpm
剛才調查到的地址,這個指令的意思是只要有訪問這個內存的動作,立
刻中斷,然後再切換到游戲,說一句話,你會發現
softice
自動中斷到某一個位置了,從這
個位置跟蹤下去,發送封包的位置也就不遠了。
上面所說的都是針對一個全新的游戲程序而言,
如果是一個老的程序,
有前輩做了大量的工
作,還可以用些別的辦法,如反匯編等,來調查。以後游戲版本的更新也是如此,只要把老
版本的地址位置附近的代碼記下來,去新版本的代碼裡面
search
一下,就
ok
了,如果不會再私信我
❽ 如何用C++製作游戲外掛
我們確定要打的NPC數量。這個數量不能很大,原因在於網金的封包長度用一個位元組表示,那麼一個包可以有255個位元組,我們上面分析過,增加一個NPC要增加10個位元組,所以大家算算就知道,打20個NPC比較合適。
然後我們要把客戶端原來的NPC代碼分析計算出來,因為增加的NPC代碼要加上100000哦。再把我們增加的NPC代碼計算出來,並且組合成新的封包,注意代表包長度的位元組要修改啊,然後轉發到伺服器,這一步在編寫程序的時候要注意演算法,不要造成較大延遲。
上面我們欺騙伺服器端完成了,欺騙客戶端就簡單了,^-^
發送了上面的封包後,我們根據新增NPC代碼構造封包馬上發給客戶端,格式就是"F4 44 12 E9 NPC代碼 02 00 00 03 00 00 00
00 00 00",把每個新增的NPC都構造這樣一個包,按順序連在一起發送給客戶端,客戶端也就被我們騙過了,很簡單吧。
以後戰斗中其他的事我們就不管了,盡情地開打吧,呵呵。
上面講的需要一定的編程基礎,但是不難,即使你不會編程,相信你繼續看下去就會有收獲了。
五:怎麼用計算機語言去寫一個單機代理?
在上一章,我們已經對於代理的原理進行了講解,大家對於代理已經有了一個初步的認識,現在我教大家如何用計算機語言編寫一個自己的代理,我們考慮到簡單明了,我們選用VB,因為用VB編寫代理只需要很少的代碼。
代碼如下:
Private Sub form_Load()
DaiLi.LocalPort = "1234"
Server.RemotePort = "1234"
Server.RemoteHost = "211.100.20.26"
DaiLi.Listen
End Sub
Private Sub DaiLi_ConnectionRequest(ByVal requestID As Long)
Server.Connect
內容太多,寫不下
我這有本教程,挺不錯,和我聯系我給你
❾ 怎樣製作小游戲輔助
你可以去下載一套輔助製作教程。精易輔助教程講的很詳細
❿ 怎麼製作游戲輔助工具
新浪頁游助手是一款非常好用的頁游輔助工具,今天我們就來講講新浪頁游助手怎麼製作腳本,讓你可以製作各種網頁游戲的輔助工具。