如何从Android应用程序中读取内存数据

Seu*_*ung 3 database android

我想从应用程序中获取一些数值数据,但它们不会像db那样存储.我知道有一些内存黑客应用程序可以改变游戏价值,虽然我不知道它们是如何工作的.我正在寻找类似的功能,但我不需要改变任何东西.

我正在尝试编写的应用程序只读取特定应用程序中的一些数据,并根据它进行一些背景计算.如果这是不可能的,我需要通过阅读屏幕获取信息(例如获取像素颜色),但这对于获取许多数据来说似乎是非常麻烦的任务.

有没有办法实现这个目标?

谢谢.

编辑:我认为我需要root权限吗?

use*_*723 8

是的,您需要root权限.此外,您的用户必须拥有完全root设备,例如SuperSU或其他现代Su应用程序,这可以解除大多数SELinux限制.可能还存在与KNOX和其他类似系统的冲突,但我对这些系统并不了解.

您需要将您的进程作为调试器附加到目标应用程序,并通过扫描它的内存来找到必要的数据.这可以通过多种方式完成,可以在scanmem中找到要查看的最佳参考实现.

执行需要root权限的实际契约的代码 - 读/写目标进程内存 - 将驻留在通过su运行的本机可执行文件中.您必须编写一些代码来与该可执行文件进行通信(可能通过它的stdin/stdout或类似的东西).

您还必须编写其他代码来自行解析目标应用程序的内存布局.

或者,您可能更喜欢在目标应用程序的内存中注入一个小模块和/或让应用程序本身加载您制作的Dex文件(如果您的目标数据存储在Java内存中,则特别方便).此方法具有最小化与虚拟机的内存布局的交互的好处,但您仍然必须启动初始Dex文件的加载.加载Dex文件后,您可以使用古老的反射API在Java代码中完成其余工作.如果你选择这条路线,可以在compel 库中找到一个(体面支持!)代码,用于在Linux进程的内存中注入可执行代码片段,这是作为CRIU项目[1]的一部分开发的.