Skip to content

Commit 7c9b0fe

Browse files
authored
Update Macros.h
1 parent ca6ce7b commit 7c9b0fe

1 file changed

Lines changed: 44 additions & 64 deletions

File tree

‎app/src/main/jni/Includes/Macros.h‎

Lines changed: 44 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -6,93 +6,70 @@
66
#include <string>
77
#include <cstdint>
88

9+
// thanks to shmoo and joeyjurjens for the usefull stuff under this comment.
910

10-
#include "Logger.h"
11-
12-
13-
void hook(void *offset, void *ptr, void **orig) {
14-
#if defined(__aarch64__)
15-
A64HookFunction(offset, ptr, orig);
16-
#else
17-
MSHookFunction(offset, ptr, orig);
18-
#endif
19-
}
20-
21-
22-
#if defined(__aarch64__)
23-
11+
#if defined(__aarch64__) //Compile for arm64 lib only
2412
#include <And64InlineHook/And64InlineHook.hpp>
2513

26-
#define HOOK(offset, ptr, orig) \
27-
A64HookFunction((void*)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), \
28-
(void*)ptr, (void**)&orig)
14+
#define HOOK(offset, ptr, orig) A64HookFunction((void *)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), (void *)ptr, (void **)&orig)
15+
#define HOOK_LIB(lib, offset, ptr, orig) A64HookFunction((void *)getAbsoluteAddress(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset))), (void *)ptr, (void **)&orig)
2916

30-
#define HOOK_LIB(lib, offset, ptr, orig) \
31-
A64HookFunction((void*)getAbsoluteAddress(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset))), \
32-
(void*)ptr, (void**)&orig)
17+
#define HOOK_NO_ORIG(offset, ptr) A64HookFunction((void *)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), (void *)ptr, NULL)
18+
#define HOOK_LIB_NO_ORIG(lib, offset, ptr) A64HookFunction((void *)getAbsoluteAddress(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset))), (void *)ptr, NULL)
3319

34-
#define HOOK_NO_ORIG(offset, ptr) \
35-
A64HookFunction((void*)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), \
36-
(void*)ptr, nullptr)
20+
#define HOOKSYM(sym, ptr, org) A64HookFunction(dlsym(dlopen(targetLibName, 4), OBFUSCATE(sym)), (void *)ptr, (void **)&org)
21+
#define HOOKSYM_LIB(lib, sym, ptr, org) A64HookFunction(dlsym(dlopen(OBFUSCATE(lib), 4), OBFUSCATE(sym)), (void *)ptr, (void **)&org)
3722

38-
#define HOOKSYM(sym, ptr, orig) \
39-
A64HookFunction(dlsym(dlopen(targetLibName, RTLD_NOW), OBFUSCATE(sym)), \
40-
(void*)ptr, (void**)&orig)
23+
#define HOOKSYM_NO_ORIG(sym, ptr) A64HookFunction(dlsym(dlopen(targetLibName, 4), OBFUSCATE(sym)), (void *)ptr, NULL)
24+
#define HOOKSYM_LIB_NO_ORIG(lib, sym, ptr) A64HookFunction(dlsym(dlopen(OBFUSCATE(lib), 4), OBFUSCATE(sym)), (void *)ptr, NULL)
4125

42-
#define HOOKSYM_NO_ORIG(sym, ptr) \
43-
A64HookFunction(dlsym(dlopen(targetLibName, RTLD_NOW), OBFUSCATE(sym)), \
44-
(void*)ptr, nullptr)
26+
#else //Compile for armv7 lib only. Do not worry about greyed out highlighting code, it still works
4527

46-
#else
4728
#include <Substrate/SubstrateHook.h>
4829
#include <Substrate/CydiaSubstrate.h>
4930

50-
#define HOOK(offset, ptr, orig) \
51-
MSHookFunction((void*)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), \
52-
(void*)ptr, (void**)&orig)
53-
54-
#define HOOK_LIB(lib, offset, ptr, orig) \
55-
MSHookFunction((void*)getAbsoluteAddress(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset))), \
56-
(void*)ptr, (void**)&orig)
31+
#define HOOK(offset, ptr, orig) MSHookFunction((void *)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), (void *)ptr, (void **)&orig)
32+
#define HOOK_LIB(lib, offset, ptr, orig) MSHookFunction((void *)getAbsoluteAddress(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset))), (void *)ptr, (void **)&orig)
5733

58-
#define HOOK_NO_ORIG(offset, ptr) \
59-
MSHookFunction((void*)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), \
60-
(void*)ptr, nullptr)
34+
#define HOOK_NO_ORIG(offset, ptr) MSHookFunction((void *)getAbsoluteAddress(targetLibName, string2Offset(OBFUSCATE(offset))), (void *)ptr, NULL)
35+
#define HOOK_LIB_NO_ORIG(lib, offset, ptr) MSHookFunction((void *)getAbsoluteAddress(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset))), (void *)ptr, NULL)
6136

62-
#define HOOKSYM(sym, ptr, orig) \
63-
MSHookFunction(dlsym(dlopen(targetLibName, RTLD_NOW), OBFUSCATE(sym)), \
64-
(void*)ptr, (void**)&orig)
37+
#define HOOKSYM(sym, ptr, org) MSHookFunction(dlsym(dlopen(targetLibName, 4), OBFUSCATE(sym)), (void *)ptr, (void **)&org)
38+
#define HOOKSYM_LIB(lib, sym, ptr, org) MSHookFunction(dlsym(dlopen(OBFUSCATE(lib), 4), OBFUSCATE(sym)), (void *)ptr, (void **)&org)
6539

66-
#define HOOKSYM_NO_ORIG(sym, ptr) \
67-
MSHookFunction(dlsym(dlopen(targetLibName, RTLD_NOW), OBFUSCATE(sym)), \
68-
(void*)ptr, nullptr)
40+
#define HOOKSYM_NO_ORIG(sym, ptr) MSHookFunction(dlsym(dlopen(targetLibName, 4), OBFUSCATE(sym)), (void *)ptr, NULL)
41+
#define HOOKSYM_LIB_NO_ORIG(lib, sym, ptr) MSHookFunction(dlsym(dlopen(OBFUSCATE(lib), 4), OBFUSCATE(sym)), (void *)ptr, NULL)
6942

7043
#endif
7144

45+
// Obfuscate offset
46+
#define OBFUSCATEOFFSET(str) string2Offset(OBFUSCATE(str)) // Encrypt offset
7247

73-
#define OBFUSCATEOFFSET(str) string2Offset(OBFUSCATE(str))
74-
75-
76-
inline void patchOffset(const char *lib, uint64_t offset, const std::string &hex) {
77-
MemoryPatch patch = MemoryPatch::createWithHex(lib, offset, hex);
78-
if (!patch.isValid()) {
79-
LOGE("Invalid patch offset: 0x%llX", offset);
48+
// Patching a offset without switch.
49+
void patchOffset(const char *fileName, uint64_t offset, std::string hexBytes) {
50+
MemoryPatch patch = MemoryPatch::createWithHex(fileName, offset, hexBytes);
51+
if(!patch.isValid()){
52+
LOGE(OBFUSCATE("Failing offset: 0x%llu, please re-check the hex you entered."), offset);
53+
return;
54+
}
55+
if(!patch.Modify()) {
56+
LOGE(OBFUSCATE("Something went wrong while patching this offset: 0x%llu"), offset);
8057
return;
8158
}
82-
patch.Modify();
8359
}
8460

85-
inline void patchOffset(uint64_t offset, const std::string &hex) {
86-
patchOffset(targetLibName, offset, hex);
61+
void patchOffset(uint64_t offset, std::string hexBytes) {
62+
MemoryPatch patch = MemoryPatch::createWithHex(targetLibName, offset, hexBytes);
63+
if(!patch.isValid()){
64+
LOGE(OBFUSCATE("Failing offset: 0x%llu, please re-check the hex you entered."), offset);
65+
return;
66+
}
67+
if(!patch.Modify()) {
68+
LOGE(OBFUSCATE("Something went wrong while patching this offset: 0x%llu"), offset);
69+
return;
70+
}
8771
}
8872

89-
#define PATCHOFFSET(offset, hex) \
90-
patchOffset(string2Offset(OBFUSCATE(offset)), OBFUSCATE(hex))
91-
92-
#define PATCHOFFSET_LIB(lib, offset, hex) \
93-
patchOffset(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset)), OBFUSCATE(hex))
94-
95-
9673
inline void patchOffsetSym(uintptr_t addr,
9774
const std::string &hex,
9875
bool enable) {
@@ -121,6 +98,8 @@ inline void patchOffsetSym(uintptr_t addr,
12198
}
12299
}
123100

101+
#define PATCHOFFSET(offset, hex) patchOffset(string2Offset(OBFUSCATE(offset)), OBFUSCATE(hex))
102+
#define PATCHOFFSET_LIB(lib, offset, hex) patchOffset(OBFUSCATE(lib), string2Offset(OBFUSCATE(offset)), OBFUSCATE(hex))
124103

125104
#define PATCH_SYM_SWITCH(sym, hex, state) \
126105
patchOffsetSym((uintptr_t)dlsym(dlopen(targetLibName, RTLD_NOW), OBFUSCATE(sym)), \
@@ -129,5 +108,6 @@ patchOffsetSym((uintptr_t)dlsym(dlopen(targetLibName, RTLD_NOW), OBFUSCATE(sym))
129108
#define PATCH_LIB_SYM_SWITCH(lib, sym, hex, state) \
130109
patchOffsetSym((uintptr_t)dlsym(dlopen(OBFUSCATE(lib), RTLD_NOW), OBFUSCATE(sym)), \
131110
OBFUSCATE(hex), state)
111+
112+
#endif //ANDROID_MOD_MENU_MACROS_H
132113

133-
#endif // ANDROID_MOD_MENU_MACROS_H

0 commit comments

Comments
 (0)