close

. 打開進程
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

宣告 FindWindow long
用法如下
lpClassName 這個比較複雜 通常 是直接傳過去一個  空的 vbnullstring
lpWindowName 就是視窗名稱拉^^  請你用 字串




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

dwDesiredAccess 就是 你要開的路的類型啦^^ 因為我很懶
所以就用 PROCESS_ALL_ACCESS
請記得  PROCESS_ALL_ACCESS 視需要宣告的

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
2. 介紹
1. hProcess 就是剛剛 openprocess 打開進程 給的編號
2. lpBaseAddress 就是 address 就是位址 你在ME address 16進位的
  所以只要再前面 加一個 &H 舉例來說
  0040000 你要再VB  就要 &H0040000 就這樣
3. lpBuffer 舊識你要寫進去的值
4. nSize 寫進去要寫幾byte
5. lpNumberOfBytesWritten   不用理他^^ 0 究可以了 這個是再檢查一便
  不用理她 0
3.解釋
hProcess 也就是 你剛剛把它打開的那條路
1pBaseAddress 也就是address      舉例來說
ME 看到的  0040000 你要用 &H0040000 表示
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 顯示出來.
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 heido001 的頭像
    heido001

    緣份遊戲網 - 備份站

    heido001 發表在 痞客邦 留言(0) 人氣()