标签
工具
字数
770 字
阅读时间
4 分钟
一、简介
1.1 游戏外挂分类
内存级外挂
以直接修改游戏内存中玩家信息为主的外挂。
该外挂通常只能用于单机游戏,因为网络游戏中你最多也只能修改自己电脑客户端的内存而已,而最终的关键性数据都是存放于服务器端的内存中或者硬盘上。
该类外挂常见的有:游戏金手指
数据流级外挂
以拦截客户端向服务器发送的请求信息,并进行放大或修改。
该外挂通常用于网络游戏中。极大的影响了游戏的平衡。
该类外挂常见的有:传奇霸主、变速齿轮、变速精灵、各种脱机外挂等。
脚本级外挂(绿色外挂)
不影响游戏平衡,只是利用程序替代玩家的游戏操作,解放双手。
通常又叫做绿色外挂、绿色脚本、绿色挂机脚本、绿色游戏辅助工具等。
该类外挂常见的有:按键精灵、简单游等。
1.2 java开发外挂优缺点
优点:
java是在jvm(java 虚拟机)中运行的,由jvm去通知windows操作系统,从而控制键盘鼠标。而游戏外挂检查软件是无法知道,此jvm虚拟机在内存中到底是起什么样的作用。
缺点:
无法实现钩子功能。
钩子功能:在游戏界面最小化的时候,按键操作及其它功能只会对该游戏生效,不会影响用户其它操作。
二、使用示例
通过java.awt.Robot实现功能。
java
// 常用api
// 用来将当前的程序(thread)休眠(sleep)若干毫秒(ms)。可用来控制程序的延时。
void delay(int ms)
// 取得给定屏幕坐标像素位置的颜色值
Color getPixelColor(int x, int y)
// 用来产生指定键的按键按下与抬起动作,相当于Win32 API的keyb_event函数.可用于程序的自动演示、测试等.
void keyPress(int keycode)
void keyRelease(int keycode)
// 将鼠标光标移动到指定的屏幕坐标.可用于程序的自动演示、测试等.
void mouseMove(int x, int y)
// 产生指定鼠标按钮的按下,抬起,及滚轮动作.一样也可用于程序的自动演示、测试等.
void mousePress(int buttons)
void mouseRelease(int buttons)
void mouseWheel(int wheelAmt)代码demo
java
//创建一个java机器人对象
Robot robot = new Robot();
//延时5秒才开始运行
robot.delay(5000);
//按下k键
robot.keyPress(KeyEvent.VK_K);
//按下键后持续0.3秒后再弹起
// 可使用随机值
// double v = 0.2 + random.nextDouble() * (0.4 - 0.2);
robot.delay(300);
//弹起k键
robot.keyRelease(KeyEvent.VK_K);
//移动到屏幕右下角位置
robot.mouseMove(980,700);
//点击鼠标左键
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
//弹起鼠标
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
//获得指定位置的颜色
Color pixelColor = robot.getPixelColor(950, 500);
System.out.println(pixelColor.getRed());
System.out.println(pixelColor.getGreen());
System.out.println(pixelColor.getBlue());