Open Source & JB-free mods for Geometry Dash
- Compile auby or get very very very outdated dylib from releases
- Get 2.206 decrypted IPA
- Inject auby and sideload IPA (the easiest way is to use sideloadly)
- Rewrite in Rust
- Rewrite patcher in normal language
- Load mod with dlopen
- Geode support
How Hooks Work
gdFunc:mov x11, x30 ; backup original link registerbl trampolinetrampoline: ldr x9, =0x2lsl x9, x9, #32 ldr x10, =0x80000000 orr x9, x9, x10 ldr x9,[x9] br x9 ; jump to 0x280000000void *findTheHook() {
void *target;
asm("mov %[t], x16" : [t] "=r"(target));
// now target contains [base + offset]
}
__attribute__((naked)) void findTheHookProxy() {
asmvolatile("mov x12, x0\n"// backup args"mov x13, x1\n""mov x14, x2\n""mov x15, x3\n""mov x17, x4\n""sub x30, x30, 8\n""mov x16, x30\n""bl %[findTheHook]\n"// find the hook"mov x30, x11\n"// restore x30 (fix ret)"mov x9, x0\n"// restore args"mov x0, x12\n""mov x1, x13\n""mov x2, x14\n""mov x3, x15\n""mov x4, x17\n""br x9\n" ::[findTheHook] "i"(findTheHook));
}
voidinit() {
*((void**)0x280000000) = (void*)&findTheHookProxy;
}Auby is free software licensed under the GPL-3.0