遊戲外掛程式開發系列 遊戲喊話器

2021-04-14 01:16:18 字數 1664 閱讀 8436

前言

無疑,伴隨著現在的遊戲市場日益膨脹的同時,帶來了很多與遊戲相關的商業活動,遊戲中的交易帶來了無限的商機和鉅額的利潤,而如何在遊戲中進行產品和業務的推廣,是十分重要的。前段時間,鑑於朋友的擺脫,幫忙開發了乙個遊戲中喊話器,其中涉及一些技術要點,現在總結如下

1. 一些在動手開發前要說的

遊戲喊話,初級的實現是借助鍵盤模擬,高階的實現是借助鍵盤驅動的模擬,但是這些模擬都會有個缺點:不能同是在多個遊戲中喊話,也不能在後台喊話,因此這種模擬技術不是完美的(這是由windows原理決定的)。遊戲的外掛程式開發大多是跨程序,普通的方法是注入(我的喊話程式的第乙個版本就是基於注入的),更高階點實現是想辦法將要跨程序的操作轉化為不要跨程序(我的喊話程式的第二個版本就是基於這種思想的),下面逐個講解下其中的技術要點。

2. 如何獲取遊戲的視窗?

hwnd windowfrompoint(

pointpoint

// point

);利用這個函式能夠拾取遊戲的視窗

3.如何獲取視窗的執行緒?

dword getwindowthreadprocessid(

hwndhwnd

,             // handle to window

lpdwordlpdwprocessid

// process identifier

);利用這個函式能夠獲取遊戲視窗的執行緒id

4.如何獲取遊戲視窗執行緒的區域性狀態?

bool attachthreadinput(

dwordidattach

,    // thread to attach

dwordidattachto

,  // thread to attach to

boolfattach

// attach or detach

);利用這個函式能夠繫結遊戲視窗執行緒的區域性狀態,到此,你就不用跨程序去操作遊戲視窗了

4.接下來應該怎麼辦?

hwnd setfocus(

hwndhwnd

// handle to window

);為什麼要進行這個呼叫?因為wm_keydown,wm_keyup是傳送給執行緒中具有焦點的視窗,因此需要對遊戲的視窗進行焦點的設定

5.如何在遊戲視窗上喊話?

bool postmessage(

hwndhwnd

,      // handle to destination window

uintmsg

,       // message

wparamwparam

,  // first message parameter

lparamlparam

// second message parameter

);這裡就將要喊話的內容以wm_keydown,wm_keyup傳送到遊戲視窗上了

6. 補充的東西

以這種方法能夠在後台同時在多個遊戲中喊話,與鍵盤模擬的實現來相比起來,出色多了,但是在某些遊戲中會出現喊話的內容重疊的時候,如果哪位大蝦能指點一二,感激不盡。 

遊戲開發入門系列(TX Class)

你知道的tx game 課程介紹 遊戲技術發展 遊戲開發流程 遊戲程式設計師是怎樣煉成的 保持對遊戲的濃厚興趣和激情 主動學習所有細節 通過課程了解專業技能概況,掌握學習方法 通過實戰磨練和驗證成果 遊戲技術的發展 pong 紅白機 畫素級 區域網對戰 大型多人遊戲 手遊 手機硬體記憶體 執行 io...

遊戲外掛程式分析

這個動態連線庫的作用很大,不要低估了哦,它可以切入所有的程序空間,也就是可以載入到所有的遊戲裡面哦,只要用對,你會發現很有用途的 這個需要你複習一下win32程式設計的基礎知識了,呵呵,趕快去看書吧 2截獲訊息 有些遊戲的響應機制比較簡單,是基於訊息的,或者用什麼定時器的東西,這個時候你就可以用攔截...

關於遊戲外掛程式

我主要對外掛程式的技術進行分析,至於遊戲裡面的內部結構每個都不一樣,這裡就不做講解了,我也沒有那麼厲害,所有的都知道,呵呵 1 首先遊戲外掛程式的原理 外掛程式現在分為好多種,比如模擬鍵盤的,滑鼠的,修改資料報的,還有修改本地記憶體的,但好像沒有修改伺服器記憶體的哦,呵呵 其實修改伺服器也是有辦法的...