製作 外掛 全集 by Snow-天雪峰 by VB6. 作者 : Snow - 天雪峰 送給 有做功課 努力的 大家^^ MY BLOG : http://snow850421.pixnet.net/blog
一. 打開進程 1.介紹 首先呢! 外掛 不外乎於 Writeprocessmemory 也就是 俗稱的 寫入記憶體. 如何寫入呢?! 首先 你自己是一個程式 而 遊戲視窗是一個程式 用 window 說法 是一個 進程 你必須做 a. 取得視窗的 handle 也就是一個 ID 的意思 b. 要取得 遊戲視窗的 ID c. 利用 遊戲視窗的 ID 把它打開 ?! 不懂?? 就像是 你要連結 你的程式和 遊戲視 窗的路一樣^^ 路有很多種 當然是開越大越好^^ 不用分 火車飛機 大 家 都可 以走的大路 最方便了齁^^ >< 聽不懂?? 沒關西 之後就會懂啦!
2.取得 HWND 先來解說 第一步驟 需要用到 Findwindow 這個 API 宣告如下: Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As _ String, ByVal lpWindowName As String) As long
3.取得 進程 id 找到一個 視窗的 HWND 後 就要取得 進程的 ID 啦 下面這個是宣告 Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long _ , lpdwProcessId As Long) As Long
HWND 很簡單八 就用剛剛找到的那個
lpdwProcessId 就是傳回值 這個 才是可以用的
用法就像這樣
Dim PID as Long GetWindowThreadProcessId Hwnd,PID 就是這樣^^ 懂了媽??
4.打開進程 接下來 就是第三步驟囉 打開 進程 宣告如下 Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Const PROCESS_ALL_ACCESS = &H1F0FFF 就像這樣^^ bInheritHandle 就不用太麻煩 直接給他 0 就好啦^^ dwProcessId 就是 processed = PID 用法 Dim Phandle as Long Phandle = OpenProcess(PROCESS_ALL_ACCESS, 0, PID) 就像這樣^^ 開路的工程已經好了 而這條路的 編號 就是 PHANDLE 這個變數 ! 接下來 就是 寫入記憶體囉^^
二. 寫入記憶體 1. 宣告 擺在模組那邊^^ 看一下歐 Public Declare Function WriteProcessMemory Lib "kernel32" _ (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Any, _ ByVal nSize As Long, ByVal lpNumberOfBytesWritten As Long) As Long
4.練習 以 踩地雷 的 秒數 打開採地雷(Findwindow, GetWindowThreadProcessId,OpenProcess) 寫入記憶體 WriteProcessMemory Address &H1005194 Value : Dim value as byte Value = val(text1.text) Ps. Text 是給人用 的 最多只能 兩位數 要 VAL 字串 轉數值.. 小提醒: 用沒效過 請檢查 每一個變數又沒有打錯 在不行 請在 抓到 HWND ProcessId ProcessHandle 後 都 用 Msgbox 提出來看 OR text 顯示出來.