ARM V7:
#include <jni.h>
//#include <android/log.h>
#include "libs/KittyMemory/MemoryPatch.h"
#include <libs/Substrate/CydiaSubstrate.h>
#include <memory.h>
#include <dlfcn.h>
#include <cstdio>
#include <cstdlib>
#import "include/Utils.h"
//Struct for patches
struct My_Patches {
MemoryPatch AddCoin, AddDiamond;
} my_cool_Patches;
int (*old_coin)(void *instance);
int (coin)(void *instance) {
if(instance!=NULL) {
return 999999;
}
return old_coin(instance);
}
int (*old_diamond)(void *instance);
int diamond(void *instance) {
if(instance!=NULL) {
return 9999;
}
return old_diamond(instance);
}
__attribute__((constructor))
void libhook_main() {
while(libBase == 0) {
libBase = get_libBase(libName);
sleep(1);
}
//KittyMemory patch example.
my_cool_Patches.AddCoin = MemoryPatch(libName, 0xC9C448, "\x3f\x12\x04\xe3\x0f\x10\x40\xe3", 8);
my_cool_Patches.AddCoin.Modify();
my_cool_Patches.AddDiamond = MemoryPatch(libName, 0xC9C4F4, "\x0f\x17\x02\xe3", 4);
my_cool_Patches.AddDiamond.Modify();
//Usual Hook example.
MSHookFunction((void *)getRealOffset(0xC9A8DC), (void *)coin, (void **) &old_coin);
MSHookFunction((void *)getRealOffset(0xC9AB98), (void *)diamond, (void **) &old_diamond);
}
------------------------------------------------------------------------------------------------------------
And For ARM V8:
Just Edit This Code :
From This:
MSHookFunction((void *)getRealOffset(0xC9A8DC), (void *)coin, (void **) &old_coin);
MSHookFunction((void *)getRealOffset(0xC9AB98), (void *)diamond, (void **) &old_diamond);
To THis:
A64HookFunction((void *)getRealOffset(0xEE218DC), (void *)coin, (void **) &old_coin);
A64HookFunction((void *)getRealOffset(0xEE21A98), (void *)diamond, (void **) &old_diamond);
I Write For You which one Arm V7 & which one Arm V8
And They Are not have change just a latest lines
❤❤❤❤❤❤