关于游戏外挂的问题,想简单的实现一些基本的键盘操作
步骤:1、点击:TAB
2、延时1秒
3、点击:1
4、延时5秒怎么在游戏中用热键启动?当游戏最小化时,怎么才能让这个程序也能用?能给出较具体的代码吗?谢谢!

解决方案 »

  1.   

    我也知道用API,但怎么实现,一点路子都没有!
      

  2.   

    要自己写的话,大概要写一个HOOK函数,接管键盘的消息处理,自己处理就是了。其实还有更简单的办法,下个《按键精灵》,简单编个脚本就可以实现了。在最小化时也要能使用,好像不太容易办到。。上面说的两种方法都不行,因为只有当前活动窗口才能接收键盘消息。。真要在最小化情况下也要实现该功能,大概要修改IP包了,,,就是一些外挂软件用的方法,But,很多网游IP包都是加密的,而且有一定反外挂机制,修改的不彻底的话有可能被检测到哦。。只是个人一点看法,不对的地方请高人指教。
      

  3.   

    TO:monica888
    你用什么软件啊?能发一份给我吗?
      

  4.   

    vb6.0+api
    你没有吗?三块钱一张盗版 里面有的
      

  5.   

    意思就是叫你花三块钱到电脑城买张vb6.0的盗版光盘回家安装
    不明白吗?点击setup.exe那个文件就可以了
    放光盘要记得按一下光驱下面的出仓键,不然光盘是塞不进去的
      

  6.   

    真倒霉,高手全部隐身,来了个消遣人的!TNND!
      

  7.   

    真倒霉,能让我消谴的人全部隐身,来了个菜鸟的!TMD!
      

  8.   

    vb来做比较复杂,还是应该考虑用c来写
      

  9.   

    菜鸟跟小样的区别在于 小样问别人的问题能自己解决 而菜鸟却不能
    菜鸟跟SB的区别在于 菜鸟只是不能解决问题而SB不能解决问题的同时还在这里骂人我是小样就是肯定的了 那请问阁下您是菜鸟还是SB?
      

  10.   

    对CSDN.NET失望了,想不到这里竟然还有这种这么没素质的猪!真不知道它是怎么注册ID的!
      

  11.   

    我现在开始想骂你这条狗了 自己SB就不要怨天尤人 你要知道 虽然你是条狗 但你一样要有领养牌照才有资格在这里狂吠 知道不 呆B
      

  12.   

    光是API不行的。以前做了个,没用。
    还是三楼说得对头,用HOOK函数,接管键盘的消息处理,自己处理就是了
      

  13.   

    3.驱动级模拟    如果上面的方法你都试过了,可是你发现目标程序却仍然顽固的不接受你模拟的消息,寒~~~~~~~~~还好,我还剩下最后一招,这就是驱动级模拟:直接读写键盘的硬件端口!
        有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时性控制的要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式的,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消息,这个速度达不到游戏的要求。而DirectInput则绕过了windows消息,直接与键盘驱动程序打交道,效率当然提高了不少。因此也就造成,对这样的程序无论用PostMessage或者是keybd_event都不会有反应,因为这些函数都在较高层。对于这样的程序,只好用直接读写键盘端口的方法来模拟硬件事件了。要用这个方法来模拟键盘,需要先了解一下键盘编程的相关知识。
        在DOS时代,当用户按下或者放开一个键时,就会产生一个键盘中断(如果键盘中断是允许的),这样程序会跳转到BIOS中的键盘中断处理程序去执行。打开windows的设备管理器,可以查看到键盘控制器由两个端口控制。其中&H60是数据端口,可以读出键盘数据,而&H64是控制端口,用来发出控制信号。也就是,从&H60号端口可以读此键盘的按键信息,当从这个端口读取一个字节,该字节的低7位就是按键的扫描码,而高1位则表示是按下键还是释放键。当按下键时,最高位为0,称为通码,当释放键时,最高位为1,称为断码。既然从这个端口读数据可以获得按键信息,那么向这个端口写入数据就可以模拟按键了!用过QbASIC4.5的朋友可能知道,QB中有个OUT命令可以向指定端口写入数据,而INP函数可以读取指定端口的数据。那我们先看看如果用QB该怎么写代码:
    假如你想模拟按下一个键,这个键的扫描码为&H50,那就这样
    OUT &H64,&HD2   '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,&H50   '把扫描码&H50发送到&H60端口,表示模拟按下扫描码为&H50的这个键
    那么要释放这个键呢?像这样,发送该键的断码:
    OUT &H64,&HD2   '把数据&HD2发送到&H64端口。这是一个KBC指令,表示将要向键盘写入数据
    OUT &H60,(&H50 OR &H80)   '把扫描码&H50与数据&H80进行或运算,可以把它的高位置1,得到断码,表示释放这个键
        好了,现在的问题就是在VB中如何向端口写入数据了。因为在windows中,普通应用程序是无权操作端口的,于是我们就需要一个驱动程序来帮助我们实现。在这里我们可以使用一个组件WINIO来完成读写端口操作。什么是WINIO?WINIO是一个全免费的、无需注册的、含源程序的WINDOWS2000端口操作驱动程序组件(可以到http://www.internals.com/上去下载)。它不仅可以操作端口,还可以操作内存;不仅能在VB下用,还可以在DELPHI、VC等其它环境下使用,性能特别优异。下载该组件,解压缩后可以看到几个文件夹,其中Release文件夹下的3个文件就是我们需要的,这3个文件是WinIo.sys(用于win xp下的驱动程序),WINIO.VXD(用于win 98下的驱动程序),WinIo.dll(封装函数的动态链接库),我们只需要调用WinIo.dll中的函数,然后WinIo.dll就会安装并调用驱动程序来完成相应的功能。值得一提的是这个组件完全是绿色的,无需安装,你只需要把这3个文件复制到与你的程序相同的文件夹下就可以使用了。用法很简单,先用里面的InitializeWinIo函数安装驱动程序,然后就可以用GetPortVal来读取端口或者用SetPortVal来写入端口了。好,让我们来做一个驱动级的键盘模拟吧。先把winio的3个文件拷贝到你的程序的文件夹下,然后在VB中新建一个工程,添加一个模块,在模块中加入下面的winio函数声明:Declare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long
    Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean
    Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean
    Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean
    Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function InitializeWinIo Lib "WinIo.dll" () As Boolean
    Declare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean
    Declare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean
    Declare Function RemoveWinIoDriver Lib "WinIo.dll" () As Boolean' ------------------------------------以上是WINIO函数声明-------------------------------------------Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long'-----------------------------------以上是WIN32 API函数声明-----------------------------------------很长,自己去这里看看:http://www.m5home.com/bbs/dispbbs.asp?boardID=2&ID=1283&page=1而且也有那个DLL文件下载.PS:引用<<武林外传>>里捕头的一句话:
                                      注意素质
    ..