mirror of
https://github.com/Light-Speech/C-Android-Memory-Tool.git
synced 2024-10-23 09:33:45 +08:00
initial commits
This commit is contained in:
parent
c7dc3ed7e8
commit
4e9754f8ad
3294
MemoryTool.cpp
Normal file
3294
MemoryTool.cpp
Normal file
File diff suppressed because it is too large
Load Diff
232
MemoryTool.h
Normal file
232
MemoryTool.h
Normal file
@ -0,0 +1,232 @@
|
||||
#pragma
|
||||
#include<cstddef>
|
||||
#include<cstdint>
|
||||
#include<pthread.h>
|
||||
|
||||
struct MAPS {
|
||||
long int addr;
|
||||
long int taddr;
|
||||
int type;
|
||||
struct MAPS *next;
|
||||
};
|
||||
|
||||
struct RESULT {
|
||||
long int addr;
|
||||
struct RESULT *next;
|
||||
};
|
||||
|
||||
struct FREEZE {
|
||||
long int addr; // address
|
||||
char *value; // value
|
||||
int type; // type
|
||||
struct FREEZE *next; // pointer to the next node
|
||||
};
|
||||
|
||||
typedef int BOOLEAN;
|
||||
typedef struct MAPS *PMAPS; //A linked list that stores maps
|
||||
typedef struct RESULT *PRES; // linked list to store results
|
||||
typedef struct FREEZE *PFREEZE; // Linked list to store frozen data
|
||||
|
||||
typedef int TYPE;
|
||||
typedef int RANGE;
|
||||
typedef int COUNT;
|
||||
typedef int COLOR;
|
||||
typedef long int OFFSET;
|
||||
typedef long int ADDRESS;
|
||||
typedef char PACKAGENAME;
|
||||
|
||||
typedef int64_t QWORD;
|
||||
typedef int32_t DWORD;
|
||||
typedef int16_t WORD;
|
||||
typedef int8_t BYTE;
|
||||
typedef float FLOAT;
|
||||
typedef double DOUBLE;
|
||||
|
||||
enum type {
|
||||
TYPE_DWORD,
|
||||
TYPE_FLOAT,
|
||||
TYPE_DOUBLE,
|
||||
TYPE_WORD,
|
||||
TYPE_BYTE,
|
||||
TYPE_QWORD,
|
||||
};
|
||||
|
||||
enum Range {
|
||||
ALL, // all memory
|
||||
B_BAD, // B memory
|
||||
C_ALLOC, // Ca memory
|
||||
C_BSS, // Cb memory
|
||||
C_DATA, // Cd memory
|
||||
C_HEAP, // Ch memory
|
||||
JAVA_HEAP, // Jh memory
|
||||
A_ANONMYOUS, // A memory
|
||||
CODE_SYSTEM, // Xs memory
|
||||
STACK, // S memory
|
||||
ASHMEM // As memory
|
||||
};
|
||||
|
||||
enum Color {
|
||||
COLOR_SILVERY, // silver
|
||||
COLOR_RED, // Red
|
||||
COLOR_GREEN, // Green
|
||||
COLOR_YELLOW, // Yellow
|
||||
COLOR_DARK_BLUE, // Blue
|
||||
COLOR_PINK, // Pink
|
||||
COLOR_SKY_BLUE, // Sky Blue
|
||||
COLOR_WHITE // White
|
||||
};
|
||||
|
||||
#define MODE_ROOT "MODE_ROOT"
|
||||
#define MODE_NO_ROOT "MODE_NO_ROOT"
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#define LEN sizeof(struct MAPS)
|
||||
#define FRE sizeof(struct FREEZE)
|
||||
|
||||
|
||||
class MemoryTool
|
||||
{
|
||||
public:
|
||||
PMAPS Res = NULL; // Global buff (where data is saved)
|
||||
PFREEZE value_freeze = NULL; // For storing frozen data
|
||||
PFREEZE pEnd = NULL;
|
||||
PFREEZE pNew = NULL;
|
||||
int FreezeCount = 0; // Number of frozen data
|
||||
int Freeze = 0; // switch
|
||||
pthread_t pth;
|
||||
char bm[64]; // Package names
|
||||
long int delay = 30000; // Freeze delay, default 30000us
|
||||
int process_handle; //mem process_handle
|
||||
int ResCount = 0; // number of results
|
||||
int gs = 0;
|
||||
int MemorySearchRange = 0; // 0 for all
|
||||
int ms = 0;
|
||||
|
||||
int SetTextColor(int);
|
||||
int getPID(char [64]); // get pid
|
||||
void initXMemoryTools(char *, char *);
|
||||
int SetSearchRange(int); // Set search scope
|
||||
PMAPS readmaps(int);
|
||||
PMAPS readmaps_all(); // read maps file
|
||||
PMAPS readmaps_bad(); // read maps file
|
||||
PMAPS readmaps_c_alloc(); // read maps file
|
||||
PMAPS readmaps_c_bss(); // read maps file
|
||||
PMAPS readmaps_c_data(); // read maps file
|
||||
PMAPS readmaps_c_heap(); // read maps file
|
||||
PMAPS readmaps_java_heap(); // read maps file
|
||||
PMAPS readmaps_a_anonmyous(); // read maps file
|
||||
PMAPS readmaps_code_system(); // read maps file
|
||||
PMAPS readmaps_stack(); // read maps file
|
||||
PMAPS readmaps_ashmem(); // read maps file
|
||||
|
||||
void BaseAddressSearch(char*, int , long int); // base search
|
||||
PMAPS BaseAddressSearch_DWORD(DWORD, long int, PMAPS); // DWORD
|
||||
PMAPS BaseAddressSearch_FLOAT(FLOAT , long int, PMAPS ); // FLOAT
|
||||
PMAPS BaseAddressSearch_DOUBLE(DOUBLE , long int , PMAPS); // DOUBLE
|
||||
PMAPS BaseAddressSearch_WORD(WORD, long int, PMAPS); // WORD
|
||||
PMAPS BaseAddressSearch_BYTE(BYTE, long int, PMAPS); // BYTE
|
||||
PMAPS BaseAddressSearch_QWORD(QWORD, long int, PMAPS); // QWORD
|
||||
|
||||
|
||||
void RangeMemorySearch(char*, char *, int); // range search
|
||||
PMAPS RangeMemorySearch_DWORD(DWORD, DWORD, PMAPS); // DWORD
|
||||
PMAPS RangeMemorySearch_FLOAT(FLOAT, FLOAT, PMAPS); // FLOAT
|
||||
PMAPS RangeMemorySearch_DOUBLE(DOUBLE, DOUBLE, PMAPS); // WORD
|
||||
PMAPS RangeMemorySearch_WORD(WORD, WORD, PMAPS); // WORD
|
||||
PMAPS RangeMemorySearch_BYTE(BYTE, BYTE, PMAPS); // BYTE
|
||||
PMAPS RangeMemorySearch_QWORD(QWORD, QWORD, PMAPS); // QWORD
|
||||
|
||||
void MemorySearch(char*, int); // Type search, where value needs to pass in an address
|
||||
PMAPS MemorySearch_DWORD(DWORD, PMAPS); // Memory Search DWORD
|
||||
PMAPS MemorySearch_FLOAT(FLOAT, PMAPS); // Memory search FLOAT
|
||||
PMAPS MemorySearch_DOUBLE(DOUBLE, PMAPS); // Memory Search DOUBLE
|
||||
PMAPS MemorySearch_WORD(WORD, PMAPS); // Memory Search WORD
|
||||
PMAPS MemorySearch_BYTE(BYTE, PMAPS); // Memory Search BYTE
|
||||
PMAPS MemorySearch_QWORD(QWORD, PMAPS); // Memory Search QWORD
|
||||
|
||||
void MemoryOffset(char *, long int, int ); // search offset
|
||||
PMAPS MemoryOffset_DWORD(DWORD , long int, PMAPS); // search offset DWORD
|
||||
PMAPS MemoryOffset_FLOAT(FLOAT , long int, PMAPS); // search offset FLOAT
|
||||
PMAPS MemoryOffset_DOUBLE(DOUBLE , long int , PMAPS); // search offset DOUBLE
|
||||
PMAPS MemoryOffset_WORD(WORD , long int , PMAPS); // search offset WORD
|
||||
PMAPS MemoryOffset_BYTE(BYTE , long int , PMAPS); // search offset BYTE
|
||||
PMAPS MemoryOffset_QWORD(QWORD , long int, PMAPS); // search offset QWORD
|
||||
|
||||
void RangeMemoryOffset(char *, char *, long int, int); // range offset
|
||||
PMAPS RangeMemoryOffset_DWORD(DWORD, DWORD , long int, PMAPS); // range offset DWORD
|
||||
PMAPS RangeMemoryOffset_FLOAT(FLOAT , FLOAT, long int , PMAPS); // range offset FLOAT
|
||||
PMAPS RangeMemoryOffset_DOUBLE(DOUBLE, DOUBLE, long int, PMAPS); // range offset DOUBLE
|
||||
PMAPS RangeMemoryOffset_WORD(WORD, WORD, long int, PMAPS); // range offset WORD
|
||||
PMAPS RangeMemoryOffset_BYTE(BYTE, BYTE, long int, PMAPS); // range offset BYTE
|
||||
PMAPS RangeMemoryOffset_QWORD(QWORD, QWORD, long int, PMAPS); // range offset QWORD
|
||||
|
||||
void MemoryWrite(char *, long int, int); // memory write
|
||||
int MemoryWrite_DWORD(DWORD, PMAPS, long int); // memory write DWORD
|
||||
int MemoryWrite_FLOAT(FLOAT, PMAPS, long int); // memory write FLOAT
|
||||
int MemoryWrite_DOUBLE(DOUBLE, PMAPS, long int); // memory write DOUBLE
|
||||
int MemoryWrite_WORD(WORD, PMAPS, long int); // memory write WORD
|
||||
int MemoryWrite_BYTE(BYTE, PMAPS, long int); // memory write BYTE
|
||||
int MemoryWrite_QWORD(QWORD, PMAPS, long int); // memory write QWORD
|
||||
|
||||
|
||||
int WriteAddress(long int, char *, int); // Modify the value in the address
|
||||
int WriteAddress_DWORD(ADDRESS, DWORD);
|
||||
int WriteAddress_FLOAT(ADDRESS, FLOAT);
|
||||
int WriteAddress_DOUBLE(ADDRESS, DOUBLE);
|
||||
int WriteAddress_WORD(ADDRESS, WORD);
|
||||
int WriteAddress_BYTE(ADDRESS, BYTE);
|
||||
int WriteAddress_QWORD(ADDRESS, QWORD);
|
||||
|
||||
void PrintResults(); // Print the contents of Res
|
||||
void ClearResults(); // Clear the linked list and free up space
|
||||
void ClearMaps(PMAPS); // Clear maps
|
||||
int GetResultCount(); //Get the number of search results
|
||||
|
||||
int isapkinstalled(char *); // Check if the app is installed
|
||||
int isapkrunning(char *); // Check if the app is running
|
||||
int killprocess(char *); // kill the process
|
||||
char GetProcessState(char *); // Get process state
|
||||
int killGG(); // kill the gg modifier
|
||||
int killXs(); // kill xs
|
||||
int uninstallapk(char *); // silently remove software
|
||||
int installapk(char *); // silently uninstall the software
|
||||
int rebootsystem(); // reboot the system (phone)
|
||||
int PutDate(); // output system date
|
||||
int GetDate(char *); // Get system time
|
||||
|
||||
PMAPS GetResults(); // Get the result, return the head pointer
|
||||
int AddFreezeItem_All(char *, int , long int); // Freeze all results
|
||||
int AddFreezeItem(long int , char *, int , long int); // add frozen data
|
||||
int AddFreezeItem_DWORD(long int , char *); // DWORD
|
||||
int AddFreezeItem_FLOAT(long int, char *); // FLOAT
|
||||
int AddFreezeItem_DOUBLE(long int, char *); // DOUBLE
|
||||
int AddFreezeItem_WORD(long int, char *); // WORD
|
||||
int AddFreezeItem_BYTE(long int, char *); // BYTE
|
||||
int AddFreezeItem_QWORD(long int, char *); // QWORD
|
||||
|
||||
int RemoveFreezeItem(long int); // clear fixed freeze data
|
||||
int RemoveFreezeItem_All(); // clear all frozen data
|
||||
int StartFreeze(); // start freezing
|
||||
int StopFreeze(); // stop freezing
|
||||
int SetFreezeDelay(long int); // set the freeze delay
|
||||
int PrintFreezeItems(); // print the freeze list
|
||||
|
||||
char *GetAddressValue(ADDRESS,int);
|
||||
DWORD GetAddressValue_DWORD(ADDRESS);
|
||||
FLOAT GetAddressValue_FLOAT(ADDRESS);
|
||||
DOUBLE GetAddressValue_DOUBLE(ADDRESS);
|
||||
WORD GetAddressValue_WORD(ADDRESS);
|
||||
BYTE GetAddressValue_BYTE(ADDRESS);
|
||||
QWORD GetAddressValue_QWORD(ADDRESS);
|
||||
|
||||
char *getRightText(char *,char *,int);//Get the right text
|
||||
bool getMask(long int ,char *);//Judgment mask
|
||||
void MaskSearch(char *, int );//Mask search
|
||||
|
||||
bool snowpd(long int);
|
||||
long int GetModuleBase(char *,char * ,int);
|
||||
void FreezeThread();
|
||||
};
|
||||
|
||||
|
||||
|
||||
29
main.cpp
Normal file
29
main.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
#include <iostream>
|
||||
#include "MemoryTools.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
initXMemoryTools(
|
||||
/*process name*/
|
||||
"com.tencent.ig",
|
||||
/*mode root/no root*/
|
||||
MODE_ROOT
|
||||
/*MODE_NO_ROOT - for no root*/
|
||||
);
|
||||
|
||||
/*
|
||||
TYPE_DWORD,
|
||||
TYPE_FLOAT,
|
||||
TYPE_DOUBLE,
|
||||
TYPE_WORD,
|
||||
TYPE_BYTE,
|
||||
TYPE_QWORD,
|
||||
*/
|
||||
|
||||
SetSearchRange(ALL);
|
||||
MemorySearch("1", TYPE_BYTE);
|
||||
MemoryOffset("2", 2,/*offset*/ TYPE_BYTE);
|
||||
MemoryWrite("0", 2,/*offset*/ TYPE_BYTE);
|
||||
ClearResults();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user