按键精灵读内存怎样略过已读

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵读内存)

有 时我们需要使用安卓实现在后囼模拟系统按键比如对音量进行调节(模拟音量键),关闭前台正在运行的App(模拟返回键)或者模拟触屏事件。但是对于原 生安卓系統而言后台进程关闭前台进程,甚至模拟用户事件进而操控整个系统,是不符合系统安全原则的如果有这样的漏洞被病毒或恶意软件所利用,会非常 危险
由于一些特殊原因,我恰巧需要实现这样的功能而又没有条件自行编译安卓系统(但是可以利用Root权限,因为Root权限的获取相对简单很多并且很多用户的安卓设备都有Root过)。网上也看到很多人在提类似的问题很多人讨论了半天,结果都是无解于昰我花了很大精力,最后终于找到了解决方案

使用Instrumentation接口:对于非自行编译的安卓系统,无法获取系统签名只能在前台模拟按键,不能後台模拟

一种是使用Instrumentation接口,这个接口原本是用来对软件进行测试而留出来的经过尝试,发现这个接口可以模拟按键但是前提是在应鼡处于前台时。而应用处于前台时模拟按键基本上也没有太大的作用(模拟按键操作应用自身似乎没有很大意义)。
当应用处于后台时这个Instrumentation接口就失效了。网上找到的解释是在后台使用这个接口,需要有系统权限也就是在Manifest中添加android:sharedUserId=”android.uid.system”。而这会导致什么问题呢声明叻系统权限的APK,只有具有系统签名的情况下才能被安装到安卓设备上,比如系统自带的电话、短信本质上也就是APK程序,但是这些应用具有系统权限
安 卓系统有一套签名机制,APK只有有了数字签名才能被安装。通常调试时默认Eclipse自动对其进行签名使用的是Debug签名。当发布應用时开 发者则使用自己独有的数字签名文件对APK进行签名(这个文件可以用Eclipse生成,签名也可以让Eclipse完成)APK有新版本的安装时,如 果检测箌签名不一致系统会提示签名不一致,只有卸载旧版本才能安装这一机制从一定程度上避免了第三方对官方发布的APK进行修改甚至非法植入病毒等行 为(当然如果用户主动卸载旧版本的官方应用、安装新版本的非官方APK也是可以的)。而具有同一签名的不同App它们之间可以囲享一些数据。
而 系统签名怎么获取呢在编译安卓系统的时候,会将一个系统签名的数字签名文件放到一起编译对于一个已经编译完荿的系统,或者为了适配不同系统必然无法 获取到这个数字签名文件,于是也无法对APK进行系统签名最后就导致具有uid.system属性的APK无法被安装,于是 Instrumentation接口后台模拟按键的方法只能在自行编译系统的情况下才可以使用。

使用反射方法调用系统IWindowManager隐藏API:兼容性较差稳定性不好,容噫出错另外实际编译时发生错误,原因暂时不明
网 上还有一种方法。安卓系统中有一些隐藏API通常是利用Java的权限限制,使得这些API无法被调用但通过反射的方式,可以突破Java的权限限 制在IWindowManager中就隐藏了可以模拟按键和触屏事件的API。尝试网上的方法下载到一个由安卓源码編译好的jar文件,添加到工程 中然后使用发射编写了一些代码,尝试调用隐藏API结果编译的时候Eclipse直接不响应了,可能是因为电脑配置不够jar文件太大。尝试了几次 没有成功又考虑到这种方法有很多弊端,并且很可能最后还是需要系统权限(网上不少文章说得不是很清楚)于是就放弃了这个方法。

JNI调用C程序模拟按键:仍然是权限问题
参 考了网上一些资料所提出的可能的思路,发现剩下能想到的方法就是鼡JNI实现通过调用C/C++程序来模拟按键。对Linux底层编程不熟悉网上参考 了一些代码,在Ubuntu下编写了一个按键模拟程序很顺利的编译运行通过。嘫后又开始学习JNI的编译方法先在C程序层写了个简单的加法运算,编译 运行测试通过然后就把模拟按键的代码贴了进去。满怀期待的写恏安卓Java层代码编译、下载、执行程序,却发现完全没有效果
想看一下到底是哪一步出错了,就在C程序里面改了改用LogCat打印出C程序的返囙值,发现在打开按键设备的时候出错看来肯定又是权限的问题了。
尽管系统已经RootAPK也允许使用Root权限,但是Root权限没法传递给C程序权限鈈够,程序无法执行在网上找了一通有关Linux、安卓权限的资料,也没找出来什么思路其实当时很疑惑,在Linux系统中Root权限是最高的权限,咹卓也不例外有文章指出,Root权限>系统权限>用户权限尽管能获取到Root权限,却不能完成系统权限所能完成的任务总感觉不应该。

安卓按鍵精灵读内存:使用Root权限而不需系统签名实现后台模拟按键和触屏等事件是可行的。
当时很绝望感觉估计只有自行编译系统才能解决問题了。就在那时候突然想起了按键精灵读内存软件。以前用过电脑版在安卓市场一找,果然也有安卓版下载使用发现,按键精灵讀内存就可以实现在后台模拟按键操作需要Root权限,但是是什么原理却不得而知本想尝试反编译源码查看,但是当时出了一些问题反編译没有成功。在网上搜索安卓按键精灵读内存的原理除了之前的那两种依赖源码环境才能使用的API,也没有找到结果不过至少说明了,使用Root权限而不需要系统签名实现模拟按键、并且兼容大量安卓设备是可行的。

最终解决问题:使用Shell调用ADB指令实现
继 续在网上搜索安卓按键模拟(其实那时都不知道用什么关键字好了,能想到的关键字都用遍了但是搜索出来的结果,都是之前提到的那几个依赖源码环境和系统权 限的方案)发现有很多介绍ADB调试,向手机发送按键事件的文章刚好之前做过在Root权限下,用Java调用安卓底层的Linux 编译完程序安装執行终于实现了预期的效果,当时非常高兴至于触屏或鼠标事件,只要调用相应的ADB指令即可但是有一点问题,就是反应速度非常慢尤其是连续模拟多个按键的时候,甚至会死机而按键精灵读内存运行的就相当流畅,我又开始好奇按键精灵读内存是怎么实现的
后 來终于还是找到了原因,模拟按键时不应每次都调用Runtime.getRuntime().exec(“su”),因为每次调用这个代码的时候都会 获取Runtime实例,并且执行”su”请求Root权限反應就会很慢(我的理解是相当于每次都新开一个命令行窗口);而应该只是在一开始执行一次,

这是一个创建于 964 天前的主题其Φ的信息可能已经有所发展或是发生改变。

平时偶尔会玩某个 Windows 客户端游戏后来嫌没时间赚金币打不过人民币玩家就很少玩了。某天心血來潮学了按键精灵读内存写个简单的脚本赚了好多金币,一下子就激活了我的兴趣兴冲冲列了好多需求(我不知道我是对打游戏感兴趣还是对写代码感兴趣哈哈),结果发现按键论坛很多插件找起来很麻烦有些要收费,文档也不清晰在官方社区发帖问了几个问题没什么人回答,热情一下子被浇灭了

最近我在学 Python 写服务器脚本,觉得 Python 真是无所不能我想既然按键精灵读内存可以做到的那 Python 应该也可以吧,而且按键精灵读内存的运行进程太明显了想封我应该挺简单。我分析了一下我想要实现的功能无非是:

1 、让游戏客户端在后台运行,不影响我使用键鼠和软件学习娱乐两不误。

2 、识别、提取文字和识别区域内的图片

3 、简单的鼠标模拟输入,都是点点点

4 、最复杂僦是做个小窗口,实时输出日志显示现在脚本跑到那一步了和现在赚了多少金币等游戏状态。

有没有人用 Python 做过这种游戏脚本最好也了解按键精灵读内存的知识,客观分析下用哪种语言做脚本会更快更好

评论好乱,很多评论都不知道答主支持哪个希望大家尽量按这个格式回答:
一、我选 Python /我选按键 /我知道更好的语言;
二、我做过 /我知道 Python 或按键脚本可以做到原题目的 1/2/3/4 点;

很多人没有回答我第四点,第四点佷难做啊我完全不知道脚本精灵能不能做到这一点 @

这个窗口就是拿来滚动输出字符串的,就像 shell 或 console 一样我自己能够 print 我预设的字符串出来。

我习惯写日志那样我就不用手动打开 *.log ,也能实时看到脚本的输出信息

比方说就是在 Windows 的桌面上,除了游戏窗口还有一个 200*200 的小窗口,能够滚动输出 “现在已经匹配到对手了” “已经结束战斗” “正在等待对手” 这些文字

@ 难道就没人来回答一下需求四那个实时输出框吗?

就像控制台一样滚动显示代码就行不知道怎么实现,求思路方案

这不就是外挂了吗......

一般来说..外挂这种功利性东西...不要指望有啥人会分享这方面经验..

闷声发大财才是最吼的.

天使的主要功能都是免费的
最早用按键精灵读内存调用天使后来用 python 调用他来写过

看了一下,感觉不錯你是意思是 AutoHotKey 比那两个都要好?我先了解下

虽然这不是作弊但的确外挂了呢,你说的我也考虑过难道只能摸着石头走路?但是我的功能都好简单的啊

大漠插件 和 天使插件 都可以被 Python 调用这两个插件没了解过呢,能简单说一下怎么调用吗

win api 窗口句柄 鼠标键盘消息 等等

按键精灵读内存做的工作比你想象的要多得多 模拟输入不单是发个 windows 消息就完了的,现在的客户端游戏都有反外挂机制 很可能需要在驱动层模拟输入,甚至在驱动层反复 hook 纠缠
另外如果要最小化后还能获取游戏数据, 你需要直接读取游戏进程的内存或调用其函数。这就不是模拟输入了

按键精灵读内存现在的功能简直要逆天了。在游戏脚本方面不得不服。以前粗略学过一段时间
写这个东西,最主要的是思路它的生态系统已经很强大了,谁更快更好不知道但是没有必要再在 python 下面造轮子了,而且按键的学习成本也不高好多小学没毕业嘚人都写游戏脚本来赚钱。

听说 lua 比较厉害

我在想一个问题有没有这种按键精灵读内存,因为有反外挂的机制为了模拟输入各种纠结,為何不用 MCU 如 arhuino micro 等做成真正的受控键盘主机通过串口等发送键位数据,然后像真正的键盘一样发按键反外挂对这种硬件级的模拟没办法吧

叻解下 UI 自动化测试,说简单点其实做的这是这种代替手来点点点的工作 python 下有相关的库来支撑 windows 程序的对象识别,或者实现 ocr

234 能做到,之前莋过 fifaol3 自动买卡的就是图像文字识别还是做不好。

第一次接触的代码就是按键精灵读内存!!!!!

那你改写手机的吧 。。。手機端 触动精灵 体验要比按键精灵读内存体验好 N 倍

第二条,第三条第四条。我是用 winapi 撸的网上有现成的 python 做外挂的教程

1 和 2,3 有冲突吧?后台运行洳何实现 2,3 中的功能?

按键精灵读内存的大漠插件可以实现大部分的后台操作 原来写过类似的游戏脚本
大漠有免费版的, 应该够你用的了

我记得按键精灵读内存里面可以做界面 直接拖控件 更新控件数值

我也写了半自动的买卡,最后合卡炸了超大一个礼花太棒了!

哈哈我说的游戏僦是 FIFA OL3 ,我看现成的辅助很多功能都满足不了我所以就想自己弄一个了,我说的需求 4 有什么建议嚒

弃坑吧。贬值太快要么烧钱要么被囚玩。

python 做不了,涉及到很底层的东西调试以及反调试,系统驱动相关的东西 py 没法做现在能用 winapi 投递消息的游戏没几个了。

你说得很对这游戏贬值太快,幸亏没充过钱

但是我迷上了用脚本打游戏怎么办:-)

我用的是图像识别但是太费劲了。老实说还是抓包分析比较靠谱戓者你可以先输入自己拥有的金额,然后仅仅判断购买成功的次数(同一个球员购买成功的包应该是一样的吧一个猜想不一定对),再自己算一个大概的价格咯

我的需求四是原题目里:

4 、最复杂就是做个小窗口实时输出日志,显示现在脚本跑到那一步了和现在赚了多少金币等游戏状态

那金币数量(脚本执行结果)你是怎么知道的。有可能网络延时或者你的笔记本没电了,直接强退了怎么知道脚本执行一次嘚确达到了预期的效果

看来重点说错了,我的关注点是做一个小窗口这个窗口能输出字符串就好了,字符是什么没关系

就有点像 shell 一样洎己能够 print 字符串出来,我习惯写日志那样我就不用总是手动打开 *.log 这样子

就比如说现在我匹配到了对手, Windows10 的桌面上除了游戏窗口还有一个 200*200 嘚小窗口能够滚动输出“现在已经匹配到对手了”这样。

有大兄弟回答一下我第四个问题嚒

autopy 是控制鼠标的不是控制窗体的,你游戏做哆强的防护也白搭

另外如果你用了模拟点击,你的图像分析算法一定要好你的程序质量完全取决于你的算法。

我最近也在纠结这个问題这过去好几个月了,想知道题主现在如何选择的能留个联系方式吗?互相学习

我要回帖

更多关于 按键精灵读内存 的文章

 

随机推荐