抽空学习VB,VC++之 VB游戏外挂学习制作(一)

    看了一些文章,找了一些书,就开始学吧,至于LINUX内核,当然应该完全分析完毕。
    

     写不出多深的解释,干脆就不解释,我觉得任何一本书或者基础资料都会讲得比较好。
     结构理清楚,代码排好,这应该才是最主要的。
    
    今天就来最初步的,我也刚学到一点。慢慢来咯。(声明:其中的代码半抄半加)。
   

实验一:自动在记事本写一些字。
     需要的知识:
     1。怎么用VB调用WINDOWS API?
     2。找到记事本的句柄
     3。找到EDIT控件的句柄

     参考工具:
   OLLDBG的插件 “窗口工具”,或者SPY++(我的用不了,哭哦~~~)。

 步骤:
一,  在开发环境的菜单   工程=》添加模块

在标准模块中添加下面语句,API声明
[code]

'API声明
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
 Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

'变量声明
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_CHAR = &H102
Public Const VK_A = &H41

’这个函数来构造postmessage的lparam参数。
Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
    Dim s As String
    Dim Firstbyte As String    'lparam参数的24-31位
    If flag = WM_KEYDOWN Then  '如果是按下键
        Firstbyte = "00"
    Else
        Firstbyte = "C0"       '如果是释放键
    End If
    Dim Scancode As Long
    '获得键的扫描码
    Scancode = MapVirtualKey(VirtualKey, 0)    ‘可查MSDN,或者中文API手册
     Dim Secondbyte As String   'lparam参数的16-23位,即虚拟键扫描码
    Secondbyte = Right("00" & Hex(Scancode), 2)
    s = Firstbyte & Secondbyte & "0001"  '0001为lparam参数的0-15位,即发送次数和其它扩展信息
    MakeKeyLparam = Val("&H" & s)
End Function
[/code]


在窗体里编写下面代码,通过打印的值我们就可以知道一些我们需要的值。
[code]
Private Sub Command1_Click()
Dim tWnd As Long

tWnd = FindWindow(vbNullString, "key.txt - 记事本")
Print Hex(tWnd)
tWnd = FindWindowEx(tWnd, 0, "Edit", vbNullString)
Print Hex(tWnd)

Dim ret As Long
ret = MakeKeyLparam(VK_A, WM_KEYDOWN)
Print Hex(ret)
PostMessage tWnd, WM_KEYDOWN, VK_A, ret
'PostMessage tWnd, WM_CHAR, Asc("A"), MakeKeyLparam(VK_A, WM_KEYDOWN)
'PostMessage tWnd, WM_KEYDOWN, VK_A, MakeKeyLparam(VK_A, WM_UP)
End Sub
[/code]

好了,我还要继续学习,这个可以实现后台的模拟键盘输入。可惜现在很多游戏用不了了,毕竟我们都知道了,游戏制作者也知道了,我们就要做点他们不知道的咯。


         本人小站:www.bestbbs.5d6d.com  
         高手多多指教。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值