Torin'n Engineer
2014年11月13日 星期四
2014年11月9日 星期日
[04] .Net寫楓之谷外掛 - CEAutoASM
淺談 CEAutoASM,ceautoassembler.dll。
ceautoassembler.dll 簡單來說就是 Cheat Engine 中的 dll!
它的優點是寫入數據方便,不必一行一行的 WPM。
但數據的安全性卻不怎麼高,使用前請三思!
首先我們點選上方 建置(O) 中的 組態管理員(O)...。
將 使用中的方案組態(C) 改成 Release。
接著將點擊 使用中的方案平台(C) 然後選擇 <新增...>。
將 輸入或選擇新平台(P) 改成 x86,並按下確定。
接著回到 Form 中進行繼續設計我們的程式。
稍微整理了一模組,方便大家閱讀。
且在
後方補上
因為覺得程式介面有點單調,所以一樣小改了介面。
並將它的 (Name) 改成 Function1,Text 改成 第一個功能。
接下來我們從 工具箱 上 拖曳、點擊 TextBox 至 Form 上。
並將它的 (Name) 改成 FunText1,Multiline 改成 True。
Text 改成 新增的數據,Visable 改成 False。
這裡拿物理無敵來舉例。
接著我們 雙擊 進入 Function1 的 Code。
並加入下方程式碼
完成後,我們進入 \FirstProject\bin\x86\Release , 並將 ceautoassembler.dll 加入資料夾中。
接著回到 程式設計區 點擊 開始 進行測試。
[05] .Net寫楓之谷外掛 - 動態數據與指針應用
ceautoassembler.dll 簡單來說就是 Cheat Engine 中的 dll!
它的優點是寫入數據方便,不必一行一行的 WPM。
修改程式組態管理員
首先我們點選上方 建置(O) 中的 組態管理員(O)...。
將 使用中的方案組態(C) 改成 Release。
接著將點擊 使用中的方案平台(C) 然後選擇 <新增...>。
將 輸入或選擇新平台(P) 改成 x86,並按下確定。
接著回到 Form 中進行繼續設計我們的程式。
CEAutoASM_宣告
Public Declare Function CEInitialize Lib "ceautoassembler" (ByVal ngPassedPID As Integer, ByVal Phandle As Integer) As Integer
Public Declare Function CEAutoAsm Lib "ceautoassembler" (ByVal Script As String, ByVal AllocID As Boolean, ByVal Alloc As Integer) As Boolean
稍微整理了一模組,方便大家閱讀。
調用CEAutoASM
完成了 宣告 後,我們回到之前弄好的鎖定。且在
If hWnd <> 0 Then
CEInitialize(pid, hprocess)
因為覺得程式介面有點單調,所以一樣小改了介面。
AutoASM_寫入數據
首先我們從 工具箱 上 拖曳、點擊 CheckBox 至 Form 上。
並將它的 (Name) 改成 Function1,Text 改成 第一個功能。
接下來我們從 工具箱 上 拖曳、點擊 TextBox 至 Form 上。
並將它的 (Name) 改成 FunText1,Multiline 改成 True。
Text 改成 新增的數據,Visable 改成 False。
這裡拿物理無敵來舉例。
接著我們 雙擊 進入 Function1 的 Code。
並加入下方程式碼
If Function1.Checked = True Then
CEAutoAsm(FunText1.Text, True, 0)
Else
CEAutoAsm(FunText1.Text, False, 0)
End If
完成後,我們進入 \FirstProject\bin\x86\Release , 並將 ceautoassembler.dll 加入資料夾中。
接著回到 程式設計區 點擊 開始 進行測試。
完成圖
註:因遊戲記憶體有保護,某些數據無法進遊戲內開啟。
2014年11月8日 星期六
[03] .Net寫楓之谷外掛 - 尋找遊戲進程
完成了 基本介面設置 後,就可以開始寫 Code 囉!
此篇教各位如何 尋找、打開遊戲進程 。
點選上方 專案(P) -> 選擇 加入模組(M)...。
即可完成程式碼貼入。
模組區 完成後,我們回到 Form 中,繼續撰寫最基本的 遊戲鎖定。
雙擊我們的 Button 進入 程式撰寫區。
並貼上以下程式碼。
即可完成基本的 遊戲鎖定,存檔這動作可別忘記。
註:程式僅支持在Play頁面進行鎖定。
此篇教各位如何 尋找、打開遊戲進程 。
添加程式碼
為了讓 Code 更整潔、好整理,我們先添加個 模組 ,方便後續。
點選上方 專案(P) -> 選擇 加入模組(M)...。
點擊後,會出現 加入新項目 的視窗,這邊我們選擇 模組,並將 名稱(N) 輸入,再點選 新增(A) 。
完成後,會轉跳至 模組 ->程式碼區 ,這樣就完成了 新增模組 。
貼入程式碼
將下方 程式碼貼入模組 最上方。
Imports System.Runtime.InteropServices
將下方 程式碼貼入模組 之中。
Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Public Declare Function OpenProcessAPI Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Int32, ByVal bInheritHandle As Int32, ByVal dwProcessId As Int32) As Int32
Public Declare Function CloseHandleAPI Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As IntPtr, <Out()> ByRef lpdwProcessId As IntPtr) As Integer
Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Public Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Integer, ByVal lppe As PROCESSENTRY32) As Integer
Public Declare Function Process32Next Lib "kernel32" (ByVal hSapshot As Integer, ByVal lppe As PROCESSENTRY32) As Integer
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public hWnd, Handlex, pid, hprocess As Integer
Public Inited As Boolean
Public Structure PROCESSENTRY32
Dim dwSize As Integer
Dim cntUseage As Integer
Dim th32ProcessID As Integer
Dim th32DefaultHeapID As Integer
Dim th32ModuleID As Integer
Dim cntThreads As Integer
Dim th32ParentProcessID As Integer
Dim pcPriClassBase As Integer
Dim swFlags As Integer
Dim szExeFile As String
End Structure
Public Function OpenProcess(Optional ByVal lpPID As Long = -1) As Long
If lpPID = 0 And pid = 0 Then Exit Function
If lpPID > 0 And pid = 0 Then pid = lpPID
Handlex = OpenProcessAPI(PROCESS_ALL_ACCESS, False, pid)
OpenProcess = Handlex
If Handlex > 0 Then Inited = True
End Function
Public Function OpenProcessByProcessName(ByVal lpName As String) As Long
Dim PE32 As PROCESSENTRY32
Dim hSnapshot As Long
pid = 0
hSnapshot = CreateToolhelp32Snapshot(2, 0&) 'TH32CS_SNAPPROCESS = 2
PE32.dwSize = Len(PE32)
Process32First(hSnapshot, PE32)
While pid = 0 And CBool(Process32Next(hSnapshot, PE32))
If Right$(LCase$(Left$(PE32.szExeFile, InStr(1, PE32.szExeFile, Chr(0)) - 1)), Len(lpName)) = LCase$(lpName) Then
pid = PE32.th32ProcessID
End If
End While
CloseHandleAPI(hSnapshot)
OpenProcessByProcessName = OpenProcess()
End Function
Public Function OpenProcessByWindow(ByVal lpWindowName As String, Optional ByVal lpClassName As String = vbNullString) As Long
hWnd = FindWindow(lpClassName, lpWindowName)
GetWindowThreadProcessId(hWnd, pid)
OpenProcessByWindow = OpenProcess(pid)
hprocess = OpenProcessAPI(PROCESS_ALL_ACCESS, False, pid)
End Function
即可完成程式碼貼入。
基本的遊戲鎖定
模組區 完成後,我們回到 Form 中,繼續撰寫最基本的 遊戲鎖定。
雙擊我們的 Button 進入 程式撰寫區。
並貼上以下程式碼。
'遊戲鎖定區
OpenProcessByWindow("MapleStory", "StartUpDlgClass")
If pid <> 0 Then
MsgBox("遊戲鎖定成功囉!", 64, "FirstProject_Tipe")
Else
MsgBox("鎖定遊戲失敗!", 16, "FirstProject_Error")
End If
即可完成基本的 遊戲鎖定,
註:程式僅支持在Play頁面進行鎖定。
[02] .Net寫楓之谷外掛 - 設計程式介面
這篇是要讓大家先設計好基本的程式介面。
接著從 工具箱 內拖曳、點擊 Button 並加到 Form 中,並將它命名。
這個 Button 是要用來鎖定遊戲的。
註:這邊我是用 ToolStrip -> Button。
設計完後別忘記存檔哦!
設計程式介面
建立好專案後,先將 程式、Form 命名。接著從 工具箱 內拖曳、點擊 Button 並加到 Form 中,並將它命名。
這個 Button 是要用來鎖定遊戲的。
註:這邊我是用 ToolStrip -> Button。
設計完後別忘記存檔哦!
這樣最基本的介面就完成了。
2014年11月7日 星期五
[01] .Net寫楓之谷外掛 - 建立一個新專案
建立專案
啟動 Visual Studion ,選擇 檔案(F) -> 新增專案(P)... 。
選擇 Visual Basic 中的 Window Form 應用程式,名稱(N) 輸入專案名稱,接著按下 確定。
選擇 Visual Basic 中的 Window Form 應用程式,名稱(N) 輸入專案名稱,接著按下 確定。
輸入完成 名稱(N) 後,點選 確定 ,接著將會轉跳至程式設計介面處。
這樣就完成了建立專案囉!
儲存專案
點選 檔案(F) -> 接著點選 全部儲存(L)。接下來會跳出儲存專案的視窗,都設定好後按下儲存即可。
此篇比較簡單,不過還是要耐心地看完哦!
[02] .Net寫楓之谷外掛 - 設計程式介面
訂閱:
文章 (Atom)