├── .DS_Store ├── .gitignore ├── AndroidRunCpp ├── .gitignore ├── CMakeLists.txt ├── build.sh └── main.cpp ├── ELFReader ├── CMakeLists.txt ├── _elf.h ├── elf.h ├── main.cpp └── readme.md ├── README ├── _hook ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ ├── com │ │ └── hook │ │ │ └── ExampleInstrumentedTest.java │ │ └── thouger │ │ └── hook │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── CMakeLists.txt │ ├── assets │ │ ├── native_init │ │ └── xposed_init │ ├── cpp │ │ ├── CMakeLists.txt │ │ ├── hello │ │ │ ├── CMakeLists.txt │ │ │ └── hello.cpp │ │ ├── logging.h │ │ ├── native-lib.cpp │ │ ├── native_hook │ │ │ ├── CMakeLists.txt │ │ │ ├── native_hook.cpp │ │ │ └── native_hook.h │ │ └── other │ │ │ ├── CMakeLists.txt │ │ │ └── other.cpp │ ├── java │ │ ├── com │ │ │ └── hook │ │ │ │ ├── MainActivity.java │ │ │ │ ├── hook.java │ │ │ │ ├── hook_aaid.java │ │ │ │ └── hook_java.java │ │ └── thouger │ │ │ └── hook │ │ │ ├── MainActivity.kt │ │ │ ├── hook.kt │ │ │ ├── hook_aaid.java │ │ │ ├── hook_copy.kt │ │ │ └── hook_java.java │ └── res │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── values-night │ │ └── themes.xml │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ ├── com │ └── hook │ │ └── ExampleUnitTest.java │ └── thouger │ └── hook │ └── ExampleUnitTest.kt ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro ├── rs │ ├── Cargo.lock │ ├── Cargo.toml │ ├── build_rs.bat │ ├── build_rs.sh │ └── src │ │ └── lib.rs └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── android │ │ └── ExampleInstrumentedTest.java │ ├── libs │ ├── x86 │ │ ├── libdobby.a │ │ └── libdobby.so │ └── x86_64 │ │ ├── libdobby.a │ │ └── libdobby.so │ ├── main │ ├── AndroidManifest.xml │ ├── CMakeLists.txt │ ├── cpp │ │ ├── CMakeLists.txt │ │ ├── Dobby │ │ │ ├── .clang-format │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── README_zh-cn.md │ │ │ ├── auto-build.sh │ │ │ ├── builtin-plugin │ │ │ │ ├── ApplicationEventMonitor │ │ │ │ │ ├── MGCopyAnswerMonitor.cc │ │ │ │ │ ├── dobby_monitor.h │ │ │ │ │ ├── dynamic_loader_monitor.cc │ │ │ │ │ ├── file_operation_monitor.cc │ │ │ │ │ ├── memory_operation_instrument.cc │ │ │ │ │ ├── posix_file_descriptor_operation_monitor.cc │ │ │ │ │ └── posix_socket_network_monitor.cc │ │ │ │ ├── BionicLinkerRestriction │ │ │ │ │ ├── bionic_linker_restriction.cc │ │ │ │ │ ├── bionic_linker_restriction.h │ │ │ │ │ └── linker_restriction_demo.cc │ │ │ │ ├── Dyld2HideLibrary │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── dyld2_hide_library.cc │ │ │ │ │ └── dyld2_hide_library.h │ │ │ │ ├── GlobalOffsetTableHook │ │ │ │ │ ├── global_offset_table_hook.cc │ │ │ │ │ └── global_offset_table_hook.h │ │ │ │ ├── HideSystemCall │ │ │ │ │ ├── syscall.darwin.s │ │ │ │ │ └── syscall.linux.s │ │ │ │ ├── LinkerImageLoadCallback │ │ │ │ │ └── linker_load_callback.cc │ │ │ │ ├── MemoryRemapHook │ │ │ │ │ └── runtime_sdk.cc │ │ │ │ ├── ObjcRuntimeHook │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── objc_runtime_hook.h │ │ │ │ │ └── objc_runtime_hook.mm │ │ │ │ ├── SupervisorCallMonitor │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── XnuInternal │ │ │ │ │ │ ├── README │ │ │ │ │ │ ├── mach │ │ │ │ │ │ │ ├── audit_triggers.defs │ │ │ │ │ │ │ ├── boolean.h │ │ │ │ │ │ │ ├── bootstrap.h │ │ │ │ │ │ │ ├── clock.defs │ │ │ │ │ │ │ ├── clock.h │ │ │ │ │ │ │ ├── clock_priv.defs │ │ │ │ │ │ │ ├── clock_priv.h │ │ │ │ │ │ │ ├── clock_reply.defs │ │ │ │ │ │ │ ├── clock_reply.h │ │ │ │ │ │ │ ├── clock_types.defs │ │ │ │ │ │ │ ├── clock_types.h │ │ │ │ │ │ │ ├── dyld_kernel.h │ │ │ │ │ │ │ ├── error.h │ │ │ │ │ │ │ ├── exc.defs │ │ │ │ │ │ │ ├── exc.h │ │ │ │ │ │ │ ├── exception.h │ │ │ │ │ │ │ ├── exception_types.h │ │ │ │ │ │ │ ├── host_info.h │ │ │ │ │ │ │ ├── host_notify.h │ │ │ │ │ │ │ ├── host_notify_reply.defs │ │ │ │ │ │ │ ├── host_priv.defs │ │ │ │ │ │ │ ├── host_priv.h │ │ │ │ │ │ │ ├── host_reboot.h │ │ │ │ │ │ │ ├── host_security.defs │ │ │ │ │ │ │ ├── host_security.h │ │ │ │ │ │ │ ├── host_special_ports.h │ │ │ │ │ │ │ ├── i386 │ │ │ │ │ │ │ │ ├── _structs.h │ │ │ │ │ │ │ │ ├── asm.h │ │ │ │ │ │ │ │ ├── boolean.h │ │ │ │ │ │ │ │ ├── exception.h │ │ │ │ │ │ │ │ ├── fp_reg.h │ │ │ │ │ │ │ │ ├── kern_return.h │ │ │ │ │ │ │ │ ├── ndr_def.h │ │ │ │ │ │ │ │ ├── processor_info.h │ │ │ │ │ │ │ │ ├── rpc.h │ │ │ │ │ │ │ │ ├── sdt_isa.h │ │ │ │ │ │ │ │ ├── thread_state.h │ │ │ │ │ │ │ │ ├── thread_status.h │ │ │ │ │ │ │ │ ├── vm_param.h │ │ │ │ │ │ │ │ └── vm_types.h │ │ │ │ │ │ │ ├── kern_return.h │ │ │ │ │ │ │ ├── kmod.h │ │ │ │ │ │ │ ├── lock_set.defs │ │ │ │ │ │ │ ├── lock_set.h │ │ │ │ │ │ │ ├── mach.h │ │ │ │ │ │ │ ├── mach_error.h │ │ │ │ │ │ │ ├── mach_exc.defs │ │ │ │ │ │ │ ├── mach_host.defs │ │ │ │ │ │ │ ├── mach_host.h │ │ │ │ │ │ │ ├── mach_init.h │ │ │ │ │ │ │ ├── mach_interface.h │ │ │ │ │ │ │ ├── mach_param.h │ │ │ │ │ │ │ ├── mach_port.defs │ │ │ │ │ │ │ ├── mach_port.h │ │ │ │ │ │ │ ├── mach_right.h │ │ │ │ │ │ │ ├── mach_syscalls.h │ │ │ │ │ │ │ ├── mach_time.h │ │ │ │ │ │ │ ├── mach_traps.h │ │ │ │ │ │ │ ├── mach_types.defs │ │ │ │ │ │ │ ├── mach_types.h │ │ │ │ │ │ │ ├── mach_vm.defs │ │ │ │ │ │ │ ├── mach_vm.h │ │ │ │ │ │ │ ├── mach_voucher.defs │ │ │ │ │ │ │ ├── mach_voucher.h │ │ │ │ │ │ │ ├── mach_voucher_attr_control.defs │ │ │ │ │ │ │ ├── mach_voucher_types.h │ │ │ │ │ │ │ ├── machine.h │ │ │ │ │ │ │ ├── machine │ │ │ │ │ │ │ │ ├── _structs.h │ │ │ │ │ │ │ │ ├── asm.h │ │ │ │ │ │ │ │ ├── boolean.h │ │ │ │ │ │ │ │ ├── exception.h │ │ │ │ │ │ │ │ ├── kern_return.h │ │ │ │ │ │ │ │ ├── machine_types.defs │ │ │ │ │ │ │ │ ├── ndr_def.h │ │ │ │ │ │ │ │ ├── processor_info.h │ │ │ │ │ │ │ │ ├── rpc.h │ │ │ │ │ │ │ │ ├── sdt.h │ │ │ │ │ │ │ │ ├── sdt_isa.h │ │ │ │ │ │ │ │ ├── thread_state.h │ │ │ │ │ │ │ │ ├── thread_status.h │ │ │ │ │ │ │ │ ├── vm_param.h │ │ │ │ │ │ │ │ └── vm_types.h │ │ │ │ │ │ │ ├── memory_entry.defs │ │ │ │ │ │ │ ├── memory_entry.h │ │ │ │ │ │ │ ├── memory_object_types.h │ │ │ │ │ │ │ ├── message.h │ │ │ │ │ │ │ ├── mig.h │ │ │ │ │ │ │ ├── mig_errors.h │ │ │ │ │ │ │ ├── mig_strncpy_zerofill_support.h │ │ │ │ │ │ │ ├── mig_voucher_support.h │ │ │ │ │ │ │ ├── ndr.h │ │ │ │ │ │ │ ├── notify.defs │ │ │ │ │ │ │ ├── notify.h │ │ │ │ │ │ │ ├── policy.h │ │ │ │ │ │ │ ├── port.h │ │ │ │ │ │ │ ├── port_obj.h │ │ │ │ │ │ │ ├── processor.defs │ │ │ │ │ │ │ ├── processor.h │ │ │ │ │ │ │ ├── processor_info.h │ │ │ │ │ │ │ ├── processor_set.defs │ │ │ │ │ │ │ ├── processor_set.h │ │ │ │ │ │ │ ├── rpc.h │ │ │ │ │ │ │ ├── sdt.h │ │ │ │ │ │ │ ├── semaphore.h │ │ │ │ │ │ │ ├── shared_memory_server.h │ │ │ │ │ │ │ ├── shared_region.h │ │ │ │ │ │ │ ├── std_types.defs │ │ │ │ │ │ │ ├── std_types.h │ │ │ │ │ │ │ ├── sync.h │ │ │ │ │ │ │ ├── sync_policy.h │ │ │ │ │ │ │ ├── task.defs │ │ │ │ │ │ │ ├── task.h │ │ │ │ │ │ │ ├── task_access.defs │ │ │ │ │ │ │ ├── task_info.h │ │ │ │ │ │ │ ├── task_inspect.h │ │ │ │ │ │ │ ├── task_policy.h │ │ │ │ │ │ │ ├── task_special_ports.h │ │ │ │ │ │ │ ├── telemetry_notification.defs │ │ │ │ │ │ │ ├── thread_act.defs │ │ │ │ │ │ │ ├── thread_act.h │ │ │ │ │ │ │ ├── thread_info.h │ │ │ │ │ │ │ ├── thread_policy.h │ │ │ │ │ │ │ ├── thread_special_ports.h │ │ │ │ │ │ │ ├── thread_state.h │ │ │ │ │ │ │ ├── thread_status.h │ │ │ │ │ │ │ ├── thread_switch.h │ │ │ │ │ │ │ ├── time_value.h │ │ │ │ │ │ │ ├── vm_attributes.h │ │ │ │ │ │ │ ├── vm_behavior.h │ │ │ │ │ │ │ ├── vm_inherit.h │ │ │ │ │ │ │ ├── vm_map.defs │ │ │ │ │ │ │ ├── vm_map.h │ │ │ │ │ │ │ ├── vm_page_size.h │ │ │ │ │ │ │ ├── vm_param.h │ │ │ │ │ │ │ ├── vm_prot.h │ │ │ │ │ │ │ ├── vm_purgable.h │ │ │ │ │ │ │ ├── vm_region.h │ │ │ │ │ │ │ ├── vm_statistics.h │ │ │ │ │ │ │ ├── vm_sync.h │ │ │ │ │ │ │ ├── vm_task.h │ │ │ │ │ │ │ └── vm_types.h │ │ │ │ │ │ ├── syscall_sw.c │ │ │ │ │ │ └── syscalls.c │ │ │ │ │ ├── deprecated │ │ │ │ │ │ ├── mach_system_call.cc │ │ │ │ │ │ └── system_call.cc │ │ │ │ │ ├── mach_system_call_log_handler.cc │ │ │ │ │ ├── misc_utility.cc │ │ │ │ │ ├── misc_utility.h │ │ │ │ │ ├── sensitive_api_monitor.cc │ │ │ │ │ ├── supervisor_call_monitor.cc │ │ │ │ │ ├── supervisor_call_monitor.h │ │ │ │ │ ├── system_call_log_handler.cc │ │ │ │ │ └── test_supervisor_call_monitor.cc │ │ │ │ └── SymbolResolver │ │ │ │ │ ├── dobby_symbol_resolver.h │ │ │ │ │ ├── elf │ │ │ │ │ └── dobby_symbol_resolver.cc │ │ │ │ │ └── macho │ │ │ │ │ ├── dobby_symbol_resolver.cc │ │ │ │ │ ├── dyld_shared_cache_symbol_table_iterator.cc │ │ │ │ │ ├── shared-cache │ │ │ │ │ └── dyld_cache_format.h │ │ │ │ │ └── shared_cache_internal.h │ │ │ ├── cmake │ │ │ │ ├── AutoFiles.cmake │ │ │ │ ├── Globals.cmake │ │ │ │ ├── Macros.cmake │ │ │ │ ├── Util.cmake │ │ │ │ ├── XcodeGenerator.cmake │ │ │ │ ├── dobby.xcode.source.cmake │ │ │ │ └── ios.toolchain.cmake │ │ │ ├── docs │ │ │ │ ├── .nojekyll │ │ │ │ ├── CNAME │ │ │ │ ├── _cover_page.md │ │ │ │ ├── _nav_bar.md │ │ │ │ ├── _side_bar.md │ │ │ │ ├── build-documentation.md │ │ │ │ ├── get-started-android.md │ │ │ │ ├── get-started-ios.md │ │ │ │ ├── get-started.md │ │ │ │ ├── images │ │ │ │ │ └── vue-logo.png │ │ │ │ ├── index.html │ │ │ │ ├── intro-board.md │ │ │ │ ├── scripts │ │ │ │ │ ├── imagesloaded.pkgd.min.js │ │ │ │ │ ├── palettify.min.js │ │ │ │ │ └── palettify.styles.min.js │ │ │ │ └── styles │ │ │ │ │ ├── grid.min.css │ │ │ │ │ ├── palettify.min.css │ │ │ │ │ └── style.css │ │ │ ├── example │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── android_common_api.cc │ │ │ │ ├── darwin_common_api.cc │ │ │ │ └── main.cc │ │ │ ├── external │ │ │ │ ├── external_helper │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── async_logger.cc │ │ │ │ │ ├── async_logger.h │ │ │ │ │ ├── variable_cache.c │ │ │ │ │ └── variable_cache.h │ │ │ │ ├── logging │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── cxxlogging.cc │ │ │ │ │ ├── logging.c │ │ │ │ │ └── logging │ │ │ │ │ │ ├── check_logging.h │ │ │ │ │ │ ├── cxxlogging.h │ │ │ │ │ │ └── logging.h │ │ │ │ └── xnucxx │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── LiteCollection.cc │ │ │ │ │ ├── LiteIterator.cc │ │ │ │ │ ├── LiteMemOpt.cc │ │ │ │ │ ├── LiteMutableArray.cc │ │ │ │ │ ├── LiteMutableBuffer.cc │ │ │ │ │ ├── LiteObject.cc │ │ │ │ │ └── xnucxx │ │ │ │ │ ├── LiteCollection.h │ │ │ │ │ ├── LiteIterator.h │ │ │ │ │ ├── LiteMemOpt.h │ │ │ │ │ ├── LiteMutableArray.h │ │ │ │ │ ├── LiteMutableBuffer.h │ │ │ │ │ └── LiteObject.h │ │ │ ├── include │ │ │ │ └── dobby.h │ │ │ ├── source │ │ │ │ ├── InstructionRelocation │ │ │ │ │ ├── arm │ │ │ │ │ │ ├── ARMInstructionRelocation.cc │ │ │ │ │ │ └── ARMInstructionRelocation.h │ │ │ │ │ ├── arm64 │ │ │ │ │ │ ├── ARM64InstructionRelocation.cc │ │ │ │ │ │ ├── ARM64InstructionRelocation.h │ │ │ │ │ │ └── ARM64PCLiteralInstructionTable.h │ │ │ │ │ ├── x64 │ │ │ │ │ │ ├── X64InstructionRelocation.cc │ │ │ │ │ │ └── X64InstructionRelocation.h │ │ │ │ │ └── x86 │ │ │ │ │ │ ├── X86InstructionRelocation.cc │ │ │ │ │ │ ├── X86InstructionRelocation.h │ │ │ │ │ │ ├── deprecated │ │ │ │ │ │ ├── Ia32Disassembler.cc │ │ │ │ │ │ ├── X86OpcodoDecodeTable.cc │ │ │ │ │ │ └── X86OpcodoDecodeTable.h │ │ │ │ │ │ └── x86_insn_decode │ │ │ │ │ │ ├── build_config.h │ │ │ │ │ │ ├── x86_insn_decode.c │ │ │ │ │ │ ├── x86_insn_decode.h │ │ │ │ │ │ ├── x86_insn_reader.c │ │ │ │ │ │ ├── x86_opcode_modrm_reg_group.c │ │ │ │ │ │ ├── x86_opcode_one_byte.c │ │ │ │ │ │ ├── x86_opcode_sse_group.c │ │ │ │ │ │ └── x86_opcode_two_byte.c │ │ │ │ ├── InterceptRouting │ │ │ │ │ ├── ExtraInternalPlugin │ │ │ │ │ │ ├── IntegrityReadCallback.cc │ │ │ │ │ │ ├── IntegrityReadCallback.h │ │ │ │ │ │ ├── NearBranchTrampoline │ │ │ │ │ │ │ ├── NeaBranchTrampoline.cc │ │ │ │ │ │ │ └── NearBranchTrampoline.h │ │ │ │ │ │ ├── RegisterPlugin.cc │ │ │ │ │ │ └── RegisterPlugin.h │ │ │ │ │ ├── InterceptRouting.cpp │ │ │ │ │ ├── InterceptRouting.h │ │ │ │ │ └── RoutingPlugin │ │ │ │ │ │ ├── DynamicBinaryInstrument │ │ │ │ │ │ ├── DynamicBinaryInstrumentExport.cc │ │ │ │ │ │ ├── dynamic-binary-instrument.cc │ │ │ │ │ │ ├── dynamic-binary-instrument.h │ │ │ │ │ │ ├── intercept_routing_handler.cc │ │ │ │ │ │ └── intercept_routing_handler.h │ │ │ │ │ │ ├── FunctionInlineReplace │ │ │ │ │ │ ├── FunctionInlineReplaceExport.cc │ │ │ │ │ │ ├── function-inline-replace.cc │ │ │ │ │ │ └── function-inline-replace.h │ │ │ │ │ │ └── FunctionWrapper │ │ │ │ │ │ ├── FunctionWrapperExport.cc │ │ │ │ │ │ ├── function-wrapper.cc │ │ │ │ │ │ ├── function-wrapper.h │ │ │ │ │ │ ├── intercept_routing_handler.cc │ │ │ │ │ │ └── intercept_routing_handler.h │ │ │ │ ├── Interceptor.cpp │ │ │ │ ├── Interceptor.h │ │ │ │ ├── MemoryAllocator │ │ │ │ │ ├── AssemblyCodeBuilder.cc │ │ │ │ │ ├── AssemblyCodeBuilder.h │ │ │ │ │ ├── CodeBuffer │ │ │ │ │ │ ├── CodeBufferBase.cc │ │ │ │ │ │ ├── CodeBufferBase.h │ │ │ │ │ │ ├── code-buffer-arm.cc │ │ │ │ │ │ ├── code-buffer-arm.h │ │ │ │ │ │ ├── code-buffer-arm64.cc │ │ │ │ │ │ ├── code-buffer-arm64.h │ │ │ │ │ │ ├── code-buffer-x64.cc │ │ │ │ │ │ ├── code-buffer-x64.h │ │ │ │ │ │ ├── code-buffer-x86.cc │ │ │ │ │ │ └── code-buffer-x86.h │ │ │ │ │ ├── MemoryArena.cc │ │ │ │ │ ├── MemoryArena.h │ │ │ │ │ ├── NearMemoryArena.cc │ │ │ │ │ └── NearMemoryArena.h │ │ │ │ ├── PlatformUnifiedInterface │ │ │ │ │ ├── ExecMemory │ │ │ │ │ │ ├── ClearCacheTool.h │ │ │ │ │ │ └── CodePatchTool.h │ │ │ │ │ └── StdMemory.h │ │ │ │ ├── TrampolineBridge │ │ │ │ │ ├── ClosureTrampolineBridge │ │ │ │ │ │ ├── AssemblyClosureTrampoline.h │ │ │ │ │ │ ├── arm │ │ │ │ │ │ │ ├── ARMAssemblyClosureTrampoline.cc │ │ │ │ │ │ │ ├── closure-bridge-arm.cc │ │ │ │ │ │ │ ├── dummy │ │ │ │ │ │ │ │ ├── closure-bridge-template-arm.cc │ │ │ │ │ │ │ │ └── closure-trampoline-template-arm.S │ │ │ │ │ │ │ └── helper-arm.cc │ │ │ │ │ │ ├── arm64 │ │ │ │ │ │ │ ├── ARM64AssemblyClosureTrampoline.cc │ │ │ │ │ │ │ ├── closure-bridge-arm64.cc │ │ │ │ │ │ │ ├── dummy │ │ │ │ │ │ │ │ ├── closure-bridge-template-arm64.c │ │ │ │ │ │ │ │ ├── closure-trampoline-template-arm64.S │ │ │ │ │ │ │ │ └── dynamic-closure-trampoline-template-arm64.S │ │ │ │ │ │ │ └── helper-arm64.cc │ │ │ │ │ │ ├── closure-trampoline-common-handler.cc │ │ │ │ │ │ ├── closure-trampoline-common-handler.h │ │ │ │ │ │ ├── x64 │ │ │ │ │ │ │ ├── X64AssemblyClosureTrampoline.cc │ │ │ │ │ │ │ ├── closure-bridge-x64.cc │ │ │ │ │ │ │ ├── dummy │ │ │ │ │ │ │ │ ├── closure-bridge-template-x64.c │ │ │ │ │ │ │ │ └── closure-trampoline-template-x64.S │ │ │ │ │ │ │ └── helper-x64.cc │ │ │ │ │ │ └── x86 │ │ │ │ │ │ │ ├── X86AssemblyClosureTrampoline.cc │ │ │ │ │ │ │ ├── closure-bridge-x86.cc │ │ │ │ │ │ │ └── helper-x86.cc │ │ │ │ │ └── InterceptRoutingTrampoline │ │ │ │ │ │ ├── arm │ │ │ │ │ │ └── trampoline-arm.cc │ │ │ │ │ │ ├── arm64 │ │ │ │ │ │ └── trampoline-arm64.cc │ │ │ │ │ │ ├── x64 │ │ │ │ │ │ └── trampoline-x64.cc │ │ │ │ │ │ └── x86 │ │ │ │ │ │ └── trampoline-x86.cc │ │ │ │ ├── UserMode │ │ │ │ │ ├── ExecMemory │ │ │ │ │ │ ├── clear-cache-tool-all.cc │ │ │ │ │ │ ├── clear-cache-tool │ │ │ │ │ │ │ ├── clear-cache-tool-arm-dummy.cc │ │ │ │ │ │ │ └── clear-cache-tool-arm64-dummy.cc │ │ │ │ │ │ ├── code-patch-tool-darwin.cc │ │ │ │ │ │ ├── code-patch-tool-posix.cc │ │ │ │ │ │ ├── code-patch-tool-windows.cc │ │ │ │ │ │ └── substrated │ │ │ │ │ │ │ ├── include │ │ │ │ │ │ │ ├── bootstrap.h │ │ │ │ │ │ │ └── xpc │ │ │ │ │ │ │ │ └── base.h │ │ │ │ │ │ │ └── mach_interface_support │ │ │ │ │ │ │ ├── substrated.defs │ │ │ │ │ │ │ ├── substrated_client.c │ │ │ │ │ │ │ ├── substrated_client.h │ │ │ │ │ │ │ ├── substrated_server.c │ │ │ │ │ │ │ └── substrated_server.h │ │ │ │ │ ├── MultiThreadSupport │ │ │ │ │ │ ├── ThreadSupport.cpp │ │ │ │ │ │ └── ThreadSupport.h │ │ │ │ │ ├── PlatformUtil │ │ │ │ │ │ ├── Darwin │ │ │ │ │ │ │ └── ProcesssRuntimeUtility.cc │ │ │ │ │ │ ├── Linux │ │ │ │ │ │ │ └── ProcesssRuntimeUtility.cc │ │ │ │ │ │ ├── ProcessRuntimeUtility.h │ │ │ │ │ │ └── Windows │ │ │ │ │ │ │ └── ProcesssRuntimeUtility.cc │ │ │ │ │ ├── Thread │ │ │ │ │ │ ├── PlatformThread.cc │ │ │ │ │ │ ├── PlatformThread.h │ │ │ │ │ │ ├── platform-thread-posix.cc │ │ │ │ │ │ └── platform-thread-windows.cc │ │ │ │ │ └── UnifiedInterface │ │ │ │ │ │ ├── platform-darwin │ │ │ │ │ │ └── mach_vm.h │ │ │ │ │ │ ├── platform-posix.cc │ │ │ │ │ │ ├── platform-windows.cc │ │ │ │ │ │ ├── platform.h │ │ │ │ │ │ ├── semaphore.cc │ │ │ │ │ │ └── semaphore.h │ │ │ │ ├── common │ │ │ │ │ ├── headers │ │ │ │ │ │ └── common_header.h │ │ │ │ │ └── macros │ │ │ │ │ │ ├── constants_macro.h │ │ │ │ │ │ ├── platform_macro.h │ │ │ │ │ │ ├── types_macro.h │ │ │ │ │ │ └── utilities_macro.h │ │ │ │ ├── core │ │ │ │ │ ├── arch │ │ │ │ │ │ ├── Cpu.cc │ │ │ │ │ │ ├── Cpu.h │ │ │ │ │ │ ├── CpuFeature.cc │ │ │ │ │ │ ├── CpuFeature.h │ │ │ │ │ │ ├── CpuRegister.cc │ │ │ │ │ │ ├── CpuRegister.h │ │ │ │ │ │ ├── CpuUtils.h │ │ │ │ │ │ ├── arm │ │ │ │ │ │ │ ├── constants-arm.h │ │ │ │ │ │ │ └── registers-arm.h │ │ │ │ │ │ ├── arm64 │ │ │ │ │ │ │ ├── constants-arm64.h │ │ │ │ │ │ │ └── registers-arm64.h │ │ │ │ │ │ ├── x64 │ │ │ │ │ │ │ ├── constants-x64.h │ │ │ │ │ │ │ └── registers-x64.h │ │ │ │ │ │ └── x86 │ │ │ │ │ │ │ ├── constants-x86.h │ │ │ │ │ │ │ ├── cpu-x86.cc │ │ │ │ │ │ │ ├── cpu-x86.h │ │ │ │ │ │ │ └── registers-x86.h │ │ │ │ │ └── modules │ │ │ │ │ │ ├── assembler │ │ │ │ │ │ ├── assembler-arch.h │ │ │ │ │ │ ├── assembler-arm.cc │ │ │ │ │ │ ├── assembler-arm.h │ │ │ │ │ │ ├── assembler-arm64.cc │ │ │ │ │ │ ├── assembler-arm64.h │ │ │ │ │ │ ├── assembler-ia32.cc │ │ │ │ │ │ ├── assembler-ia32.h │ │ │ │ │ │ ├── assembler-x64.cc │ │ │ │ │ │ ├── assembler-x64.h │ │ │ │ │ │ ├── assembler-x86-shared.cc │ │ │ │ │ │ ├── assembler-x86-shared.h │ │ │ │ │ │ ├── assembler.cc │ │ │ │ │ │ └── assembler.h │ │ │ │ │ │ ├── codegen │ │ │ │ │ │ ├── codegen-arm.cc │ │ │ │ │ │ ├── codegen-arm.h │ │ │ │ │ │ ├── codegen-arm64.cc │ │ │ │ │ │ ├── codegen-arm64.h │ │ │ │ │ │ ├── codegen-ia32.cc │ │ │ │ │ │ ├── codegen-ia32.h │ │ │ │ │ │ ├── codegen-x64.cc │ │ │ │ │ │ ├── codegen-x64.h │ │ │ │ │ │ └── codegen.h │ │ │ │ │ │ └── emulator │ │ │ │ │ │ └── dummy.cc │ │ │ │ ├── dobby.cpp │ │ │ │ └── dobby_internal.h │ │ │ └── tests │ │ │ │ ├── CMakelists.txt │ │ │ │ ├── InstructionRelocation │ │ │ │ ├── aarch64 │ │ │ │ │ └── test_aarch64_instruction_relocation.cc │ │ │ │ └── x64 │ │ │ │ │ └── test_x64_instruction_relocation.cc │ │ │ │ └── catch.hpp │ │ ├── IORelocator.cpp │ │ ├── IORelocator.h │ │ ├── MapHide │ │ │ ├── hide.cpp │ │ │ ├── hide.h │ │ │ ├── pmparser.c │ │ │ ├── pmparser.h │ │ │ ├── wrap.cpp │ │ │ └── wrap.h │ │ ├── SeccompSVC │ │ │ ├── library.cpp │ │ │ └── library.h │ │ ├── Utils │ │ │ ├── FileUtils.cpp │ │ │ ├── FileUtils.h │ │ │ ├── ProcessRuntime.cpp │ │ │ ├── ProcessRuntime.h │ │ │ ├── elf_util.cpp │ │ │ ├── elf_util.h │ │ │ ├── log.h │ │ │ └── mylog.h │ │ ├── binder.c │ │ ├── binder.h │ │ ├── binder_client.c │ │ ├── binder_client.h │ │ ├── dlfcn │ │ │ ├── local_dlfcn.c │ │ │ └── local_dlfcn.h │ │ ├── hello │ │ │ ├── CMakeLists.txt │ │ │ └── hello.cpp │ │ ├── hunter.cpp │ │ ├── hunter.h │ │ ├── inlineHook │ │ │ └── hook_open.js │ │ ├── linker │ │ │ ├── android-base │ │ │ │ └── macros.h │ │ │ ├── fake_mmap.cpp │ │ │ ├── fake_mmap.h │ │ │ ├── linked_list.h │ │ │ ├── linker.cpp │ │ │ ├── linker.h │ │ │ ├── linker_block_allocator.cpp │ │ │ ├── linker_block_allocator.h │ │ │ ├── linker_common_types.h │ │ │ ├── linker_config.cpp │ │ │ ├── linker_config.h │ │ │ ├── linker_globals.h │ │ │ ├── linker_gnu_hash.h │ │ │ ├── linker_gun_hash.cpp │ │ │ ├── linker_main.cpp │ │ │ ├── linker_main.h │ │ │ ├── linker_mapped_file_fragment.cpp │ │ │ ├── linker_mapped_file_fragment.h │ │ │ ├── linker_namespaces.cpp │ │ │ ├── linker_namespaces.h │ │ │ ├── linker_note_gnu_property.cpp │ │ │ ├── linker_note_gnu_property.h │ │ │ ├── linker_phdr.cpp │ │ │ ├── linker_phdr.h │ │ │ ├── linker_reloc_iterators.h │ │ │ ├── linker_relocate.cpp │ │ │ ├── linker_relocate.h │ │ │ ├── linker_relocs.h │ │ │ ├── linker_soinfo.cpp │ │ │ ├── linker_soinfo.h │ │ │ ├── linker_tls.cpp │ │ │ ├── linker_tls.h │ │ │ ├── linker_transparent_hugepage_support.cpp │ │ │ ├── linker_utils.cpp │ │ │ ├── linker_utils.h │ │ │ ├── log.h │ │ │ ├── mylinker.h │ │ │ └── private │ │ │ │ ├── bionic_elf_tls.cpp │ │ │ │ └── bionic_elf_tls.h │ │ ├── linker_copy │ │ │ ├── CFIShadow.h │ │ │ ├── android-base │ │ │ │ └── macros.h │ │ │ ├── dobby │ │ │ │ ├── ProcessRuntimeUtility.h │ │ │ │ ├── ProcesssRuntimeUtility.cc │ │ │ │ ├── StdMemory.h │ │ │ │ ├── bionic_linker_restriction.cc │ │ │ │ ├── bionic_linker_restriction.h │ │ │ │ ├── dobby_symbol_resolver.cc │ │ │ │ ├── dobby_symbol_resolver.h │ │ │ │ ├── types_macro.h │ │ │ │ └── utilities_macro.h │ │ │ ├── fake_mmap.cpp │ │ │ ├── fake_mmap.h │ │ │ ├── linked_list.h │ │ │ ├── linker.cpp │ │ │ ├── linker.h │ │ │ ├── linker_block_allocator.cpp │ │ │ ├── linker_block_allocator.h │ │ │ ├── linker_common_types.h │ │ │ ├── linker_config.cpp │ │ │ ├── linker_config.h │ │ │ ├── linker_globals.h │ │ │ ├── linker_gnu_hash.cpp │ │ │ ├── linker_gnu_hash.h │ │ │ ├── linker_gun_hash.cpp │ │ │ ├── linker_main.cpp │ │ │ ├── linker_main.h │ │ │ ├── linker_mapped_file_fragment.cpp │ │ │ ├── linker_mapped_file_fragment.h │ │ │ ├── linker_namespaces.cpp │ │ │ ├── linker_namespaces.h │ │ │ ├── linker_note_gnu_property.cpp │ │ │ ├── linker_note_gnu_property.h │ │ │ ├── linker_phdr.cpp │ │ │ ├── linker_phdr.h │ │ │ ├── linker_reloc_iterators.h │ │ │ ├── linker_relocate.cpp │ │ │ ├── linker_relocate.h │ │ │ ├── linker_relocs.h │ │ │ ├── linker_soinfo.cpp │ │ │ ├── linker_soinfo.h │ │ │ ├── linker_tls.cpp │ │ │ ├── linker_tls.h │ │ │ ├── linker_transparent_hugepage_support.cpp │ │ │ ├── linker_utils.cpp │ │ │ ├── linker_utils.h │ │ │ ├── log.h │ │ │ ├── mylinker.cpp │ │ │ ├── mylinker.h │ │ │ ├── page.h │ │ │ └── private │ │ │ │ ├── bionic_elf_tls.cpp │ │ │ │ └── bionic_elf_tls.h │ │ ├── mynative.cpp │ │ ├── mynative.h │ │ ├── netlink │ │ │ ├── bionic_netlink.cpp │ │ │ ├── bionic_netlink.h │ │ │ ├── ifaddrs.cpp │ │ │ ├── ifaddrs.h │ │ │ ├── syscall32.s │ │ │ └── syscall64.s │ │ ├── other │ │ │ ├── CMakeLists.txt │ │ │ └── other.cpp │ │ └── xhook │ │ │ ├── queue.h │ │ │ ├── tree.h │ │ │ ├── xh_core.c │ │ │ ├── xh_core.h │ │ │ ├── xh_elf.c │ │ │ ├── xh_elf.h │ │ │ ├── xh_errno.h │ │ │ ├── xh_jni.c │ │ │ ├── xh_log.c │ │ │ ├── xh_log.h │ │ │ ├── xh_util.c │ │ │ ├── xh_util.h │ │ │ ├── xh_version.c │ │ │ ├── xh_version.h │ │ │ ├── xhook.c │ │ │ └── xhook.h │ ├── java │ │ └── com │ │ │ └── android │ │ │ └── study │ │ │ ├── ChooseUtils.kt │ │ │ ├── ClassA.java │ │ │ ├── ClassB.java │ │ │ ├── ClassInfo.kt │ │ │ ├── DetectVirtualApps.kt │ │ │ ├── MainActivity.kt │ │ │ ├── MyBroadcastReceiver.kt │ │ │ ├── fileUtils.kt │ │ │ ├── hunter │ │ │ ├── IXposedHookLoadPackage.java │ │ │ ├── IXposedMod.java │ │ │ ├── XC_MethodHook.java │ │ │ ├── XC_MethodReplacement.java │ │ │ ├── XposedBridge.java │ │ │ ├── XposedHelpers.java │ │ │ ├── XposedInit.java │ │ │ ├── callbacks │ │ │ │ ├── IXUnhook.java │ │ │ │ ├── XC_LoadPackage.java │ │ │ │ ├── XCallback.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── services │ │ │ │ ├── BaseService.java │ │ │ │ ├── FileResult.java │ │ │ │ └── package-info.java │ │ │ ├── lang3 │ │ │ ├── ArrayUtils.java │ │ │ ├── ClassUtils.java │ │ │ ├── JavaVersion.java │ │ │ ├── StringUtils.java │ │ │ ├── SystemUtils.java │ │ │ ├── overview.html │ │ │ ├── package.html │ │ │ └── reflect │ │ │ │ ├── MemberUtils.java │ │ │ │ └── package.html │ │ │ ├── test.kt │ │ │ ├── useRust.kt │ │ │ └── utils │ │ │ ├── FileUtils.kt │ │ │ ├── GsonUtils.kt │ │ │ ├── ThreadUtils.kt │ │ │ └── ToastUtils.kt │ ├── jni │ │ ├── Android.mk │ │ ├── Application.mk │ │ ├── main.c │ │ ├── main1.c │ │ ├── main2.cpp │ │ └── native.c │ └── res │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── values-night │ │ └── themes.xml │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test │ └── java │ └── com │ └── android │ └── ExampleUnitTest.java ├── build.gradle.kts ├── gradle.properties ├── gradle ├── .DS_Store ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hook ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hook │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── native_init │ │ └── xposed_init │ ├── java │ │ └── com │ │ │ └── hook │ │ │ ├── FirstFragment.java │ │ │ ├── MainActivity.java │ │ │ ├── SecondFragment.java │ │ │ └── hook.java │ └── res │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── content_main.xml │ │ ├── fragment_first.xml │ │ └── fragment_second.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-anydpi │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── navigation │ │ └── nav_graph.xml │ │ ├── values-land │ │ └── dimens.xml │ │ ├── values-night │ │ └── themes.xml │ │ ├── values-v23 │ │ └── themes.xml │ │ ├── values-w1240dp │ │ └── dimens.xml │ │ ├── values-w600dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── hook │ └── ExampleUnitTest.java ├── libhello.so ├── libhunter64.so ├── nativeLib ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ ├── com │ │ └── nativelib │ │ │ └── ExampleInstrumentedTest.java │ │ └── thouger │ │ └── nativelib │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── cpp │ │ ├── CMakeLists.txt │ │ ├── adapter │ │ ├── CMakeLists.txt │ │ └── adapter.cpp │ │ ├── dlfc │ │ ├── CMakeLists.txt │ │ ├── dlfcn_compat.cpp │ │ ├── dlfcn_nougat.cpp │ │ └── elf_util.cpp │ │ ├── hook │ │ ├── CMakeLists.txt │ │ ├── Dobby │ │ │ ├── .clang-format │ │ │ ├── CMakeLists.txt │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── README_zh-cn.md │ │ │ ├── builtin-plugin │ │ │ │ ├── ApplicationEventMonitor │ │ │ │ │ ├── MGCopyAnswerMonitor.cc │ │ │ │ │ ├── dynamic_loader_monitor.cc │ │ │ │ │ ├── file_operation_monitor.cc │ │ │ │ │ ├── memory_operation_instrument.cc │ │ │ │ │ ├── posix_file_descriptor_operation_monitor.cc │ │ │ │ │ └── posix_socket_network_monitor.cc │ │ │ │ ├── BionicLinkerUtil │ │ │ │ │ ├── bionic_linker_demo.cc │ │ │ │ │ ├── bionic_linker_util.cc │ │ │ │ │ └── bionic_linker_util.h │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── ImportTableReplace │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── dobby_import_replace.cc │ │ │ │ │ └── dobby_import_replace.h │ │ │ │ ├── ObjcRuntimeReplace │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── objc_runtime_repalce.h │ │ │ │ │ └── objc_runtime_replace.mm │ │ │ │ ├── SupervisorCallMonitor │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── README │ │ │ │ │ ├── mach_system_call_log_handler.cc │ │ │ │ │ ├── misc_utility.cc │ │ │ │ │ ├── misc_utility.h │ │ │ │ │ ├── sensitive_api_monitor.cc │ │ │ │ │ ├── supervisor_call_monitor.cc │ │ │ │ │ ├── supervisor_call_monitor.h │ │ │ │ │ ├── system_call_log_handler.cc │ │ │ │ │ └── test_supervisor_call_monitor.cc │ │ │ │ └── SymbolResolver │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── dobby_symbol_resolver.h │ │ │ │ │ ├── elf │ │ │ │ │ └── dobby_symbol_resolver.cc │ │ │ │ │ ├── macho │ │ │ │ │ ├── dobby_symbol_resolver.cc │ │ │ │ │ ├── dobby_symbol_resolver_priv.h │ │ │ │ │ ├── dyld_shared_cache_symbol_table_iterator.cc │ │ │ │ │ ├── shared-cache │ │ │ │ │ │ └── dyld_cache_format.h │ │ │ │ │ └── shared_cache_internal.h │ │ │ │ │ └── pe │ │ │ │ │ └── dobby_symbol_resolver.cc │ │ │ ├── cmake │ │ │ │ ├── Macros.cmake │ │ │ │ ├── Util.cmake │ │ │ │ ├── auto_source_group.cmake │ │ │ │ ├── build_environment_check.cmake │ │ │ │ ├── compiler_and_linker.cmake │ │ │ │ ├── dobby.xcode.source.cmake │ │ │ │ ├── platform │ │ │ │ │ └── platform-darwin.cmake │ │ │ │ └── xcode_generator_helper.cmake │ │ │ ├── docs │ │ │ │ └── compile.md │ │ │ ├── examples │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── main.cc │ │ │ │ └── socket_example.cc │ │ │ ├── external │ │ │ │ ├── TINYSTL │ │ │ │ │ ├── allocator.h │ │ │ │ │ ├── buffer.h │ │ │ │ │ ├── hash.h │ │ │ │ │ ├── hash_base.h │ │ │ │ │ ├── new.h │ │ │ │ │ ├── stddef.h │ │ │ │ │ ├── string.h │ │ │ │ │ ├── string_view.h │ │ │ │ │ ├── traits.h │ │ │ │ │ ├── unordered_map.h │ │ │ │ │ ├── unordered_set.h │ │ │ │ │ └── vector.h │ │ │ │ ├── deprecated │ │ │ │ │ └── misc-helper │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ ├── async_logger.cc │ │ │ │ │ │ ├── deprecated │ │ │ │ │ │ ├── pthread_helper.cc │ │ │ │ │ │ ├── pthread_helper.h │ │ │ │ │ │ └── unistd_helper.h │ │ │ │ │ │ ├── format_printer.cc │ │ │ │ │ │ ├── misc-helper │ │ │ │ │ │ ├── async_logger.h │ │ │ │ │ │ ├── format_printer.h │ │ │ │ │ │ └── variable_cache.h │ │ │ │ │ │ └── variable_cache.c │ │ │ │ ├── logging │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── cxxlogging.cc │ │ │ │ │ ├── kernel_logging.c │ │ │ │ │ ├── logging.c │ │ │ │ │ └── logging │ │ │ │ │ │ ├── check_logging.h │ │ │ │ │ │ ├── cxxlogging.h │ │ │ │ │ │ └── logging.h │ │ │ │ └── misc-helper │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── async_logger.cc │ │ │ │ │ ├── deprecated │ │ │ │ │ ├── pthread_helper.cc │ │ │ │ │ ├── pthread_helper.h │ │ │ │ │ └── unistd_helper.h │ │ │ │ │ ├── format_printer.cc │ │ │ │ │ ├── misc-helper │ │ │ │ │ ├── async_logger.h │ │ │ │ │ ├── format_printer.h │ │ │ │ │ └── variable_cache.h │ │ │ │ │ └── variable_cache.c │ │ │ ├── include │ │ │ │ └── dobby.h │ │ │ ├── scripts │ │ │ │ ├── Dockerfile │ │ │ │ ├── platform_builder.py │ │ │ │ ├── setup_linux_cross_compile.sh │ │ │ │ └── setup_macos_cross_compile.sh │ │ │ ├── source │ │ │ │ ├── Backend │ │ │ │ │ ├── KernelMode │ │ │ │ │ │ ├── ExecMemory │ │ │ │ │ │ │ ├── clear-cache-tool-all.c │ │ │ │ │ │ │ └── code-patch-tool-darwin.cc │ │ │ │ │ │ ├── PlatformUtil │ │ │ │ │ │ │ ├── Darwin │ │ │ │ │ │ │ │ └── ProcessRuntimeUtility.cc │ │ │ │ │ │ │ └── ProcessRuntimeUtility.h │ │ │ │ │ │ └── UnifiedInterface │ │ │ │ │ │ │ ├── exec_mem_placeholder.asm │ │ │ │ │ │ │ ├── platform-darwin.cc │ │ │ │ │ │ │ └── platform.h │ │ │ │ │ └── UserMode │ │ │ │ │ │ ├── ExecMemory │ │ │ │ │ │ ├── clear-cache-tool-all.c │ │ │ │ │ │ ├── clear-cache-tool │ │ │ │ │ │ │ ├── clear-cache-tool-arm-dummy.cc │ │ │ │ │ │ │ └── clear-cache-tool-arm64-dummy.cc │ │ │ │ │ │ ├── code-patch-tool-darwin.cc │ │ │ │ │ │ ├── code-patch-tool-posix.cc │ │ │ │ │ │ ├── code-patch-tool-windows.cc │ │ │ │ │ │ └── substrated │ │ │ │ │ │ │ ├── include │ │ │ │ │ │ │ ├── bootstrap.h │ │ │ │ │ │ │ └── xpc │ │ │ │ │ │ │ │ └── base.h │ │ │ │ │ │ │ └── mach_interface_support │ │ │ │ │ │ │ ├── substrated.defs │ │ │ │ │ │ │ ├── substrated_client.c │ │ │ │ │ │ │ ├── substrated_client.h │ │ │ │ │ │ │ ├── substrated_server.c │ │ │ │ │ │ │ └── substrated_server.h │ │ │ │ │ │ ├── MultiThreadSupport │ │ │ │ │ │ ├── ThreadSupport.cpp │ │ │ │ │ │ └── ThreadSupport.h │ │ │ │ │ │ ├── PlatformUtil │ │ │ │ │ │ ├── Darwin │ │ │ │ │ │ │ └── ProcessRuntimeUtility.cc │ │ │ │ │ │ ├── Linux │ │ │ │ │ │ │ └── ProcessRuntimeUtility.cc │ │ │ │ │ │ ├── ProcessRuntimeUtility.h │ │ │ │ │ │ └── Windows │ │ │ │ │ │ │ └── ProcessRuntimeUtility.cc │ │ │ │ │ │ ├── Thread │ │ │ │ │ │ ├── PlatformThread.cc │ │ │ │ │ │ ├── PlatformThread.h │ │ │ │ │ │ ├── platform-thread-posix.cc │ │ │ │ │ │ └── platform-thread-windows.cc │ │ │ │ │ │ └── UnifiedInterface │ │ │ │ │ │ ├── platform-darwin │ │ │ │ │ │ └── mach_vm.h │ │ │ │ │ │ ├── platform-posix.cc │ │ │ │ │ │ ├── platform-windows.cc │ │ │ │ │ │ ├── platform.h │ │ │ │ │ │ ├── semaphore.cc │ │ │ │ │ │ └── semaphore.h │ │ │ │ ├── InstructionRelocation │ │ │ │ │ ├── InstructionRelocation.h │ │ │ │ │ ├── arm │ │ │ │ │ │ ├── InstructionRelocationARM.cc │ │ │ │ │ │ └── InstructionRelocationARM.h │ │ │ │ │ ├── arm64 │ │ │ │ │ │ ├── InstructionRelocationARM64.cc │ │ │ │ │ │ ├── InstructionRelocationARM64.h │ │ │ │ │ │ ├── inst_constants.h │ │ │ │ │ │ └── inst_decode_encode_kit.h │ │ │ │ │ ├── x64 │ │ │ │ │ │ ├── InstructionRelocationX64.cc │ │ │ │ │ │ └── InstructionRelocationX64.h │ │ │ │ │ └── x86 │ │ │ │ │ │ ├── InstructionRelocationX86.cc │ │ │ │ │ │ ├── InstructionRelocationX86.h │ │ │ │ │ │ ├── InstructionRelocationX86Shared.cc │ │ │ │ │ │ ├── InstructionRelocationX86Shared.h │ │ │ │ │ │ ├── deprecated │ │ │ │ │ │ ├── Ia32Disassembler.cc │ │ │ │ │ │ ├── X86OpcodoDecodeTable.cc │ │ │ │ │ │ └── X86OpcodoDecodeTable.h │ │ │ │ │ │ └── x86_insn_decode │ │ │ │ │ │ ├── build_config.h │ │ │ │ │ │ ├── x86_insn_decode.c │ │ │ │ │ │ ├── x86_insn_decode.h │ │ │ │ │ │ ├── x86_insn_reader.c │ │ │ │ │ │ ├── x86_opcode_modrm_reg_group.c │ │ │ │ │ │ ├── x86_opcode_one_byte.c │ │ │ │ │ │ ├── x86_opcode_sse_group.c │ │ │ │ │ │ └── x86_opcode_two_byte.c │ │ │ │ ├── InterceptEntry.cpp │ │ │ │ ├── InterceptEntry.h │ │ │ │ ├── InterceptRouting │ │ │ │ │ ├── InterceptRouting.cpp │ │ │ │ │ ├── InterceptRouting.h │ │ │ │ │ ├── Routing │ │ │ │ │ │ ├── FunctionInlineHook │ │ │ │ │ │ │ ├── FunctionInlineHook.cc │ │ │ │ │ │ │ ├── FunctionInlineHookRouting.h │ │ │ │ │ │ │ └── RoutingImpl.cc │ │ │ │ │ │ ├── FunctionWrapper │ │ │ │ │ │ │ ├── FunctionWrapperExport.cc │ │ │ │ │ │ │ ├── function-wrapper.cc │ │ │ │ │ │ │ ├── function-wrapper.h │ │ │ │ │ │ │ ├── intercept_routing_handler.cc │ │ │ │ │ │ │ └── intercept_routing_handler.h │ │ │ │ │ │ └── InstructionInstrument │ │ │ │ │ │ │ ├── InstructionInstrument.cc │ │ │ │ │ │ │ ├── InstructionInstrumentRouting.h │ │ │ │ │ │ │ ├── RoutingImpl.cc │ │ │ │ │ │ │ ├── instrument_routing_handler.cc │ │ │ │ │ │ │ └── instrument_routing_handler.h │ │ │ │ │ └── RoutingPlugin │ │ │ │ │ │ ├── NearBranchTrampoline │ │ │ │ │ │ ├── NearBranchTrampoline.cc │ │ │ │ │ │ ├── NearBranchTrampoline.h │ │ │ │ │ │ └── near_trampoline_arm64.cc │ │ │ │ │ │ ├── RoutingPlugin.cc │ │ │ │ │ │ └── RoutingPlugin.h │ │ │ │ ├── Interceptor.cpp │ │ │ │ ├── Interceptor.h │ │ │ │ ├── MemoryAllocator │ │ │ │ │ ├── AssemblyCodeBuilder.cc │ │ │ │ │ ├── AssemblyCodeBuilder.h │ │ │ │ │ ├── CodeBuffer │ │ │ │ │ │ ├── CodeBufferBase.cc │ │ │ │ │ │ ├── CodeBufferBase.h │ │ │ │ │ │ ├── code-buffer-arm.h │ │ │ │ │ │ ├── code-buffer-arm64.h │ │ │ │ │ │ ├── code-buffer-x64.h │ │ │ │ │ │ ├── code-buffer-x86.cc │ │ │ │ │ │ ├── code-buffer-x86.h │ │ │ │ │ │ ├── code_buffer_arm.h │ │ │ │ │ │ ├── code_buffer_arm64.h │ │ │ │ │ │ ├── code_buffer_x64.h │ │ │ │ │ │ └── code_buffer_x86.h │ │ │ │ │ ├── MemoryAllocator.cc │ │ │ │ │ ├── NearMemoryAllocator.cc │ │ │ │ │ └── NearMemoryAllocator.h │ │ │ │ ├── PlatformUnifiedInterface │ │ │ │ │ ├── ExecMemory │ │ │ │ │ │ ├── ClearCacheTool.h │ │ │ │ │ │ └── CodePatchTool.h │ │ │ │ │ └── MemoryAllocator.h │ │ │ │ ├── TrampolineBridge │ │ │ │ │ ├── ClosureTrampolineBridge │ │ │ │ │ │ ├── ClosureTrampoline.h │ │ │ │ │ │ ├── arm │ │ │ │ │ │ │ ├── ClosureTrampolineARM.cc │ │ │ │ │ │ │ ├── closure_bridge_arm.cc │ │ │ │ │ │ │ ├── dummy │ │ │ │ │ │ │ │ ├── closure-bridge-template-arm.cc │ │ │ │ │ │ │ │ └── closure-trampoline-template-arm.S │ │ │ │ │ │ │ └── helper_arm.cc │ │ │ │ │ │ ├── arm64 │ │ │ │ │ │ │ ├── ClosureTrampolineARM64.cc │ │ │ │ │ │ │ ├── closure_bridge_arm64.cc │ │ │ │ │ │ │ ├── dummy │ │ │ │ │ │ │ │ ├── closure-bridge-template-arm64.c │ │ │ │ │ │ │ │ ├── closure-trampoline-template-arm64.S │ │ │ │ │ │ │ │ └── dynamic-closure-trampoline-template-arm64.S │ │ │ │ │ │ │ └── helper_arm64.cc │ │ │ │ │ │ ├── common_bridge_handler.cc │ │ │ │ │ │ ├── common_bridge_handler.h │ │ │ │ │ │ ├── x64 │ │ │ │ │ │ │ ├── ClosureTrampolineX64.cc │ │ │ │ │ │ │ ├── closure_bridge_x64.cc │ │ │ │ │ │ │ ├── dummy │ │ │ │ │ │ │ │ ├── closure-bridge-template-x64.c │ │ │ │ │ │ │ │ └── closure-trampoline-template-x64.S │ │ │ │ │ │ │ └── helper_x64.cc │ │ │ │ │ │ └── x86 │ │ │ │ │ │ │ ├── ClosureTrampolineX86.cc │ │ │ │ │ │ │ ├── closure_bridge_x86.cc │ │ │ │ │ │ │ └── helper_x86.cc │ │ │ │ │ └── Trampoline │ │ │ │ │ │ ├── Trampoline.h │ │ │ │ │ │ ├── arm │ │ │ │ │ │ └── trampoline_arm.cc │ │ │ │ │ │ ├── arm64 │ │ │ │ │ │ └── trampoline_arm64.cc │ │ │ │ │ │ ├── x64 │ │ │ │ │ │ └── trampoline_x64.cc │ │ │ │ │ │ └── x86 │ │ │ │ │ │ └── trampoline_x86.cc │ │ │ │ ├── core │ │ │ │ │ ├── arch │ │ │ │ │ │ ├── Cpu.cc │ │ │ │ │ │ ├── Cpu.h │ │ │ │ │ │ ├── CpuFeature.cc │ │ │ │ │ │ ├── CpuFeature.h │ │ │ │ │ │ ├── CpuRegister.cc │ │ │ │ │ │ ├── CpuRegister.h │ │ │ │ │ │ ├── CpuUtils.h │ │ │ │ │ │ ├── arm │ │ │ │ │ │ │ ├── constants-arm.h │ │ │ │ │ │ │ └── registers-arm.h │ │ │ │ │ │ ├── arm64 │ │ │ │ │ │ │ ├── constants-arm64.h │ │ │ │ │ │ │ └── registers-arm64.h │ │ │ │ │ │ ├── x64 │ │ │ │ │ │ │ ├── constants-x64.h │ │ │ │ │ │ │ └── registers-x64.h │ │ │ │ │ │ └── x86 │ │ │ │ │ │ │ ├── constants-x86.h │ │ │ │ │ │ │ ├── cpu-x86.cc │ │ │ │ │ │ │ ├── cpu-x86.h │ │ │ │ │ │ │ └── registers-x86.h │ │ │ │ │ ├── assembler │ │ │ │ │ │ ├── AssemblerPseudoLabel.h │ │ │ │ │ │ ├── assembler-arch.h │ │ │ │ │ │ ├── assembler-arm.cc │ │ │ │ │ │ ├── assembler-arm.h │ │ │ │ │ │ ├── assembler-arm64.cc │ │ │ │ │ │ ├── assembler-arm64.h │ │ │ │ │ │ ├── assembler-ia32.cc │ │ │ │ │ │ ├── assembler-ia32.h │ │ │ │ │ │ ├── assembler-x64.cc │ │ │ │ │ │ ├── assembler-x64.h │ │ │ │ │ │ ├── assembler-x86-shared.cc │ │ │ │ │ │ ├── assembler-x86-shared.h │ │ │ │ │ │ ├── assembler.cc │ │ │ │ │ │ └── assembler.h │ │ │ │ │ ├── codegen │ │ │ │ │ │ ├── codegen-arm.cc │ │ │ │ │ │ ├── codegen-arm.h │ │ │ │ │ │ ├── codegen-arm64.cc │ │ │ │ │ │ ├── codegen-arm64.h │ │ │ │ │ │ ├── codegen-ia32.cc │ │ │ │ │ │ ├── codegen-ia32.h │ │ │ │ │ │ ├── codegen-x64.cc │ │ │ │ │ │ ├── codegen-x64.h │ │ │ │ │ │ └── codegen.h │ │ │ │ │ └── emulator │ │ │ │ │ │ └── dummy.cc │ │ │ │ ├── dobby.cpp │ │ │ │ ├── dobby_internal.h │ │ │ │ └── include │ │ │ │ │ ├── common_header.h │ │ │ │ │ ├── kernel_mode_header.h │ │ │ │ │ ├── list_c.h │ │ │ │ │ ├── platform_header.h │ │ │ │ │ ├── platform_macro.h │ │ │ │ │ ├── type_header.h │ │ │ │ │ └── utility_macro.h │ │ │ └── tests │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── UniconEmulator.cpp │ │ │ │ ├── UniconEmulator.h │ │ │ │ ├── test_insn_decoder_x86.cpp │ │ │ │ ├── test_insn_relo_arm.cpp │ │ │ │ ├── test_insn_relo_arm64.cpp │ │ │ │ ├── test_insn_relo_x64.cpp │ │ │ │ └── test_native.cpp │ │ ├── HookUtils.cpp │ │ ├── dobby.h │ │ ├── signhook │ │ │ ├── CMakeLists.txt │ │ │ ├── common │ │ │ │ ├── base.h │ │ │ │ ├── compiler.h │ │ │ │ ├── cow_vector.h │ │ │ │ ├── dlfcn_nougat.cc │ │ │ │ ├── dlfcn_nougat.h │ │ │ │ ├── elf.cpp │ │ │ │ ├── elf.h │ │ │ │ ├── elf_util.cc │ │ │ │ ├── elf_util.h │ │ │ │ ├── log.h │ │ │ │ ├── types.cc │ │ │ │ └── types.h │ │ │ ├── exts │ │ │ │ ├── distorm │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── config.h │ │ │ │ │ ├── decoder.c │ │ │ │ │ ├── decoder.h │ │ │ │ │ ├── distorm.c │ │ │ │ │ ├── distorm.h │ │ │ │ │ ├── instructions.c │ │ │ │ │ ├── instructions.h │ │ │ │ │ ├── insts.c │ │ │ │ │ ├── insts.h │ │ │ │ │ ├── mnemonics.c │ │ │ │ │ ├── mnemonics.h │ │ │ │ │ ├── operands.c │ │ │ │ │ ├── operands.h │ │ │ │ │ ├── prefix.c │ │ │ │ │ ├── prefix.h │ │ │ │ │ ├── textdefs.c │ │ │ │ │ ├── textdefs.h │ │ │ │ │ ├── wstring.c │ │ │ │ │ ├── wstring.h │ │ │ │ │ └── x86defs.h │ │ │ │ ├── ucontext │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── aarch64 │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ └── sysdep.h │ │ │ │ │ │ ├── config.h │ │ │ │ │ │ ├── getcontext.S │ │ │ │ │ │ ├── kernel_rt_sigframe.h │ │ │ │ │ │ ├── libc-symbols.h │ │ │ │ │ │ ├── makecontext.c │ │ │ │ │ │ ├── setcontext.S │ │ │ │ │ │ ├── swapcontext.S │ │ │ │ │ │ ├── sysdep.c │ │ │ │ │ │ ├── sysdep.h │ │ │ │ │ │ ├── ucontext-internal.h │ │ │ │ │ │ ├── ucontext_i.h │ │ │ │ │ │ └── ucontext_i.sym │ │ │ │ │ ├── arm │ │ │ │ │ │ ├── arm_bx.h │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ └── sysdep.h │ │ │ │ │ │ ├── getcontext.S │ │ │ │ │ │ ├── makecontext.c │ │ │ │ │ │ ├── scripts │ │ │ │ │ │ │ └── gen-as-const.awk │ │ │ │ │ │ ├── setcontext.S │ │ │ │ │ │ ├── swapcontext.S │ │ │ │ │ │ ├── sysdep.h │ │ │ │ │ │ ├── ucontext.mk │ │ │ │ │ │ ├── ucontext_i.h │ │ │ │ │ │ └── ucontext_i.sym │ │ │ │ │ ├── breakpad_getcontext.S │ │ │ │ │ └── ucontext_constants.h │ │ │ │ └── vixl │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── aarch32 │ │ │ │ │ ├── assembler-aarch32.cc │ │ │ │ │ ├── assembler-aarch32.h │ │ │ │ │ ├── constants-aarch32.cc │ │ │ │ │ ├── constants-aarch32.h │ │ │ │ │ ├── disasm-aarch32.cc │ │ │ │ │ ├── disasm-aarch32.h │ │ │ │ │ ├── instructions-aarch32.cc │ │ │ │ │ ├── instructions-aarch32.h │ │ │ │ │ ├── location-aarch32.cc │ │ │ │ │ ├── location-aarch32.h │ │ │ │ │ ├── macro-assembler-aarch32.cc │ │ │ │ │ ├── macro-assembler-aarch32.h │ │ │ │ │ ├── operands-aarch32.cc │ │ │ │ │ └── operands-aarch32.h │ │ │ │ │ ├── aarch64 │ │ │ │ │ ├── abi-aarch64.h │ │ │ │ │ ├── assembler-aarch64.cc │ │ │ │ │ ├── assembler-aarch64.h │ │ │ │ │ ├── constants-aarch64.h │ │ │ │ │ ├── cpu-aarch64.cc │ │ │ │ │ ├── cpu-aarch64.h │ │ │ │ │ ├── cpu-features-auditor-aarch64.cc │ │ │ │ │ ├── cpu-features-auditor-aarch64.h │ │ │ │ │ ├── decoder-aarch64.cc │ │ │ │ │ ├── decoder-aarch64.h │ │ │ │ │ ├── decoder-constants-aarch64.h │ │ │ │ │ ├── disasm-aarch64.cc │ │ │ │ │ ├── disasm-aarch64.h │ │ │ │ │ ├── instructions-aarch64.cc │ │ │ │ │ ├── instructions-aarch64.h │ │ │ │ │ ├── instrument-aarch64.cc │ │ │ │ │ ├── instrument-aarch64.h │ │ │ │ │ ├── logic-aarch64.cc │ │ │ │ │ ├── macro-assembler-aarch64.cc │ │ │ │ │ ├── macro-assembler-aarch64.h │ │ │ │ │ ├── operands-aarch64.cc │ │ │ │ │ ├── operands-aarch64.h │ │ │ │ │ ├── pointer-auth-aarch64.cc │ │ │ │ │ ├── simulator-aarch64.cc │ │ │ │ │ ├── simulator-aarch64.h │ │ │ │ │ └── simulator-constants-aarch64.h │ │ │ │ │ ├── assembler-base-vixl.h │ │ │ │ │ ├── code-buffer-vixl.cc │ │ │ │ │ ├── code-buffer-vixl.h │ │ │ │ │ ├── code-generation-scopes-vixl.h │ │ │ │ │ ├── compiler-intrinsics-vixl.cc │ │ │ │ │ ├── compiler-intrinsics-vixl.h │ │ │ │ │ ├── cpu-features.cc │ │ │ │ │ ├── cpu-features.h │ │ │ │ │ ├── globals-vixl.h │ │ │ │ │ ├── invalset-vixl.h │ │ │ │ │ ├── macro-assembler-interface.h │ │ │ │ │ ├── platform-vixl.h │ │ │ │ │ ├── pool-manager-impl.h │ │ │ │ │ ├── pool-manager.h │ │ │ │ │ ├── utils-vixl.cc │ │ │ │ │ └── utils-vixl.h │ │ │ ├── include │ │ │ │ └── inline_hook.h │ │ │ ├── inline │ │ │ │ ├── arm32 │ │ │ │ │ └── inline_hook_arm32.cpp │ │ │ │ ├── arm64 │ │ │ │ │ └── inline_hook_arm64.cc │ │ │ │ └── inline_hook.cc │ │ │ ├── instrcache │ │ │ │ ├── arm32 │ │ │ │ │ ├── translator.cc │ │ │ │ │ └── translator.h │ │ │ │ ├── arm64 │ │ │ │ │ ├── translator.cc │ │ │ │ │ └── translator.h │ │ │ │ └── instr_cache.h │ │ │ ├── memory │ │ │ │ ├── code_buffer.cc │ │ │ │ └── code_buffer.h │ │ │ └── platform │ │ │ │ ├── memory.cc │ │ │ │ └── memory.h │ │ └── xhook │ │ │ ├── CMakeLists.txt │ │ │ ├── include │ │ │ ├── queue.h │ │ │ ├── tree.h │ │ │ ├── xh_core.h │ │ │ ├── xh_elf.h │ │ │ ├── xh_errno.h │ │ │ ├── xh_log.h │ │ │ ├── xh_util.h │ │ │ ├── xh_version.h │ │ │ └── xhook.h │ │ │ ├── xh_core.c │ │ │ ├── xh_elf.c │ │ │ ├── xh_jni.c │ │ │ ├── xh_log.c │ │ │ ├── xh_util.c │ │ │ ├── xh_version.c │ │ │ └── xhook.c │ │ ├── include │ │ ├── HookClassUtils.h │ │ ├── HookUtils.h │ │ ├── JnitraceForC.h │ │ ├── MMKV.h │ │ ├── ZhenxiLog.h │ │ ├── ZhenxiLogging.h │ │ ├── adapter.h │ │ ├── allInclude.h │ │ ├── appUtils.h │ │ ├── arch.h │ │ ├── dlfcn_compat.h │ │ ├── dlfcn_nougat.h │ │ ├── elf_util.h │ │ ├── fileUtils.h │ │ ├── invokePrintf.h │ │ ├── libpath.h │ │ ├── macros.h │ │ ├── mapItemInfo.h │ │ ├── mylibc.h │ │ ├── parse.h │ │ ├── raw_syscall.h │ │ ├── stringHandler.h │ │ ├── stringUtils.h │ │ └── version.h │ │ ├── includes │ │ ├── HookClassUtils.h │ │ ├── HookUtils.h │ │ ├── JnitraceForC.h │ │ ├── MMKV.h │ │ ├── ZhenxiLog.h │ │ ├── ZhenxiLogging.h │ │ ├── adapter.h │ │ ├── allInclude.h │ │ ├── appUtils.h │ │ ├── arch.h │ │ ├── dlfcn_compat.h │ │ ├── dlfcn_nougat.h │ │ ├── elf_util.h │ │ ├── fileUtils.h │ │ ├── invokePrintf.h │ │ ├── libpath.h │ │ ├── macros.h │ │ ├── mapItemInfo.h │ │ ├── mylibc.h │ │ ├── parse.h │ │ ├── raw_syscall.h │ │ ├── stringHandler.h │ │ ├── stringUtils.h │ │ └── version.h │ │ ├── libpath │ │ ├── CMakeLists.txt │ │ └── libpath.cpp │ │ ├── mmkv │ │ ├── CMakeLists.txt │ │ ├── CodedInputData.cpp │ │ ├── CodedInputData.h │ │ ├── CodedInputDataCrypt.cpp │ │ ├── CodedInputDataCrypt.h │ │ ├── CodedInputDataCrypt_OSX.cpp │ │ ├── CodedInputData_OSX.cpp │ │ ├── CodedOutputData.cpp │ │ ├── CodedOutputData.h │ │ ├── Core.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ ├── Core.xcscheme │ │ │ │ └── MMKVWatchCore.xcscheme │ │ ├── InterProcessLock.cpp │ │ ├── InterProcessLock.h │ │ ├── InterProcessLock_Android.cpp │ │ ├── InterProcessLock_Win32.cpp │ │ ├── KeyValueHolder.cpp │ │ ├── KeyValueHolder.h │ │ ├── MMBuffer.cpp │ │ ├── MMBuffer.h │ │ ├── MMKV.cpp │ │ ├── MMKVLog.cpp │ │ ├── MMKVLog.h │ │ ├── MMKVLog_Android.cpp │ │ ├── MMKVMetaInfo.hpp │ │ ├── MMKVPredef.h │ │ ├── MMKV_Android.cpp │ │ ├── MMKV_IO.cpp │ │ ├── MMKV_IO.h │ │ ├── MMKV_OSX.cpp │ │ ├── MMKV_OSX.h │ │ ├── MemoryFile.cpp │ │ ├── MemoryFile.h │ │ ├── MemoryFile_Android.cpp │ │ ├── MemoryFile_Linux.cpp │ │ ├── MemoryFile_OSX.cpp │ │ ├── MemoryFile_Win32.cpp │ │ ├── MiniPBCoder.cpp │ │ ├── MiniPBCoder.h │ │ ├── MiniPBCoder_OSX.cpp │ │ ├── PBEncodeItem.hpp │ │ ├── PBUtility.cpp │ │ ├── PBUtility.h │ │ ├── ScopedLock.hpp │ │ ├── ThreadLock.cpp │ │ ├── ThreadLock.h │ │ ├── ThreadLock_Win32.cpp │ │ ├── aes │ │ │ ├── AESCrypt.cpp │ │ │ ├── AESCrypt.h │ │ │ └── openssl │ │ │ │ ├── openssl_aes-armv4.S │ │ │ │ ├── openssl_aes.h │ │ │ │ ├── openssl_aes_core.cpp │ │ │ │ ├── openssl_aes_locl.h │ │ │ │ ├── openssl_aesv8-armx.S │ │ │ │ ├── openssl_arm_arch.h │ │ │ │ ├── openssl_cfb128.cpp │ │ │ │ ├── openssl_md32_common.h │ │ │ │ ├── openssl_md5.h │ │ │ │ ├── openssl_md5_dgst.cpp │ │ │ │ ├── openssl_md5_locl.h │ │ │ │ ├── openssl_md5_one.cpp │ │ │ │ └── openssl_opensslconf.h │ │ ├── core.vcxproj │ │ ├── core.vcxproj.filters │ │ └── crc32 │ │ │ ├── Checksum.h │ │ │ ├── crc32_armv8.cpp │ │ │ └── zlib │ │ │ ├── crc32.cpp │ │ │ ├── crc32.h │ │ │ ├── zconf.h │ │ │ └── zutil.h │ │ ├── raw_syscall │ │ ├── CMakeLists.txt │ │ ├── syscall32.S │ │ └── syscall64.S │ │ └── utils │ │ ├── CMakeLists.txt │ │ ├── appUtils.cpp │ │ ├── fileUtils.cpp │ │ ├── hookutils │ │ ├── HookClassUtils.cpp │ │ ├── JnitraceForC.cpp │ │ ├── invokePrintf.cpp │ │ └── stringHandler.cpp │ │ ├── parse.cpp │ │ └── stringUtils.cpp │ └── test │ └── java │ ├── com │ └── nativelib │ │ └── ExampleUnitTest.java │ └── thouger │ └── nativelib │ └── ExampleUnitTest.kt ├── ptrace-seccomp-demo ├── Makefile ├── Syscall_arm64.h ├── arm64_seccomp.h ├── arm_seccomp_ptrace.cpp └── tuziseccomp └── settings.gradle.kts /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/.idea/ 2 | **/build/ 3 | **/.cxx/ 4 | **/armeabi-v7a/ 5 | **/arm64-v8a/ 6 | **/.vscode 7 | **/cmake-build-debug 8 | **/local.properties 9 | **/.gradle/ 10 | **/target/ -------------------------------------------------------------------------------- /AndroidRunCpp/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | -------------------------------------------------------------------------------- /AndroidRunCpp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0) 2 | 3 | project(main) 4 | 5 | add_executable(${PROJECT_NAME} main.cpp ) -------------------------------------------------------------------------------- /AndroidRunCpp/build.sh: -------------------------------------------------------------------------------- 1 | export ANDROID_NDK=/home/thouger/Android/Sdk/ndk/25.1.8937393 2 | 3 | rm -r build 4 | mkdir build && cd build 5 | 6 | # cmake -DCMAKE_SYSTEM_NAME=Android \ 7 | # -DCMAKE_SYSTEM_VERSION=29 \ 8 | # -DCMAKE_ANDROID_ARCH_ABI=x86_64 \ 9 | # -DANDROID_NDK=$ANDROID_NDK \ 10 | # -DCMAKE_ANDROID_STL_TYPE=c++_shared \ 11 | # .. 12 | 13 | cmake \ 14 | -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ 15 | -DANDROID_ABI=x86_64 \ 16 | -DANDROID_PLATFORM=android-29 \ 17 | -DANDROID_STL=c++_shared \ 18 | .. 19 | 20 | cmake --build . -------------------------------------------------------------------------------- /AndroidRunCpp/main.cpp: -------------------------------------------------------------------------------- 1 | # include 2 | 3 | int main(int argc, char const *argv[]) 4 | { 5 | for(int i = 0; i < 5; ++i) 6 | std::cout << "Hello World" << std::endl; 7 | 8 | return 0; 9 | } 10 | -------------------------------------------------------------------------------- /ELFReader/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.17) 2 | project(ELFReader) 3 | set(CMAKE_CXX_STANDARD 11) 4 | SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) 5 | AUX_SOURCE_DIRECTORY(./ DIR_SRCS) 6 | ADD_EXECUTABLE(ELFReader ${DIR_SRCS} 7 | main.cpp 8 | ) -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | 1. 增加通过CMakeLists.txt编译so,而不是用Android.mk和Application.mk,这两个有点复杂. 2 | 2. xposed hook函数不用写类型方法 3 | 3. 输出所有设备指纹 4 | 4. 检测virtualapps 5 | 5. 用hidden api修改android 6 | 6. 内存漫游 7 | 7. native层hook所有jni方法 8 | 8. syscall获取mac地址 9 | 9. ptrace+seccomp拦截syscall的重定向 10 | 10. seccomp拦截syscall的例子 11 | 11. 隐藏maps 12 | 12. 增加一个binder代理的例子 13 | 13. 增加一个调用dobby.so的例子 14 | 14. 增加一个inlineHook检测例子 15 | 15. 增加一个自定义linker,失败,在linked_list.h文件的push_back函数报错,见另一个仓库,代码一样 16 | 17 | ## 增加Android Studio 使用 Rust 例子 18 | 1. cargo install cargo-ndk 19 | 2. rustup target install aarch64-linux-android 20 | 21 | ## 增加使用rust检测crc的例子 22 | 1. rustup toolchain install 1.67.0 23 | 2. rustup override unset 24 | 3. rustup default 1.67.0 25 | 4. cargo install cargo-ndk 26 | 5. rustup target install aarch64-linux-android -------------------------------------------------------------------------------- /_hook/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /_hook/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /_hook/src/androidTest/java/thouger/hook/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package thouger.hook 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("thouger.hook", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /_hook/src/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.18.1) 2 | enable_language(C ASM) 3 | # Declares and names the project. 4 | 5 | project("hook") 6 | 7 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}) 8 | 9 | ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/cpp/) 10 | ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/cpp/hello) 11 | ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/cpp/other) 12 | ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/cpp/native_hook) 13 | #ADD_SUBDIRECTORY(${HomePath}/nativeLib/src/main/cpp/ nativeLib.out) -------------------------------------------------------------------------------- /_hook/src/main/assets/native_init: -------------------------------------------------------------------------------- 1 | libnative_hook.so -------------------------------------------------------------------------------- /_hook/src/main/assets/xposed_init: -------------------------------------------------------------------------------- 1 | com.hook.hook -------------------------------------------------------------------------------- /_hook/src/main/cpp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | cmake_minimum_required(VERSION 3.22.1) 3 | 4 | project("hook") 5 | 6 | add_library( 7 | ${CMAKE_PROJECT_NAME} SHARED 8 | # List C/C++ source files with relative paths to this CMakeLists.txt. 9 | ./native-lib.cpp 10 | ) 11 | 12 | target_link_libraries(${CMAKE_PROJECT_NAME} 13 | # List libraries link to the target library 14 | android 15 | log) -------------------------------------------------------------------------------- /_hook/src/main/cpp/hello/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #继承上一层的CMakeLists.txt的变量,也可以在这里重新赋值 2 | #C 的编译选项是 CMAKE_C_FLAGS 3 | # 指定编译参数,可选 4 | #SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign") 5 | 6 | #生成动态库名称、类型、资源文件 7 | add_library(hello SHARED hello.cpp) 8 | #依赖库 9 | find_library(log-lib log) 10 | # 11 | target_link_libraries(hello ${log-lib}) -------------------------------------------------------------------------------- /_hook/src/main/cpp/hello/hello.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "../other/other.cpp" 4 | 5 | extern "C" JNIEXPORT jstring JNICALL 6 | Java_thouger_MainActivity_stringFromJNI( 7 | JNIEnv* env, 8 | jobject /* this */) { 9 | // std::string hello = "Hello from C++"; 10 | std::string hello = test(); 11 | printf("%s",hello.c_str()); 12 | return env->NewStringUTF(hello.c_str()); 13 | } -------------------------------------------------------------------------------- /_hook/src/main/cpp/native-lib.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" JNIEXPORT jstring JNICALL 5 | Java_com_android_study_MainActivity_stringFromJNI( 6 | JNIEnv* env, 7 | jobject /* this */) { 8 | std::string hello = "Hello from C++"; 9 | return env->NewStringUTF(hello.c_str()); 10 | } -------------------------------------------------------------------------------- /_hook/src/main/cpp/native_hook/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #继承上一层的CMakeLists.txt的变量,也可以在这里重新赋值 2 | #C 的编译选项是 CMAKE_C_FLAGS 3 | # 指定编译参数,可选 4 | #SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign") 5 | 6 | #生成动态库名称、类型、资源文件 7 | add_library( 8 | native_hook 9 | SHARED 10 | native_hook.cpp 11 | ) 12 | #依赖库 13 | find_library(log-lib log) 14 | # 15 | target_link_libraries(native_hook ${log-lib}) -------------------------------------------------------------------------------- /_hook/src/main/cpp/native_hook/native_hook.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "../logging.h" 9 | 10 | typedef int (*HookFunType)(void *func, void *replace, void **backup); 11 | 12 | typedef int (*UnhookFunType)(void *func); 13 | 14 | typedef void (*NativeOnModuleLoaded)(const char *name, void *handle); 15 | 16 | typedef struct { 17 | uint32_t version; 18 | HookFunType hook_func; 19 | UnhookFunType unhook_func; 20 | } NativeAPIEntries; 21 | 22 | //typedef NativeOnModuleLoaded (*NativeInit)(const NativeAPIEntries *entries); 23 | 24 | extern "C" [[gnu::visibility("default")]] [[gnu::used]] 25 | NativeOnModuleLoaded native_init(const NativeAPIEntries *entries); -------------------------------------------------------------------------------- /_hook/src/main/cpp/other/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #继承上一层的CMakeLists.txt的变量,也可以在这里重新赋值 2 | #C 的编译选项是 CMAKE_C_FLAGS 3 | # 指定编译参数,可选 4 | #SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign") 5 | 6 | #生成动态库名称、类型、资源文件 7 | add_library(other SHARED other.cpp) 8 | #依赖库 9 | find_library(log-lib log) 10 | # 11 | target_link_libraries(hello ${log-lib}) -------------------------------------------------------------------------------- /_hook/src/main/cpp/other/other.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" JNIEXPORT std::basic_string, std::allocator> JNICALL 5 | Java_thouger_MainActivity_other( 6 | JNIEnv* env, 7 | jobject /* this */) { 8 | std::string other = "other"; 9 | return other; 10 | } 11 | 12 | std::string test(){ 13 | std::string other = "other"; 14 | return other; 15 | } -------------------------------------------------------------------------------- /_hook/src/main/java/com/hook/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hook; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.os.Bundle; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } -------------------------------------------------------------------------------- /_hook/src/main/java/thouger/hook/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package thouger.hook 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class MainActivity : AppCompatActivity() { 7 | override fun onCreate(savedInstanceState: Bundle?) { 8 | super.onCreate(savedInstanceState) 9 | setContentView(R.layout.activity_main) 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-anydpi/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-anydpi/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /_hook/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thouger/android_study/8f82425ff96afeb7989d6beea98cd0da20ca5109/_hook/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /_hook/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /_hook/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | -------------------------------------------------------------------------------- /_hook/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | hook 3 | -------------------------------------------------------------------------------- /_hook/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | android_study 3 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 7 | -------------------------------------------------------------------------------- /hook/src/main/res/values-v23/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /hook/src/main/res/values-w1240dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 200dp 3 | -------------------------------------------------------------------------------- /hook/src/main/res/values-w600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 48dp 3 | -------------------------------------------------------------------------------- /hook/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | -------------------------------------------------------------------------------- /hook/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | -------------------------------------------------------------------------------- /hook/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 |