黃易群俠傳M脫機外掛應用程式黃易神行
20487
0

[分享] 使用VB編寫CALL掛機程式

leechiwa 發表於 2009-3-25 14:10:55 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |
使用VB編寫全CALL掛機程式(一)

VB寫程式已經有89年了吧,雖然現在自己掌握的編程語言也有好幾門了,不過Basic作為自己入

門的電腦語言還是很有感情,作為一個骨灰級的VB愛好者看到論壇埵釭B友發送使用DLL注入實現VB

CALL的程式,自己也手癢了起來,也弄了個VBCALL的程式,不過方法與前面的不同,不是弄的DLL注入

,而是弄了個VB真正能夠使用的WIN32模式DLL,可以象使用API函數一樣的,直接在VBDECLARE申明調用

,而且DLL檔無需放到系統目錄,只需要在程式目錄下就可以了,不需要絕對路徑。
    閒話少說,我將陸續把怎樣實現VBCALL程式的編程方法和大家一起交流,現在先把測試的程式放上

來,請感興趣的朋友測試,多提意見。

    測試程式只用了一個Form,沒有使用按鍵,而是定義了全局熱鍵,使用PageUPPageDown來實現功能

,代碼如下:
Option Explicit

'Win32 API 基本定義
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As

String, ByVal lpWindowName As String) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer

'遊戲CALL函數定義  特別需要注意,Function 過程名稱中的大小寫必須與現在的一致,否則將無法找到

函數入口而提示錯誤

'CheckIn 用於檢查遊戲是否運行和初始化設置的函數,其中包括申請記憶體區域等操作
Private Declare Function CheckIn Lib "VbCall.Dll" (ByVal hWnd As Long) As Long

'簡單的CALL,其中包含了4個基本的call1 是運氣打坐,2 是取消運氣打坐,3 是普通攻擊,4 是發送

TabCall找怪
Private Declare Function CallSingle Lib "VbCall.Dll" (ByVal lpSinglecall As Integer) As Long

'使用技能的Call,其參數為技能的ID,例如清風破ID2
Private Declare Function UseSkills Lib "VbCall.Dll" (ByVal sKillsID As Long) As Long

'這個發包選怪的Call,其參數目前只做了一個,就是帶參數1,表示遍曆身邊怪所有怪選擇距離自己10

內的一個,後面還將增加比如批量拖怪啊等等參數
Private Declare Function SelectM Lib "VbCall.Dll" (ByVal sType As Long) As Long

'退出的函數,主要用於清理退出後記憶體中的GHOFFICE過濾詞語啊這些東西的
Private Declare Function EndQuit Lib "VbCall.Dll" (ByVal EndType As Long) As Long

Private Sub Form_Load()

Dim gHwnd As Long, gStart As Long, gCall As Long

  

gHwnd = FindWindow("QElementClient Window", "Element Client")


gStart = CheckIn(gHwnd)


If gStart = 0 Then


MsgBox "
遊戲未啟動!"

End


End If


THook.Enabled = True

End Sub

Private Function MyHotKey(vKeyCode) As Boolean

MyHotKey = (GetAsyncKeyState(vKeyCode) < 0)

End Function

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Call EndQuit(1)

End Sub

'************************熱健定義*************************************
Private Sub Thook_Timer()

If MyHotKey(33) Then 'PageUP


Call SelectM(1) '
發包選怪

'Call CallSingle(4) '
TabCall選怪

'Call CallSingle(1) '
打坐運氣

'Call CallSingle(2) '
取消打坐狀態

ElseIf MyHotKey(34) Then 'PageDown


Call UseSkills(2) '
使用技能 參數2表示清風破的ID

'Call CallSingle(3) '
普通攻擊

End If

End Sub

    晚上回來的晚,所以只寫了,打坐運氣、普通攻擊、TabCall選怪、發包選怪和使用技能的CALL,現

在程式碼堶惆洏峈漪O按PageUP發包選怪,而按PageDown是使用清風破打怪。可以根據代碼中的說明自

己更改著測試下功能。而DLL的申明部分也做了說明,比較簡單,只是用於測試的,不過雖然是測試,在

代碼中我已經加入了記憶體和程式控制碼、線程等的控制,主要是為了防止長時間運行後記憶體不斷增加、控制碼

不斷增加等問題,目前DLL的功能還不多,如果需要將在後面一邊和大家探討程式的編寫方法,一邊不斷

完善,好了太晚了,先弄到這,下面稍微寫了點基礎的東西,大家湊合著先看看。

1.VB CALL程式的理論基礎
    程式嵌入技術是實現記憶體型外掛的主要手段,而需要完全實現這一類的外掛程式,編程語言需要至少

幾個基本條件,可以使用API、能夠使用指標、可以嵌入彙編,而其他的要求就不那麼苛刻了,而且以上

條件還可以簡化一些,因為可以通過彙編來實現API的調用,所以至少要能夠使用指標和彙編。而能夠使

API和指標就可以在很大程度上實現基本的掛機程式。例如:最早的螢幕顏色判斷鍵盤滑鼠類比掛機程

序,後來稍微發展了一點成為讀寫記憶體加鍵盤滑鼠類比的掛機程式,而如果需要實現直接調用CALL來嵌入

遊戲,那麼無可避免的就必須在程式中使用彙編,但是很遺憾的是VB沒有直接內嵌彙編,而且VB雖然有變

通的指標,但是也只是限於資料指標,而更進一步的結構指標、類型指標、回調指針等卻無法實現,這也

就成為了VB語言的硬傷。
    還好,隨著VB高手的不斷研究,VB編寫DLL的方法已經實現,雖然還有部分問題,不過只要編程的時

候注意回避,VB的標準DLL可以實現了。組合語言的嵌入也有了幾種方法實現:嵌入ShellCode,或者使用

第三方插件,目前推薦使用的是AsminVB,還有一種方法就是直接用WriteProcessMemory寫記憶體16進制編

碼,這個比較另類些,需要彙編和資料結構等相關知識。
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


您需要登錄後才可以回帖 登錄 | 註冊


手機版 | Archiver | 外掛聯合國

GMT+8, 2024-11-1 07:12 , Processed in 0.062897 second(s), 19 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?