正在学习外挂中,还请大虾老师们多多指教 !!!

解决方案 »

  1.   

    VB写外挂的话,只要有内存地址基本上没问题。问题是很多网络游戏都有保护,一般使用writeprocessmemory写内存,readprocessmemory读内存这2个函数对内存地址操作,至于代码可以用一个简单的.....
    1.用findwindow函数查找窗口,用getwindolwthreadprocessid 读取窗口句柄的PID,用openprocess获取pid句柄,用writeprocessmemory或者readprocessmemory对内存进行读写操作.
    2.直接读取进程pid,道理一样,但是好处是某些游戏找不到窗口句柄的话可以直接获取进程。当然第一种方法较简单,如果你想学习外挂编写,建议你先学习汇编基础。至于网络游戏需要提权才可以使用这2个函数。
      

  2.   

    外挂饭馆被关了真可惜..一般都会用到dll注入,还是需要一些C的可以用C写dll,VB用来注入和与dll之间通讯另外你需要CheatEngine这款软件来判断内存地址,寻找基地址之类基本上是和内存指针打交道的这是以前写的,读取内存示范
    Private Sub Timer1_Timer()
    Dim hWnd As LongConst STANDARD_RIGHTS_REQUIRED = &HF0000
    Const SYNCHRONIZE = &H100000
    Const PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)hWnd = FindWindow("Digimon RPG", "Digimon RPG")
    If hWnd = 0 Then Label3.Caption = "未找到游戏窗口": Exit Sub
    GetWindowThreadProcessId hWnd, pid
    If pid = 0 Then Label3.Caption = "获取Pid失败": Exit Sub
    pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
    If pHandle = 0 Then Label3.Caption = "打开进程失败": Exit Sub Else Label3.Caption = "正常"Label2.Caption = ADD2VAL(&H9FC070) 'moneyLabel6.Caption = ADD2VAL(&H9FB8B8) 'exp
    Label8.Caption = ADD2VAL(&H9FB8CC)Label10.Caption = ADD2VAL(&HA4DAA8) 'x
    Label12.Caption = ADD2VAL(&HA4DAAC) 'yLabel15.Caption = ADD2VAL(&H9FB89C) 'hp
    Label17.Caption = ADD2VAL(&H9FB8C0)Label16.Caption = ADD2VAL(&H9FB8A0) 'vp
    Label18.Caption = ADD2VAL(&H9FB8C4)
    CloseHandle pHandle
    End Sub
    Function ADD2VAL(ByVal WhatAdd As Long) As StringDim by(4) As Byte
    Dim TempHEX, TempB As String
    ReadProcessMemory pHandle, ByVal WhatAdd, VarPtr(by(0)), UBound(by), 0For i = 3 To 0 Step -1
    If Len(Hex(by(i))) < 2 Then TempB = "0" & Hex(by(i)) Else TempB = Hex(by(i))
    TempHEX = TempHEX & TempB
    'TempHEX = Hex(by(3)) & Hex(by(2)) & Hex(by(1)) & Hex(by(0))
    Next
    'Debug.Print TempHEXADD2VAL = HEX_to_DEC(TempHEX)'将十六进制转化为十进制,网上有就不发了
    End Function
    另外有高人写过VB模拟Asm的类,
    《汇编基础类》
    名  称: clsASM 
    作  者:孙  林 
    这些关键词,百度一下很好找用此类的方法:
    Dim asm As New clsASM '打坐
    With asm                            '  asm
        .Pushad                        '  pushad
        .Mov_EAX &H4B52F0                      '  Mov EAX,&H????
        .Call_EAX                      '  call pointer(eax)
        .Popad                          '  popad
        .Ret
    End With                            '  end
    asm.Run_ASM pid希望这些信息对lz有用,其实最重要的还是靠分析
      

  3.   

    外挂是犯法的 这东西还敢在CSDN这样的正规论坛开口 勇气可嘉
    论坛签名======================================================================

    当您的问题得到解答后请及时结贴.

    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖如何给自己的回帖中也加上签名?
    http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx
      

  4.   

    给你个简单的,免得你看不懂
    Private Sub Command1_Click()
        Dim ReturnValue, I
        ReturnValue = Shell("CALC.EXE", 1) ' 运行计算器
        AppActivate ReturnValue  ' 激活计算器
        DoEvents
        For I = 1 To 100 ' 设置计数循环
            SendKeys I & "{+}", True ' 按下按键给计算器
        Next I ' 将所有 I 值相加
        SendKeys "=", True ' 取得总和
        SendKeys "%{F4}", True ' 按 ALT+F4 关闭计算器
    End Sub