initial commits

This commit is contained in:
Abdul Moez 2023-06-02 22:57:24 +05:00 committed by GitHub
parent c7dc3ed7e8
commit 4e9754f8ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 3555 additions and 0 deletions

3294
MemoryTool.cpp Normal file

File diff suppressed because it is too large Load Diff

232
MemoryTool.h Normal file
View 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
View 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;
}