├── .gitignore ├── .idea ├── .gitignore ├── caches │ └── build_file_checksums.ser ├── compiler.xml ├── gradle.xml ├── jarRepositories.xml ├── misc.xml └── vcs.xml ├── MikSdHook ├── .gitignore ├── .idea │ ├── .gitignore │ ├── caches │ │ └── build_file_checksums.ser │ ├── compiler.xml │ ├── gradle.xml │ ├── jarRepositories.xml │ ├── misc.xml │ └── vcs.xml ├── LICENSE.txt ├── README.md ├── annotation │ ├── .gitignore │ ├── build.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── swift │ │ └── sandhook │ │ └── annotation │ │ ├── HookClass.java │ │ ├── HookMethod.java │ │ ├── HookMethodBackup.java │ │ ├── HookMode.java │ │ ├── HookReflectClass.java │ │ ├── MethodParams.java │ │ ├── MethodReflectParams.java │ │ ├── Param.java │ │ ├── SkipParamCheck.java │ │ └── ThisObject.java ├── app │ ├── .gitignore │ ├── CMakeLists.txt │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── swift │ │ │ └── sandhook │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── swift │ │ │ │ └── sandhook │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyApp.java │ │ │ │ ├── test │ │ │ │ ├── Inter.java │ │ │ │ ├── InterImpl.java │ │ │ │ ├── PendingHookTest.java │ │ │ │ └── TestClass.java │ │ │ │ └── testHookers │ │ │ │ ├── ActivityHooker.java │ │ │ │ ├── CtrHook.java │ │ │ │ ├── CustmizeHooker.java │ │ │ │ ├── JniHooker.java │ │ │ │ ├── LogHooker.java │ │ │ │ ├── NewAnnotationApiHooker.java │ │ │ │ └── ObjectHooker.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ └── content_main.xml │ │ │ ├── menu │ │ │ └── menu_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── swift │ │ └── sandhook │ │ └── ExampleUnitTest.java ├── build.gradle ├── built │ ├── arm64-v8a │ │ ├── libsandhook-native.so │ │ └── libsandhook.so │ └── armeabi-v7a │ │ ├── libsandhook-native.so │ │ └── libsandhook.so ├── doc │ ├── doc.md │ └── res │ │ ├── inline_flow.png │ │ ├── pc_relate.png │ │ └── sandhook_arch.png ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hookers │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── swift │ │ │ └── sandhook │ │ │ └── hookers │ │ │ ├── AbsHooker.java │ │ │ └── PluginHooker.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── hooklib │ ├── .cxx │ │ ├── abi_configuration_3v5r342g.json │ │ ├── abi_configuration_3v5r342g.log │ │ ├── abi_configuration_3v5r342g_key.json │ │ ├── abi_configuration_4jvc6i6b.json │ │ ├── abi_configuration_4jvc6i6b.log │ │ ├── abi_configuration_4jvc6i6b_key.json │ │ ├── cmake │ │ │ ├── debug │ │ │ │ ├── arm64-v8a │ │ │ │ │ ├── .ninja_deps │ │ │ │ │ ├── .ninja_log │ │ │ │ │ ├── CMakeCache.txt │ │ │ │ │ ├── CMakeFiles │ │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ │ ├── feature_tests.cxx │ │ │ │ │ │ └── sandhook.dir │ │ │ │ │ │ │ ├── art │ │ │ │ │ │ │ ├── art_compiler_options.cpp.o │ │ │ │ │ │ │ └── art_method.cpp.o │ │ │ │ │ │ │ ├── casts │ │ │ │ │ │ │ ├── cast_art_method.cpp.o │ │ │ │ │ │ │ └── cast_compiler_options.cpp.o │ │ │ │ │ │ │ ├── inst │ │ │ │ │ │ │ ├── insts_arm32.cpp.o │ │ │ │ │ │ │ └── insts_arm64.cpp.o │ │ │ │ │ │ │ ├── nativehook │ │ │ │ │ │ │ └── native_hook.cpp.o │ │ │ │ │ │ │ ├── sandhook.cpp.o │ │ │ │ │ │ │ ├── trampoline │ │ │ │ │ │ │ ├── arch │ │ │ │ │ │ │ │ ├── arm32.S.o │ │ │ │ │ │ │ │ └── arm64.S.o │ │ │ │ │ │ │ ├── trampoline.cpp.o │ │ │ │ │ │ │ └── trampoline_manager.cpp.o │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── dlfcn_nougat.cpp.o │ │ │ │ │ │ │ ├── elf_util.cpp.o │ │ │ │ │ │ │ ├── hide_api.cpp.o │ │ │ │ │ │ │ ├── offset.cpp.o │ │ │ │ │ │ │ └── utils.cpp.o │ │ │ │ │ ├── android_gradle_build.json │ │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ │ ├── android_gradle_build_sandhook_arm64-v8a.command.txt │ │ │ │ │ ├── android_gradle_build_sandhook_arm64-v8a.stderr.txt │ │ │ │ │ ├── android_gradle_build_sandhook_arm64-v8a.stdout.txt │ │ │ │ │ ├── build.ninja │ │ │ │ │ ├── build_command.txt │ │ │ │ │ ├── build_model.json │ │ │ │ │ ├── build_output.txt │ │ │ │ │ ├── cmake_install.cmake │ │ │ │ │ ├── cmake_server_log.txt │ │ │ │ │ ├── compile_commands.json │ │ │ │ │ ├── json_generation_record.json │ │ │ │ │ ├── prefab_config.json │ │ │ │ │ └── rules.ninja │ │ │ │ └── armeabi-v7a │ │ │ │ │ ├── .ninja_deps │ │ │ │ │ ├── .ninja_log │ │ │ │ │ ├── CMakeCache.txt │ │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ ├── feature_tests.cxx │ │ │ │ │ └── sandhook.dir │ │ │ │ │ │ ├── art │ │ │ │ │ │ ├── art_compiler_options.cpp.o │ │ │ │ │ │ └── art_method.cpp.o │ │ │ │ │ │ ├── casts │ │ │ │ │ │ ├── cast_art_method.cpp.o │ │ │ │ │ │ └── cast_compiler_options.cpp.o │ │ │ │ │ │ ├── inst │ │ │ │ │ │ ├── insts_arm32.cpp.o │ │ │ │ │ │ └── insts_arm64.cpp.o │ │ │ │ │ │ ├── nativehook │ │ │ │ │ │ └── native_hook.cpp.o │ │ │ │ │ │ ├── sandhook.cpp.o │ │ │ │ │ │ ├── trampoline │ │ │ │ │ │ ├── arch │ │ │ │ │ │ │ ├── arm32.S.o │ │ │ │ │ │ │ └── arm64.S.o │ │ │ │ │ │ ├── trampoline.cpp.o │ │ │ │ │ │ └── trampoline_manager.cpp.o │ │ │ │ │ │ └── utils │ │ │ │ │ │ ├── dlfcn_nougat.cpp.o │ │ │ │ │ │ ├── elf_util.cpp.o │ │ │ │ │ │ ├── hide_api.cpp.o │ │ │ │ │ │ ├── offset.cpp.o │ │ │ │ │ │ └── utils.cpp.o │ │ │ │ │ ├── android_gradle_build.json │ │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ │ ├── android_gradle_build_sandhook_armeabi-v7a.command.txt │ │ │ │ │ ├── android_gradle_build_sandhook_armeabi-v7a.stderr.txt │ │ │ │ │ ├── android_gradle_build_sandhook_armeabi-v7a.stdout.txt │ │ │ │ │ ├── build.ninja │ │ │ │ │ ├── build_command.txt │ │ │ │ │ ├── build_model.json │ │ │ │ │ ├── build_output.txt │ │ │ │ │ ├── cmake_install.cmake │ │ │ │ │ ├── cmake_server_log.txt │ │ │ │ │ ├── compile_commands.json │ │ │ │ │ ├── json_generation_record.json │ │ │ │ │ ├── prefab_config.json │ │ │ │ │ └── rules.ninja │ │ │ └── release │ │ │ │ ├── arm64-v8a │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ └── feature_tests.cxx │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ │ │ └── armeabi-v7a │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ ├── 3.10.2 │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ ├── CMakeOutput.log │ │ │ │ ├── TargetDirectories.txt │ │ │ │ ├── cmake.check_cache │ │ │ │ ├── feature_tests.bin │ │ │ │ ├── feature_tests.c │ │ │ │ └── feature_tests.cxx │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ └── ndk_locator_record.json │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── cpp │ │ ├── CMakeLists.txt │ │ ├── art │ │ │ ├── art_compiler_options.cpp │ │ │ └── art_method.cpp │ │ ├── casts │ │ │ ├── cast_art_method.cpp │ │ │ └── cast_compiler_options.cpp │ │ ├── includes │ │ │ ├── arch.h │ │ │ ├── arch_base.h │ │ │ ├── art_compiler_options.h │ │ │ ├── art_jit.h │ │ │ ├── art_method.h │ │ │ ├── art_runtime.h │ │ │ ├── cast.h │ │ │ ├── cast_art_method.h │ │ │ ├── cast_compiler_options.h │ │ │ ├── dlfcn_nougat.h │ │ │ ├── elf_util.h │ │ │ ├── hide_api.h │ │ │ ├── inst.h │ │ │ ├── log.h │ │ │ ├── native_hook.h │ │ │ ├── never_call.h │ │ │ ├── offset.h │ │ │ ├── sandhook.h │ │ │ ├── trampoline.h │ │ │ ├── trampoline_manager.h │ │ │ └── utils.h │ │ ├── inst │ │ │ ├── insts_arm32.cpp │ │ │ └── insts_arm64.cpp │ │ ├── nativehook │ │ │ └── native_hook.cpp │ │ ├── sandhook.cpp │ │ ├── trampoline │ │ │ ├── arch │ │ │ │ ├── arm32.S │ │ │ │ └── arm64.S │ │ │ ├── trampoline.cpp │ │ │ └── trampoline_manager.cpp │ │ └── utils │ │ │ ├── dlfcn_nougat.cpp │ │ │ ├── elf_util.cpp │ │ │ ├── hide_api.cpp │ │ │ ├── lock.h │ │ │ ├── offset.cpp │ │ │ └── utils.cpp │ │ ├── java │ │ └── com │ │ │ └── swift │ │ │ └── sandhook │ │ │ ├── ArtMethodSizeTest.java │ │ │ ├── ClassNeverCall.java │ │ │ ├── HookLog.java │ │ │ ├── PendingHookHandler.java │ │ │ ├── SandHook.java │ │ │ ├── SandHookConfig.java │ │ │ ├── SandHookMethodResolver.java │ │ │ ├── blacklist │ │ │ └── HookBlackList.java │ │ │ ├── utils │ │ │ ├── ArtDexOptimizer.java │ │ │ ├── ClassStatusUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── ParamWrapper.java │ │ │ ├── ReflectionUtils.java │ │ │ └── Unsafe.java │ │ │ └── wrapper │ │ │ ├── HookErrorException.java │ │ │ ├── HookWrapper.java │ │ │ └── StubMethodsFactory.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── nativehook │ ├── .cxx │ │ ├── abi_configuration_2g5g2v65.json │ │ ├── abi_configuration_2g5g2v65.log │ │ ├── abi_configuration_2g5g2v65_key.json │ │ ├── abi_configuration_6d3n85pz.json │ │ ├── abi_configuration_6d3n85pz.log │ │ ├── abi_configuration_6d3n85pz_key.json │ │ ├── cmake │ │ │ ├── debug │ │ │ │ ├── arm64-v8a │ │ │ │ │ ├── .ninja_deps │ │ │ │ │ ├── .ninja_log │ │ │ │ │ ├── CMakeCache.txt │ │ │ │ │ ├── CMakeFiles │ │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ │ ├── feature_tests.cxx │ │ │ │ │ │ └── sandhook-native.dir │ │ │ │ │ │ │ ├── archs │ │ │ │ │ │ │ └── arm │ │ │ │ │ │ │ │ └── arm64 │ │ │ │ │ │ │ │ ├── assembler │ │ │ │ │ │ │ │ └── assembler_arm64.cpp.o │ │ │ │ │ │ │ │ ├── decoder │ │ │ │ │ │ │ │ └── decoder_arm64.cpp.o │ │ │ │ │ │ │ │ ├── hook │ │ │ │ │ │ │ │ └── hook_arm64.cpp.o │ │ │ │ │ │ │ │ ├── inst │ │ │ │ │ │ │ │ └── inst_arm64.cpp.o │ │ │ │ │ │ │ │ ├── register │ │ │ │ │ │ │ │ ├── register_arm64.cpp.o │ │ │ │ │ │ │ │ └── register_list_arm64.cpp.o │ │ │ │ │ │ │ │ └── relocate │ │ │ │ │ │ │ │ └── code_relocate_arm64.cpp.o │ │ │ │ │ │ │ ├── assembler │ │ │ │ │ │ │ └── assembler.cpp.o │ │ │ │ │ │ │ ├── buffer │ │ │ │ │ │ │ └── code_buffer.cpp.o │ │ │ │ │ │ │ ├── decoder │ │ │ │ │ │ │ └── decoder.cpp.o │ │ │ │ │ │ │ ├── elf │ │ │ │ │ │ │ └── elf.cpp.o │ │ │ │ │ │ │ ├── hook │ │ │ │ │ │ │ └── hook.cpp.o │ │ │ │ │ │ │ ├── relocate │ │ │ │ │ │ │ └── code_relocate.cpp.o │ │ │ │ │ │ │ ├── sandhook_native.cpp.o │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── platform.cpp.o │ │ │ │ │ ├── android_gradle_build.json │ │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ │ ├── android_gradle_build_sandhook-native_arm64-v8a.command.txt │ │ │ │ │ ├── android_gradle_build_sandhook-native_arm64-v8a.stderr.txt │ │ │ │ │ ├── android_gradle_build_sandhook-native_arm64-v8a.stdout.txt │ │ │ │ │ ├── build.ninja │ │ │ │ │ ├── build_command.txt │ │ │ │ │ ├── build_model.json │ │ │ │ │ ├── build_output.txt │ │ │ │ │ ├── cmake_install.cmake │ │ │ │ │ ├── cmake_server_log.txt │ │ │ │ │ ├── compile_commands.json │ │ │ │ │ ├── json_generation_record.json │ │ │ │ │ ├── prefab_config.json │ │ │ │ │ └── rules.ninja │ │ │ │ └── armeabi-v7a │ │ │ │ │ ├── .ninja_deps │ │ │ │ │ ├── .ninja_log │ │ │ │ │ ├── CMakeCache.txt │ │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ ├── feature_tests.cxx │ │ │ │ │ └── sandhook-native.dir │ │ │ │ │ │ ├── archs │ │ │ │ │ │ └── arm │ │ │ │ │ │ │ └── arm32 │ │ │ │ │ │ │ ├── assembler │ │ │ │ │ │ │ └── assembler_arm32.cpp.o │ │ │ │ │ │ │ ├── decoder │ │ │ │ │ │ │ └── decoder_arm32.cpp.o │ │ │ │ │ │ │ ├── hook │ │ │ │ │ │ │ ├── breakpoint_shellcode.S.o │ │ │ │ │ │ │ └── hook_arm32.cpp.o │ │ │ │ │ │ │ ├── inst │ │ │ │ │ │ │ ├── inst_arm32.cpp.o │ │ │ │ │ │ │ ├── inst_t16.cpp.o │ │ │ │ │ │ │ └── inst_t32.cpp.o │ │ │ │ │ │ │ ├── register │ │ │ │ │ │ │ ├── register_arm32.cpp.o │ │ │ │ │ │ │ └── register_list_arm32.cpp.o │ │ │ │ │ │ │ └── relocate │ │ │ │ │ │ │ └── code_relocate_arm32.cpp.o │ │ │ │ │ │ ├── assembler │ │ │ │ │ │ └── assembler.cpp.o │ │ │ │ │ │ ├── buffer │ │ │ │ │ │ └── code_buffer.cpp.o │ │ │ │ │ │ ├── decoder │ │ │ │ │ │ └── decoder.cpp.o │ │ │ │ │ │ ├── elf │ │ │ │ │ │ └── elf.cpp.o │ │ │ │ │ │ ├── hook │ │ │ │ │ │ └── hook.cpp.o │ │ │ │ │ │ ├── relocate │ │ │ │ │ │ └── code_relocate.cpp.o │ │ │ │ │ │ ├── sandhook_native.cpp.o │ │ │ │ │ │ └── utils │ │ │ │ │ │ └── platform.cpp.o │ │ │ │ │ ├── android_gradle_build.json │ │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ │ ├── android_gradle_build_sandhook-native_armeabi-v7a.command.txt │ │ │ │ │ ├── android_gradle_build_sandhook-native_armeabi-v7a.stderr.txt │ │ │ │ │ ├── android_gradle_build_sandhook-native_armeabi-v7a.stdout.txt │ │ │ │ │ ├── build.ninja │ │ │ │ │ ├── build_command.txt │ │ │ │ │ ├── build_model.json │ │ │ │ │ ├── build_output.txt │ │ │ │ │ ├── cmake_install.cmake │ │ │ │ │ ├── cmake_server_log.txt │ │ │ │ │ ├── compile_commands.json │ │ │ │ │ ├── json_generation_record.json │ │ │ │ │ ├── prefab_config.json │ │ │ │ │ └── rules.ninja │ │ │ └── release │ │ │ │ ├── arm64-v8a │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ └── feature_tests.cxx │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ │ │ └── armeabi-v7a │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ ├── 3.10.2 │ │ │ │ │ ├── CMakeASMCompiler.cmake │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ ├── CMakeOutput.log │ │ │ │ ├── TargetDirectories.txt │ │ │ │ ├── cmake.check_cache │ │ │ │ ├── feature_tests.bin │ │ │ │ ├── feature_tests.c │ │ │ │ └── feature_tests.cxx │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ └── ndk_locator_record.json │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── cpp │ │ ├── CMakeLists.txt │ │ ├── archs │ │ │ ├── arm │ │ │ │ ├── arm32 │ │ │ │ │ ├── assembler │ │ │ │ │ │ ├── assembler_arm32.cpp │ │ │ │ │ │ └── assembler_arm32.h │ │ │ │ │ ├── decoder │ │ │ │ │ │ ├── decoder_arm32.cpp │ │ │ │ │ │ └── decoder_arm32.h │ │ │ │ │ ├── hook │ │ │ │ │ │ ├── breakpoint_shellcode.S │ │ │ │ │ │ ├── hook_arm32.cpp │ │ │ │ │ │ └── hook_arm32.h │ │ │ │ │ ├── inst │ │ │ │ │ │ ├── arm32_base.h │ │ │ │ │ │ ├── inst_arm32.cpp │ │ │ │ │ │ ├── inst_arm32.h │ │ │ │ │ │ ├── inst_code_arm32.h │ │ │ │ │ │ ├── inst_struct_a32.h │ │ │ │ │ │ ├── inst_struct_t16.h │ │ │ │ │ │ ├── inst_struct_t32.h │ │ │ │ │ │ ├── inst_t16.cpp │ │ │ │ │ │ ├── inst_t16.h │ │ │ │ │ │ ├── inst_t32.cpp │ │ │ │ │ │ └── inst_t32.h │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register_arm32.cpp │ │ │ │ │ │ ├── register_arm32.h │ │ │ │ │ │ ├── register_list_arm32.cpp │ │ │ │ │ │ └── register_list_arm32.h │ │ │ │ │ └── relocate │ │ │ │ │ │ ├── code_relocate_arm32.cpp │ │ │ │ │ │ └── code_relocate_arm32.h │ │ │ │ ├── arm64 │ │ │ │ │ ├── assembler │ │ │ │ │ │ ├── assembler_arm64.cpp │ │ │ │ │ │ └── assembler_arm64.h │ │ │ │ │ ├── decoder │ │ │ │ │ │ ├── decoder_arm64.cpp │ │ │ │ │ │ └── decoder_arm64.h │ │ │ │ │ ├── hook │ │ │ │ │ │ ├── hook_arm64.cpp │ │ │ │ │ │ └── hook_arm64.h │ │ │ │ │ ├── inst │ │ │ │ │ │ ├── inst_arm64.cpp │ │ │ │ │ │ ├── inst_arm64.h │ │ │ │ │ │ ├── inst_code_arm64.h │ │ │ │ │ │ └── inst_struct_aarch64.h │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register_arm64.cpp │ │ │ │ │ │ ├── register_arm64.h │ │ │ │ │ │ ├── register_list_arm64.cpp │ │ │ │ │ │ └── register_list_arm64.h │ │ │ │ │ └── relocate │ │ │ │ │ │ ├── code_relocate_arm64.cpp │ │ │ │ │ │ └── code_relocate_arm64.h │ │ │ │ ├── arm_base.h │ │ │ │ └── shellcode_arm.h │ │ │ └── x86 │ │ │ │ └── place_holder.h │ │ ├── asm │ │ │ ├── cpu.h │ │ │ ├── data.h │ │ │ ├── instruction.h │ │ │ ├── label.h │ │ │ ├── ram.h │ │ │ ├── register.h │ │ │ └── unit.h │ │ ├── assembler │ │ │ └── assembler.cpp │ │ ├── buffer │ │ │ ├── code_buffer.cpp │ │ │ └── code_buffer.h │ │ ├── decoder │ │ │ └── decoder.cpp │ │ ├── elf │ │ │ └── elf.cpp │ │ ├── hook │ │ │ └── hook.cpp │ │ ├── includes │ │ │ ├── assembler.h │ │ │ ├── base.h │ │ │ ├── code_relocate.h │ │ │ ├── compiler.h │ │ │ ├── decoder.h │ │ │ ├── elf.h │ │ │ ├── exception.h │ │ │ └── hook.h │ │ ├── relocate │ │ │ └── code_relocate.cpp │ │ ├── sandhook_native.cpp │ │ ├── sandhook_native.h │ │ └── utils │ │ │ ├── lock.h │ │ │ ├── log.h │ │ │ ├── platform.cpp │ │ │ └── platform.h │ │ ├── java │ │ └── com │ │ │ └── swift │ │ │ └── sandhook │ │ │ └── nativehook │ │ │ └── NativeHook.java │ │ └── res │ │ └── values │ │ └── strings.xml ├── settings.gradle ├── xposedcompat │ ├── .gitignore │ ├── build.gradle │ ├── genhookstubs.py │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ ├── com │ │ │ ├── android │ │ │ │ ├── dx │ │ │ │ │ ├── AnnotationId.java │ │ │ │ │ ├── AppDataDirGuesser.java │ │ │ │ │ ├── BinaryOp.java │ │ │ │ │ ├── Code.java │ │ │ │ │ ├── Comparison.java │ │ │ │ │ ├── Constants.java │ │ │ │ │ ├── DexMaker.java │ │ │ │ │ ├── FieldId.java │ │ │ │ │ ├── Label.java │ │ │ │ │ ├── Local.java │ │ │ │ │ ├── MethodId.java │ │ │ │ │ ├── TypeId.java │ │ │ │ │ ├── TypeList.java │ │ │ │ │ ├── UnaryOp.java │ │ │ │ │ └── stock │ │ │ │ │ │ └── ProxyBuilder.java │ │ │ │ └── internal │ │ │ │ │ └── util │ │ │ │ │ └── XmlUtils.java │ │ │ └── swift │ │ │ │ └── sandhook │ │ │ │ └── xposedcompat │ │ │ │ ├── XposedCompat.java │ │ │ │ ├── classloaders │ │ │ │ └── ProxyClassLoader.java │ │ │ │ ├── hookstub │ │ │ │ ├── CallOriginCallBack.java │ │ │ │ ├── HookMethodEntity.java │ │ │ │ ├── HookStubManager.java │ │ │ │ ├── MethodHookerStubs32.java │ │ │ │ └── MethodHookerStubs64.java │ │ │ │ ├── methodgen │ │ │ │ ├── DynamicBridge.java │ │ │ │ ├── ErrorCatch.java │ │ │ │ ├── HookMaker.java │ │ │ │ ├── HookerDexMaker.java │ │ │ │ └── HookerDexMakerNew.java │ │ │ │ └── utils │ │ │ │ ├── ApplicationUtils.java │ │ │ │ ├── DexLog.java │ │ │ │ ├── DexMakerUtils.java │ │ │ │ ├── FileUtils.java │ │ │ │ └── ProcessUtils.java │ │ ├── de │ │ │ └── robv │ │ │ │ └── android │ │ │ │ └── xposed │ │ │ │ ├── IXposedHookCmdInit.java │ │ │ │ ├── IXposedHookInitPackageResources.java │ │ │ │ ├── IXposedHookLoadPackage.java │ │ │ │ ├── IXposedHookZygoteInit.java │ │ │ │ ├── IXposedMod.java │ │ │ │ ├── MIK_MethodHk.java │ │ │ │ ├── MikXpHelpers.java │ │ │ │ ├── SELinuxHelper.java │ │ │ │ ├── XC_MethodReplacement.java │ │ │ │ ├── XSharedPreferences.java │ │ │ │ ├── XposedBridge.java │ │ │ │ ├── XposedInit.java │ │ │ │ ├── callbacks │ │ │ │ ├── IXUnhook.java │ │ │ │ ├── XC_InitPackageResources.java │ │ │ │ ├── XC_LayoutInflated.java │ │ │ │ ├── XC_LoadPackage.java │ │ │ │ ├── XCallback.java │ │ │ │ └── package-info.java │ │ │ │ └── services │ │ │ │ ├── BaseService.java │ │ │ │ ├── DirectAccessService.java │ │ │ │ └── FileResult.java │ │ └── external │ │ │ └── org │ │ │ └── apache │ │ │ └── commons │ │ │ └── lang3 │ │ │ ├── ArrayUtils.java │ │ │ ├── CharSequenceUtils.java │ │ │ ├── CharUtils.java │ │ │ ├── ClassUtils.java │ │ │ ├── JavaVersion.java │ │ │ ├── ObjectUtils.java │ │ │ ├── StringUtils.java │ │ │ ├── SystemUtils.java │ │ │ ├── Validate.java │ │ │ ├── builder │ │ │ ├── Builder.java │ │ │ ├── CompareToBuilder.java │ │ │ ├── EqualsBuilder.java │ │ │ ├── HashCodeBuilder.java │ │ │ ├── IDKey.java │ │ │ ├── ReflectionToStringBuilder.java │ │ │ ├── ToStringBuilder.java │ │ │ └── ToStringStyle.java │ │ │ ├── exception │ │ │ └── CloneFailedException.java │ │ │ ├── mutable │ │ │ ├── Mutable.java │ │ │ └── MutableInt.java │ │ │ ├── reflect │ │ │ ├── MemberUtils.java │ │ │ └── MethodUtils.java │ │ │ └── tuple │ │ │ ├── ImmutablePair.java │ │ │ └── Pair.java │ │ └── res │ │ └── values │ │ └── strings.xml └── xposedcompat_new │ ├── .gitignore │ ├── CMakeLists.txt │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── cpp │ ├── art_jni_trampoline.cpp │ ├── art_jni_trampoline.h │ └── libffi │ │ ├── aarch64 │ │ ├── ffi_arm64.c │ │ ├── internal.h │ │ └── sysv_arm64.S │ │ ├── arm │ │ ├── ffi_armv7.c │ │ ├── internal.h │ │ └── sysv_armv7.S │ │ ├── closures.c │ │ ├── debug.c │ │ ├── dlmalloc.c │ │ ├── ffi.h │ │ ├── ffi_cfi.h │ │ ├── ffi_common.h │ │ ├── ffi_cxx.cc │ │ ├── ffi_cxx.h │ │ ├── fficonfig.h │ │ ├── ffitarget.h │ │ ├── java_raw_api.c │ │ ├── platform_include │ │ ├── ffi_arm64.h │ │ ├── ffi_armv7.h │ │ ├── ffi_i386.h │ │ ├── ffi_x86_64.h │ │ ├── fficonfig_arm64.h │ │ ├── fficonfig_armv7.h │ │ ├── fficonfig_i386.h │ │ ├── fficonfig_x86_64.h │ │ ├── ffitarget_arm64.h │ │ ├── ffitarget_armv7.h │ │ ├── ffitarget_i386.h │ │ └── ffitarget_x86_64.h │ │ ├── prep_cif.c │ │ ├── raw_api.c │ │ └── types.c │ ├── java │ ├── com │ │ ├── android │ │ │ └── internal │ │ │ │ └── util │ │ │ │ └── XmlUtils.java │ │ └── swift │ │ │ └── sandhook │ │ │ └── xposedcompat │ │ │ ├── HookInfo.java │ │ │ ├── XposedCompat.java │ │ │ └── utils │ │ │ ├── ApplicationUtils.java │ │ │ ├── ClassUtils.java │ │ │ ├── ProcessUtils.java │ │ │ └── ProxyClassLoader.java │ ├── de │ │ └── robv │ │ │ └── android │ │ │ └── xposed │ │ │ ├── IXposedHookCmdInit.java │ │ │ ├── IXposedHookInitPackageResources.java │ │ │ ├── IXposedHookLoadPackage.java │ │ │ ├── IXposedHookZygoteInit.java │ │ │ ├── IXposedMod.java │ │ │ ├── SELinuxHelper.java │ │ │ ├── XC_MethodHook.java │ │ │ ├── XC_MethodReplacement.java │ │ │ ├── XSharedPreferences.java │ │ │ ├── XposedBridge.java │ │ │ ├── XposedHelpers.java │ │ │ ├── XposedInit.java │ │ │ ├── callbacks │ │ │ ├── IXUnhook.java │ │ │ ├── XC_InitPackageResources.java │ │ │ ├── XC_LayoutInflated.java │ │ │ ├── XC_LoadPackage.java │ │ │ ├── XCallback.java │ │ │ └── package-info.java │ │ │ └── services │ │ │ ├── BaseService.java │ │ │ ├── DirectAccessService.java │ │ │ └── FileResult.java │ └── external │ │ └── org │ │ └── apache │ │ └── commons │ │ └── lang3 │ │ ├── ArrayUtils.java │ │ ├── CharSequenceUtils.java │ │ ├── CharUtils.java │ │ ├── ClassUtils.java │ │ ├── JavaVersion.java │ │ ├── ObjectUtils.java │ │ ├── StringUtils.java │ │ ├── SystemUtils.java │ │ ├── Validate.java │ │ ├── builder │ │ ├── Builder.java │ │ ├── CompareToBuilder.java │ │ ├── EqualsBuilder.java │ │ ├── HashCodeBuilder.java │ │ ├── IDKey.java │ │ ├── ReflectionToStringBuilder.java │ │ ├── ToStringBuilder.java │ │ └── ToStringStyle.java │ │ ├── exception │ │ └── CloneFailedException.java │ │ ├── mutable │ │ ├── Mutable.java │ │ └── MutableInt.java │ │ ├── reflect │ │ ├── MemberUtils.java │ │ └── MethodUtils.java │ │ └── tuple │ │ ├── ImmutablePair.java │ │ └── Pair.java │ ├── jniLibs │ ├── arm64-v8a │ │ └── libsandhook-native.so │ └── armeabi-v7a │ │ └── libsandhook-native.so │ └── res │ └── values │ └── strings.xml ├── README.md ├── app ├── .cxx │ ├── abi_configuration_4c11233e.json │ ├── abi_configuration_4c11233e.log │ ├── abi_configuration_4c11233e_key.json │ ├── abi_configuration_4o5p5x6f.json │ ├── abi_configuration_4o5p5x6f.log │ ├── abi_configuration_4o5p5x6f_key.json │ ├── cmake │ │ ├── debug │ │ │ ├── arm64-v8a │ │ │ │ ├── .ninja_deps │ │ │ │ ├── .ninja_log │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ ├── feature_tests.cxx │ │ │ │ │ └── native-lib.dir │ │ │ │ │ │ └── native-lib.cpp.o │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── android_gradle_build_native-lib_arm64-v8a.command.txt │ │ │ │ ├── android_gradle_build_native-lib_arm64-v8a.stderr.txt │ │ │ │ ├── android_gradle_build_native-lib_arm64-v8a.stdout.txt │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ │ ├── armeabi-v7a │ │ │ │ ├── .ninja_deps │ │ │ │ ├── .ninja_log │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ ├── feature_tests.cxx │ │ │ │ │ └── native-lib.dir │ │ │ │ │ │ └── native-lib.cpp.o │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── android_gradle_build_native-lib_armeabi-v7a.command.txt │ │ │ │ ├── android_gradle_build_native-lib_armeabi-v7a.stderr.txt │ │ │ │ ├── android_gradle_build_native-lib_armeabi-v7a.stdout.txt │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ │ ├── x86 │ │ │ │ ├── .ninja_deps │ │ │ │ ├── .ninja_log │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.10.2 │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ │ ├── CMakeOutput.log │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ ├── feature_tests.bin │ │ │ │ │ ├── feature_tests.c │ │ │ │ │ ├── feature_tests.cxx │ │ │ │ │ └── native-lib.dir │ │ │ │ │ │ └── native-lib.cpp.o │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── android_gradle_build_native-lib_x86.command.txt │ │ │ │ ├── android_gradle_build_native-lib_x86.stderr.txt │ │ │ │ ├── android_gradle_build_native-lib_x86.stdout.txt │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ │ └── x86_64 │ │ │ │ ├── .ninja_deps │ │ │ │ ├── .ninja_log │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ ├── 3.10.2 │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ ├── CMakeOutput.log │ │ │ │ ├── TargetDirectories.txt │ │ │ │ ├── cmake.check_cache │ │ │ │ ├── feature_tests.bin │ │ │ │ ├── feature_tests.c │ │ │ │ ├── feature_tests.cxx │ │ │ │ └── native-lib.dir │ │ │ │ │ └── native-lib.cpp.o │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── android_gradle_build_native-lib_x86_64.command.txt │ │ │ │ ├── android_gradle_build_native-lib_x86_64.stderr.txt │ │ │ │ ├── android_gradle_build_native-lib_x86_64.stdout.txt │ │ │ │ ├── build.ninja │ │ │ │ ├── build_command.txt │ │ │ │ ├── build_model.json │ │ │ │ ├── build_output.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── cmake_server_log.txt │ │ │ │ ├── compile_commands.json │ │ │ │ ├── json_generation_record.json │ │ │ │ ├── prefab_config.json │ │ │ │ └── rules.ninja │ │ └── release │ │ │ ├── arm64-v8a │ │ │ ├── CMakeCache.txt │ │ │ ├── CMakeFiles │ │ │ │ ├── 3.10.2 │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ ├── CMakeOutput.log │ │ │ │ ├── TargetDirectories.txt │ │ │ │ ├── cmake.check_cache │ │ │ │ ├── feature_tests.bin │ │ │ │ ├── feature_tests.c │ │ │ │ └── feature_tests.cxx │ │ │ ├── android_gradle_build.json │ │ │ ├── android_gradle_build_mini.json │ │ │ ├── build.ninja │ │ │ ├── build_command.txt │ │ │ ├── build_model.json │ │ │ ├── build_output.txt │ │ │ ├── cmake_install.cmake │ │ │ ├── cmake_server_log.txt │ │ │ ├── compile_commands.json │ │ │ ├── json_generation_record.json │ │ │ ├── prefab_config.json │ │ │ └── rules.ninja │ │ │ ├── armeabi-v7a │ │ │ ├── CMakeCache.txt │ │ │ ├── CMakeFiles │ │ │ │ ├── 3.10.2 │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ ├── CMakeOutput.log │ │ │ │ ├── TargetDirectories.txt │ │ │ │ ├── cmake.check_cache │ │ │ │ ├── feature_tests.bin │ │ │ │ ├── feature_tests.c │ │ │ │ └── feature_tests.cxx │ │ │ ├── android_gradle_build.json │ │ │ ├── android_gradle_build_mini.json │ │ │ ├── build.ninja │ │ │ ├── build_command.txt │ │ │ ├── build_model.json │ │ │ ├── build_output.txt │ │ │ ├── cmake_install.cmake │ │ │ ├── cmake_server_log.txt │ │ │ ├── compile_commands.json │ │ │ ├── json_generation_record.json │ │ │ ├── prefab_config.json │ │ │ └── rules.ninja │ │ │ ├── x86 │ │ │ ├── CMakeCache.txt │ │ │ ├── CMakeFiles │ │ │ │ ├── 3.10.2 │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ └── CMakeSystem.cmake │ │ │ │ ├── CMakeOutput.log │ │ │ │ ├── TargetDirectories.txt │ │ │ │ ├── cmake.check_cache │ │ │ │ ├── feature_tests.bin │ │ │ │ ├── feature_tests.c │ │ │ │ └── feature_tests.cxx │ │ │ ├── android_gradle_build.json │ │ │ ├── android_gradle_build_mini.json │ │ │ ├── build.ninja │ │ │ ├── build_command.txt │ │ │ ├── build_model.json │ │ │ ├── build_output.txt │ │ │ ├── cmake_install.cmake │ │ │ ├── cmake_server_log.txt │ │ │ ├── compile_commands.json │ │ │ ├── json_generation_record.json │ │ │ ├── prefab_config.json │ │ │ └── rules.ninja │ │ │ └── x86_64 │ │ │ ├── CMakeCache.txt │ │ │ ├── CMakeFiles │ │ │ ├── 3.10.2 │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ └── CMakeSystem.cmake │ │ │ ├── CMakeOutput.log │ │ │ ├── TargetDirectories.txt │ │ │ ├── cmake.check_cache │ │ │ ├── feature_tests.bin │ │ │ ├── feature_tests.c │ │ │ └── feature_tests.cxx │ │ │ ├── android_gradle_build.json │ │ │ ├── android_gradle_build_mini.json │ │ │ ├── build.ninja │ │ │ ├── build_command.txt │ │ │ ├── build_model.json │ │ │ ├── build_output.txt │ │ │ ├── cmake_install.cmake │ │ │ ├── cmake_server_log.txt │ │ │ ├── compile_commands.json │ │ │ ├── json_generation_record.json │ │ │ ├── prefab_config.json │ │ │ └── rules.ninja │ ├── ndk_locator_record_3o456k3p.json │ ├── ndk_locator_record_3o456k3p.log │ └── ndk_locator_record_3o456k3p_key.json ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── mik │ │ └── miksandhook │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── cpp │ │ ├── CMakeLists.txt │ │ └── native-lib.cpp │ ├── java │ │ ├── cn │ │ │ └── mik │ │ │ │ └── IMikDex.java │ │ └── com │ │ │ └── mik │ │ │ └── miksandhook │ │ │ ├── Inject.java │ │ │ └── MainActivity.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values-night │ │ └── themes.xml │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── mik │ └── miksandhook │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/libraries 5 | /.idea/modules.xml 6 | /.idea/workspace.xml 7 | .DS_Store 8 | /build 9 | /captures 10 | .externalNativeBuild 11 | .idea 12 | .cxx -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /MikSdHook/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/libraries 5 | /.idea/modules.xml 6 | /.idea/workspace.xml 7 | .DS_Store 8 | /build 9 | /captures 10 | .externalNativeBuild 11 | -------------------------------------------------------------------------------- /MikSdHook/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /MikSdHook/.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /MikSdHook/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /MikSdHook/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /MikSdHook/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /MikSdHook/annotation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /MikSdHook/annotation/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | 3 | dependencies { 4 | implementation fileTree(dir: 'libs', include: ['*.jar']) 5 | } 6 | 7 | sourceCompatibility = "1.7" 8 | targetCompatibility = "1.7" 9 | 10 | ext { 11 | bintrayRepo = 'maven' 12 | bintrayName = 'swift-sandhook-annotation' 13 | } 14 | 15 | //apply plugin: 'com.novoda.bintray-release' 16 | // 17 | //publish { 18 | // userOrg = rootProject.userOrg 19 | // groupId = rootProject.groupId 20 | // artifactId = 'hookannotation' 21 | // publishVersion = rootProject.publishVersion 22 | // desc = rootProject.desc 23 | // website = rootProject.website 24 | // licences = rootProject.licences 25 | //} 26 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/HookClass.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.TYPE}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface HookClass { 11 | Class value(); 12 | } 13 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/HookMethod.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.METHOD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface HookMethod { 11 | String value() default ""; 12 | } 13 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/HookMethodBackup.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.METHOD,ElementType.FIELD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface HookMethodBackup { 11 | String value() default ""; 12 | } 13 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/HookMode.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.METHOD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface HookMode { 11 | 12 | int AUTO = 0; 13 | int INLINE = 1; 14 | int REPLACE = 2; 15 | 16 | int value() default AUTO; 17 | } 18 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/HookReflectClass.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.TYPE}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface HookReflectClass { 11 | String value(); 12 | } 13 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/MethodParams.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.METHOD,ElementType.FIELD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface MethodParams { 11 | Class[] value(); 12 | } -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/MethodReflectParams.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.METHOD,ElementType.FIELD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface MethodReflectParams { 11 | 12 | String BOOLEAN = "boolean"; 13 | String BYTE = "byte"; 14 | String CHAR = "char"; 15 | String DOUBLE = "double"; 16 | String FLOAT = "float"; 17 | String INT = "int"; 18 | String LONG = "long"; 19 | String SHORT = "short"; 20 | 21 | String[] value(); 22 | } -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/Param.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.PARAMETER}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface Param { 11 | String value() default ""; 12 | } 13 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/SkipParamCheck.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.METHOD, ElementType.FIELD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface SkipParamCheck { 11 | } 12 | -------------------------------------------------------------------------------- /MikSdHook/annotation/src/main/java/com/swift/sandhook/annotation/ThisObject.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target({ElementType.PARAMETER}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface ThisObject { 11 | } 12 | -------------------------------------------------------------------------------- /MikSdHook/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /MikSdHook/app/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 22 | -------------------------------------------------------------------------------- /MikSdHook/app/src/androidTest/java/com/swift/sandhook/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.swift.sandhook", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/java/com/swift/sandhook/test/Inter.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.test; 2 | 3 | public interface Inter { 4 | void dosth(); 5 | } 6 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/java/com/swift/sandhook/test/InterImpl.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.test; 2 | 3 | import android.util.Log; 4 | 5 | public class InterImpl implements Inter { 6 | @Override 7 | public void dosth() { 8 | Log.e("dosth", "sasa"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/java/com/swift/sandhook/test/PendingHookTest.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.test; 2 | 3 | import android.util.Log; 4 | 5 | import com.swift.sandhook.MyApp; 6 | 7 | public class PendingHookTest { 8 | 9 | static { 10 | if (!MyApp.initedTest) { 11 | throw new RuntimeException("PendingHookTest.class may can not init this time!"); 12 | } 13 | } 14 | 15 | public static void test() { 16 | Log.e("PendingHookTest", "hook failure!"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/java/com/swift/sandhook/test/TestClass.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.test; 2 | 3 | import com.swift.sandhook.MainActivity; 4 | 5 | public class TestClass { 6 | 7 | public int a = 1; 8 | int b = 2; 9 | 10 | public TestClass(int a) { 11 | this.a = a + 1; 12 | } 13 | 14 | public void add1 () { 15 | a++; 16 | b++; 17 | throw new RuntimeException("test exception"); 18 | } 19 | 20 | public void add2 () { 21 | a++; 22 | b++; 23 | } 24 | 25 | public void testNewHookApi (MainActivity activity, int x) { 26 | x++; 27 | a++; 28 | b++; 29 | } 30 | 31 | public native void jni_test(); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/java/com/swift/sandhook/testHookers/LogHooker.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.testHookers; 2 | 3 | import android.util.Log; 4 | 5 | import com.swift.sandhook.SandHook; 6 | import com.swift.sandhook.annotation.HookClass; 7 | import com.swift.sandhook.annotation.HookMethod; 8 | import com.swift.sandhook.annotation.HookMethodBackup; 9 | import com.swift.sandhook.annotation.Param; 10 | import com.swift.sandhook.annotation.SkipParamCheck; 11 | 12 | import java.lang.reflect.Method; 13 | 14 | @HookClass(Log.class) 15 | public class LogHooker { 16 | 17 | @HookMethodBackup("w") 18 | @SkipParamCheck 19 | static Method backup; 20 | 21 | @HookMethod("w") 22 | public static int onCreate(String tag, @Param("java.lang.String") Object msg) throws Throwable { 23 | Log.e("LogHooker", "hooked success " + tag); 24 | return (int) SandHook.callOriginByBackup(backup, null, tag, msg); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/java/com/swift/sandhook/testHookers/ObjectHooker.java: -------------------------------------------------------------------------------- 1 | package com.swift.sandhook.testHookers; 2 | 3 | import android.util.Log; 4 | 5 | import com.swift.sandhook.annotation.HookClass; 6 | import com.swift.sandhook.annotation.HookMethod; 7 | import com.swift.sandhook.annotation.HookMethodBackup; 8 | import com.swift.sandhook.annotation.HookMode; 9 | import com.swift.sandhook.wrapper.HookWrapper; 10 | 11 | @HookClass(Object.class) 12 | public class ObjectHooker { 13 | 14 | @HookMethodBackup("toString") 15 | static HookWrapper.HookEntity toStrHook; 16 | 17 | @HookMethod("toString") 18 | @HookMode(HookMode.INLINE) 19 | public static String toStr(Object thiz) throws Throwable { 20 | Log.e("ObjectHooker", "hooked success "); 21 | return (String) toStrHook.callOrigin(thiz); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/MikSdHook/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | 4 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | SandHook 3 | Settings 4 | 5 | -------------------------------------------------------------------------------- /MikSdHook/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | MikSandHook 3 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /app/src/test/java/com/mik/miksandhook/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.mik.miksandhook; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | buildscript { 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath "com.android.tools.build:gradle:4.1.2" 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | google() 18 | jcenter() 19 | } 20 | } 21 | 22 | task clean(type: Delete) { 23 | delete rootProject.buildDir 24 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dqzg12300/MikSandHook/e16ccf9759bfaec147a7f0ad4ed6a7cc032b1f00/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Mar 14 16:41:34 CST 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | rootProject.name = "MikSandHook" 3 | 4 | include ':MikSdHook:app',':MikSdHook:hooklib', 5 | ':MikSdHook:hookers',':MikSdHook:annotation', 6 | ':MikSdHook:xposedcompat',':MikSdHook:nativehook' 7 | --------------------------------------------------------------------------------