
MemoryTools.h
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <dirent.h>
#include <pthread.h>
#include <cstdio>
#include <cstring>
#include <fstream>
struct MAPS {
unsigned long addr;
unsigned long taddr;
struct MAPS *next;
};
struct RESULT {
unsigned long addr;
struct RESULT *next;
};
struct FREEZE {
unsigned long addr; //地址
char *value; //值
int type; //类型
struct FREEZE *next; //指向下一节点的指针
};
#define LEN sizeof(struct MAPS)
#define FRE sizeof(struct FREEZE)
typedef struct MAPS *PMAPS; //存储maps的链表
typedef struct RESULT *PRES; //存储结果的链表
typedef struct FREEZE *PFREEZE;//存储冻结的数据的链表
typedef int TYPE;
typedef int RANGE;
typedef int COUNT;
typedef long int OFFSET;
typedef unsigned long ADDRESS;
typedef char PACKAGENAME;
enum type {
DWORD,
FLOAT
};
enum Range {
ALL, //所有内存
B_BAD, //B内存
C_ALLOC, //Ca内存
C_BSS, //Cb内存
C_DATA, //Cd内存
C_HEAP, //Ch内存
JAVA_HEAP, //Jh内存
A_ANONMYOUS,//A内存
CODE_SYSTEM,//Xs内存
STACK, //S内存
ASHMEM //As内存
};
PMAPS Res = NULL;//全局buff(保存数据的地方)
PFREEZE Pfreeze = NULL;//用于存储冻结的数据
PFREEZE pEnd = NULL;
PFREEZE pNew = NULL;
int FreezeCount = 0;//冻结数据个数
int Freeze = 0;//开关
int typeNum = -1;
pthread_t pth;
char Fbm[64];//包名
long int delay = 1000;//冻结延迟,默认1000us
int ResCount = 0;//结果数量
int MemorySearchRange = 0;
int getRoot(char *argv[]);//获取root权限
int gs;
pid_t pid = 0;
int initMemoryTools(const char *bm);//获取pid
int SetSearchRange(int type);//设置搜索范围
PMAPS readmaps(int type);
PMAPS readmaps_all();//读取maps文件
PMAPS readmaps_bad();//读取maps文件
PMAPS readmaps_c_alloc();//读取maps文件
PMAPS readmaps_c_bss();//读取maps文件
PMAPS readmaps_c_data();//读取maps文件
PMAPS readmaps_c_heap();//读取maps文件
PMAPS readmaps_java_heap();//读取maps文件
PMAPS readmaps_a_anonmyous();//读取maps文件
PMAPS readmaps_code_system();//读取maps文件
PMAPS readmaps_stack();//读取maps文件
PMAPS readmaps_ashmem();//读取maps文件
void BaseAddressSearch(char *value, int type, unsigned long BaseAddr);//基址搜索
PMAPS BaseAddressSearch_DWORD(int value, unsigned long BaseAddr, PMAPS pMap);//DWORD
PMAPS BaseAddressSearch_FLOAT(float value, unsigned long BaseAddr, PMAPS pMap);//FLOAT
void RangeMemorySearch(char *from_value, char *to_value, int type);//范围搜索
PMAPS RangeMemorySearch_DWORD(int from_value, int to_value, PMAPS pMap);//DWORD
PMAPS RangeMemorySearch_FLOAT(float from_value, float to_value, PMAPS pMap);//FLOAT
void MemorySearch(const char *value, int TYPE);//类型搜索,这里value需要传入一个地址
PMAPS MemorySearch_DWORD(int value, PMAPS pMap); //内存搜索DWORD
PMAPS MemorySearch_FLOAT(float value, PMAPS pMap); //内存搜索FLOAT
void MemoryOffset(const char *value, long int offset, int type);//搜索偏移
PMAPS MemoryOffset_DWORD(int value, long int offset, PMAPS pBuff);//搜索偏移DWORD
PMAPS MemoryOffset_FLOAT(float value, long int offset, PMAPS pBuff);//搜索偏移FLOAT
void RangeMemoryOffset(char *from_value, char *to_value, long int offset, int type);//范围偏移
PMAPS
RangeMemoryOffset_DWORD(int from_value, int to_value, long int offset, PMAPS pBuff);//搜索偏移DWORD
PMAPS
RangeMemoryOffset_FLOAT(float from_value, float to_value, long int offset, PMAPS pBuff);//搜索偏移FLOAT
void MemoryWrite(const char *value, long int offset, int type); //内存写入
int MemoryWrite_DWORD(int value, PMAPS pBuff, long int offset); //内存写入DWORD
int MemoryWrite_FLOAT(float value, PMAPS pBuff, long int offset); //内存写入FLOAT
void *SearchAddress(unsigned long addr);//搜索地址中的值,返回一个指针
int WriteAddress(unsigned long addr, void *value, int type);//修改地址中的值
int GetResultCount();//获取Res个数
void BypassGameSafe();//绕过游戏保护
//void RecBypassGameSafe(char *bm);//解除(停止使用)
void PrintResults();//打印Res里面的内容(地址)
void ClearResults();//清除链表,释放空间
void ClearMaps(PMAPS pMap);//清空maps
int isapkinstalled(char *bm);//检测应用是否安装
int isapkrunning(char *bm);//检测应用是否运行
int killprocess(char *bm);//杀掉进程
char GetProcessState(char *bm);//获取进程状态
int killGG();//杀掉gg修改器
int killXs();//杀xs
int uninstallapk(char *bm);//静默删除软件
int installapk(char *lj);//静默卸载软件
int rebootsystem();//重启系统(手机)
int PutDate();//输出系统日期
int GetDate(char *date);//获取系统时间
PMAPS GetResults();//获取结果,返回头指针
int AddFreezeItem_All(char *Value, int type, long int offset);//冻结所有结果
int AddFreezeItem(unsigned long addr, char *value, int type, long int offset);//增加冻结数据
int AddFreezeItem_DWORD(unsigned long addr, char *value);//DWORD
int AddFreezeItem_FLOAT(unsigned long addr, char *value);//FLOAT
int RemoveFreezeItem(long int addr);//清除固定冻结数据
int RemoveFreezeItem_All();//清空所有冻结数据
int StartFreeze(char *bm);//开始冻结
int StopFreeze();//停止冻结
int SetFreezeDelay(long int De);//设置冻结延迟
int PrintFreezeItems();//打印冻结表

加入群聊获取更多科技
Q群号码:549158392
4668

被折叠的 条评论
为什么被折叠?



