用Python制作游戏外挂(上)

article/2025/9/24 6:05:38

源地址:http://eyehere.net/2012/python-game-bot-autopy-1/

悲剧成我这样的人,我知道肯定不止我一个,所以我一点都不悲伤:-( 所以我打开了4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜单做好端给他便好~ 为啥这么有难度?8种菜单记不清,点点就点错,鼠标还不好使肌肉劳损啥的伤不起啊……

首先要声明,这里的游戏外挂的概念,和那些大型网游里的外挂可不同,不能自动打怪,不能喝药不能躲避GM…… 那做这个外挂有啥用?问的好,没用,除了可以浪费你一点时间,提高一下编程技术,增加一点点点点点点的做外挂的基础以外,毫无用处,如果您是以制作一个惊天地泣鬼神不开则已一开立刻超神的外挂为目标过来的话,恐怕要让您失望了,请及早绕道。我的目的很简单,就是自动玩这款小游戏而已。

工具的准备

这篇文章需要您有Python基础,我不会讲解Python语法啥的~

Python
需要安装 autopy和 PIL以及 pywin32包。autopy是一个自动化操作的python库,可以模拟一些鼠标、键盘事件,还能对屏幕进行访问,本来我想用win32api来模拟输入事件的,发现这个用起来比较简单,最厉害的是它是跨平台的,请搜索安装;而PIL那是大名鼎鼎了,Python图像处理的No.1,下面会说明用它来做什么;pywin32其实不是必须的,但是为了方便(鼠标它在自己动着呢,如何结束它呢),还是建议安装一下,哦对了,我是在win平台上做的,外挂大概只有windows用户需要吧?
截屏和图像处理工具
截屏是获取游戏图像以供分析游戏提示,其实没有专门的工具直接Print Screen粘贴到图像处理工具里也可以。我用的是 PicPick,相当好用,而且个人用户是免费的;而图像处理则是为了获取各种信息的,我们要用它得到点菜图像后保存起来,供外挂分析判断。我用的是PhotoShop… 不要告诉Adobe,其实PicPick中自带的图像编辑器也足够了,只要能查看图像坐标和剪贴图片就好饿了,只不过我习惯PS了~
编辑器

 

这个我就不用说了吧,写代码得要个编辑器啊!俺用VIM,您若愿意用写字板也可以……

原理分析

外挂的历史啥的我不想说啦,有兴趣请谷歌或度娘(注:非技术问题尽可以百度)。

看这个游戏,有8种菜,每种菜都有固定的做法,顾客一旦坐下来,头顶上就会有一个图片,看图片就知道他想要点什么菜,点击左边原料区域,然后点击一下……不知道叫什么,像个竹简一样的东西,菜就做完了,然后把做好的食物拖拽到客户面前就好了。

顾客头上显示图片的位置是固定的,总共也只有四个位置,我们可以逐一分析,而原料的位置也是固定的,每种菜的做法更是清清楚楚,这样一来我们完全可以判断,程序可以很好的帮我们做出一份一份的佳肴并奉上,于是钱滚滚的来:)

autopy介绍

github上有一篇很不错的入门文章,虽然是英文但是很简单,不过我还是摘几个这次用得到的说明一下,以显示我很勤劳。

移动鼠标

 

这个命令会让鼠标迅速移动到指定屏幕坐标,你知道什么是屏幕坐标的吧,左上角是(0,0),然后向右向下递增,所以1024×768屏幕的右下角坐标是……你猜对了,是(1023,767)。

不过有些不幸的,如果你实际用一下这个命令,然后用autopy.mouse.get_pos()获得一下当前坐标,发现它并不在(100,100)上,而是更小一些,比如我的机器上是(97,99),和分辨率有关。这个移动是用户了和windows中mouse_event函数,若不清楚api的,知道这回事就好了,就是这个坐标不是很精确的。像我一样很好奇的,可以去读一下autopy的源码,我发现他计算绝对坐标算法有问题:

这里先做除法再做乘法,学过一点计算方法的就应该知道对于整数运算,应该先乘再除的,否则就会产生比较大的误差,如果他写成:

就会准多了,虽然理论上会慢一点点,不过我也懒得改代码重新编译了,差几个像素,这里对我们影响不大~咱要吸取教训呀。

点击鼠标

 

这个比较简单,不过记得这里的操作都是非常非常快的,有可能游戏还没反应过来呢,你就完成了,于是失败了…… 所以必要的时候,请sleep一小会儿。

键盘操作

我们这次没用到键盘,所以我就不说了。

本来我想一篇文章说完的,貌似有点难度太长了懒得看,所以也做个上中下篇吧,这次是基础,下次是图像分析,最后是实现,敬请期待。

分类 Python 标签:autopy, Python, 游戏, 游戏开发

转载于:https://www.cnblogs.com/lanye/p/5363418.html


http://chatgpt.dhexx.cn/article/UtBagNhP.shtml

相关文章

游戏外挂制作原理

2019独角兽企业重金招聘Python工程师标准>>> 一、 前言   所谓游戏外挂,其实是一种游戏外辅程序,它可以协助玩家自动产生游戏动作、修改游戏网络数据包以及修改游戏内存数据等,以实现玩家用最少的时间和金钱去完成功力升级和过关…

Python制作安卓游戏外挂

Python制作安卓游戏外挂 最近在玩一款背单词的手机游戏-单词英雄,是一个将背单词和卡牌游戏相结合的游戏,通过选择正确的单词意思进行有效攻击,边玩游戏就把单词给背了。 游戏的界面是这样的: Paste_Image.png 通过选择…

一步步用python制作游戏外挂

玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂。。。。 我打开了4399小游戏网&am…

游戏外挂怎么做?

文章目录 1.什么是游戏外挂2.外挂的分类及实现原理2.1 辅助类外挂2.2 专用插件类外挂2.3 通用工具2.4 内存修改器2.5 变速器2.6 按键精灵2.7 模拟器2.8 破解版 转载自:Anti-Cheat Expert 游戏安全专家 干货!什么是游戏外挂,外挂的种类及实现原…

Windows关闭某个端口的服务

在开发过程中有些服务没有正常关闭,在重新启动新版本的服务的时候会存在端口占用的情况。就需要先停止之前的服务进程。 例如7777端口被占用。 1 查看7777端口被什么服务占用 netstat -ano | findstr 77772 停止该服务 使用taskkill /PID 55684 /T /F 这行命令停…

windows关闭端口

关闭8004端口 找到占用8080端口对应的程序的PID号 netstat -aon|findstr "8004"找到对应的程序名 tasklist|findstr "PID号"杀死程序 taskkill /f /t /im java.exe或者 taskkill /pid 7952 /F

win10防火墙怎么关闭端口?

我们都知道win10系统自带防火墙功能,如果用户使用的是公用网络,防火墙就会提醒各种问题。有很多用户使用完端口想要关闭,但是不知道如何关闭。下面小编就给大家讲讲如何关闭防火墙端口的方法。 若要关闭Microsoft Defender防火墙中的端口&…

关闭Windows指定端口

Windows默认情况下,很多端口是开发的,这就给网络病毒或黑客通过这些开放的端口登录你的电脑提供的机会。 可以采用Zenmap工具扫描指定ip所开放的端口,且应在局域网和互联网等条件下进行端口扫描,保障端口的开放的可控&#xff0c…

windows10 关闭指定端口

今天在Windows10电脑上安装zk和dubbo,运行Tomcat总是包端口占用异常,重启了一次电脑后觉得一直重启不是个好办法,于是学会了用命令关闭进程的技能 查看指定端口的使用情况 使用命令: netstat -ano | findstr 端口号1 如下所示&…

win10关闭某个端口

前言 作为一个程序员,经常遇到启动某个软件时,会爆出某个端口被占用,所以使用命令关闭端口的技能必须掌握 第一步:查询端口对应的PID netstat -ano|findstr 1099 第二步:根据PID关闭该进程 【F参数:表…

WINDOWS10如何关闭占用的端口号

WINDOW10 如何关闭占用的端口号 今天运行服务的时候,发现报错。 Web server failed to start. Port xxxx was already in use.这里的’xxxx‘是端口号。原因是程序没关闭,电脑就关机了,因此再次运行该程序的时候发现端口号被占用。 这样的…

Windows系统关闭端口教程

打开控制面板----管理工具----本地安全策略 单击选中“IP安全策略在本地计算机”,在右侧空白处右击,选择创建IP安全策略 点击下一步 输入新建策略的名称----点击下一步 下一步 单击完成 在新IP安全策略属性窗口下 新建安全规则----单击添加 单击添加 在…

Debian上如何打开关闭端口

1. 可以通过"netstat -anp" 来查看哪些端口被打开。 (注:加参数-n会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两个终端,一一对应一下程序所…

windows关闭端口命令cmd

打开命令行窗口 输入 netstat -ano |findstr (需要关闭的端口) 比如要关闭8081这个端口 输入 taskkill /t /f /im (根据端口得到的进程号) 例如: 21500就是上面查到的进程号

Windows端口开启关闭

亲测可用,若有疑问请私信 netstat-a #显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。 netstat-e #显示以太网发送和接收的字节数、数据包数等。 netstat-n #以数字形式显示所有活动的TCP连接的地址和端口号。 netstat-o #显示活动的TCP连接并包括每个连…

Linux下开启、关闭端口的方法

Linux下开启、关闭端口的方法 1、查看防火墙状态2、开启防火墙3、开启端口(以端口443为例)4、重启防火墙5、重新载入防火墙6、查看已开启的端口7、如何关闭端口 1、查看防火墙状态 在Linux控制台输入:firewall-cmd --state 此时控制台返回&a…

Windows如何关闭端口(图文)

方法1:创建防火墙策略进行阻止端口(防火墙开启才生效) 方法2:本地安全策略关闭 控制面板--系统--管理工具--本地安全策略 新建安全策略 去掉添加向导的勾选,添加筛选器列表 设置ip地址 设置协议类型 设置端口 添加筛…

命令行关闭端口

1.打开cmd(winR或者搜索框搜索cmd) 2.netstat -ano | findstr :8082 3.taskkill /F /PID 25108 附:如果结束端口提示不成功请使用管理员权限打开cmd在执行前面的步骤即可

cmd关闭端口

cmd关闭端口的命令是“taskkill”,该命令用于结束一个或多个任务或流程。关闭端口的方法:1、使用“taskkill /pid 端口号 -t -f”命令来强制关闭;2、使用“taskkill /f /t /im 进程名”命令来关闭。 通过CMD命令行打开防火墙端口 Windows 使用…

windows端口占用关闭指定端口

项目无法启动,端口冲突 1、查看windows端口进程 点击开始菜单选择运行(winr),接着在运行对话框中输入“cmd”,回车打开命令提示符窗口,然后在窗口中输入【netstat -aon|findstr “端口”】,回车…