Add build modes and dev hooks, improve injection and docs

Introduces build mode options (rmfakecloud, qmldiff, dev, all) to CMake and build scripts, enabling selective compilation of hooks for cloud redirection, Qt resource hooking, and reverse engineering. Adds new hooks and memory logging for dev mode, updates injection script to handle libzstd.1.dylib dependency, and documents build modes in README.
This commit is contained in:
√(noham)²
2025-11-29 14:34:07 +01:00
parent 18abae42b7
commit 1619fda631
11 changed files with 356 additions and 18 deletions

View File

@@ -103,4 +103,37 @@
}
}
+ (BOOL)hookAddress:(NSString *)imageName
staticAddress:(uintptr_t)staticAddress
hookFunction:(void *)hookFunction
originalFunction:(void **)originalFunction
logPrefix:(NSString *)logPrefix {
NSLogger(@"%@ Starting hook installation at static address: 0x%lx", logPrefix, staticAddress);
int imageIndex = [self indexForImageWithName:imageName];
if (imageIndex < 0) {
NSLogger(@"%@ ERROR: Image %@ not found", logPrefix, imageName);
return NO;
}
// Calculate ASLR slide
intptr_t slide = _dyld_get_image_vmaddr_slide(imageIndex);
NSLogger(@"%@ Image %@ ASLR slide: 0x%lx", logPrefix, imageName, slide);
// Calculate actual runtime address
void *actualAddress = (void *)(staticAddress + slide);
NSLogger(@"%@ Calculated runtime address: %p (static: 0x%lx + slide: 0x%lx)", logPrefix, actualAddress, staticAddress, slide);
int hookResult = tiny_hook(actualAddress, hookFunction, originalFunction);
if (hookResult == 0) {
NSLogger(@"%@ Hook successfully installed at address %p", logPrefix, actualAddress);
return YES;
} else {
NSLogger(@"%@ ERROR: Failed to install hook at address %p (code: %d)", logPrefix, actualAddress, hookResult);
return NO;
}
}
@end