Files
Vita3K/.gitmodules
T
Francisco José García García 74eec2333d taiHEN: Implement HLE hooks, injections and module utils
Implement the core taiHEN plugin framework as HLE in SceLibTaihen:

Hooks:
- taiHookFunctionExportForUser/ForKernel: inline hooks via substitute's
  transform-dis for ARM/Thumb instruction relocation, with fallback to
  import stub patching when inline hooking fails (FUNC_TOO_SHORT)
- taiHookFunctionImportForUser/ForKernel: import stub patching (12-byte
  ARM stubs: movw/movt/bx)
- taiHookFunctionOffsetForUser/ForKernel: hook at module segment+offset
- taiHookRelease/ForKernel: restore original bytes/stubs, free trampoline
- Hook chaining with TAI_CONTINUE support via TaiHookUser structs

Injections:
- taiInjectAbs/ForKernel: arbitrary memory patching with save/restore
- taiInjectDataForUser/ForKernel: inject data at module segment+offset
- taiInjectRelease/ForKernel: restore original bytes

Module utils:
- taiGetModuleInfo/ForKernel: query module info by name
- module_get_offset: resolve segment+offset to address
- module_get_export_func: resolve NID to export address

Plugin loading:
- taiLoadKernelModule, taiLoadStartKernelModuleForUser,
  taiLoadStartModuleForPidForUser: load plugin .skprx/.suprx files
- Config parsing: ux0:tai/config.txt format (*KERNEL, *TITLEID sections)

External dependency:
- Add Vita3K/substitute as git submodule (forked from comex/substitute,
  LGPLv2.1+). Only the ARM transform-dis component is used for
  instruction relocation in inline hooks.

Tested with 10 integration tests covering all implemented APIs.
2026-05-09 21:04:18 +02:00

96 lines
3.2 KiB
Plaintext

[submodule "external/better-enums"]
path = external/better-enums
url = https://github.com/aantron/better-enums
[submodule "external/boost"]
path = external/boost
url = https://github.com/Vita3K/ext-boost
[submodule "external/capstone"]
path = external/capstone
url = https://github.com/aquynh/capstone.git
[submodule "external/dirent"]
path = external/dirent
url = https://github.com/tronkko/dirent
branch = v1.23
[submodule "external/dlmalloc"]
path = external/dlmalloc
url = https://github.com/Vita3K/dlmalloc
[submodule "external/ffmpeg"]
path = external/ffmpeg
url = https://github.com/Vita3K/ffmpeg-core.git
[submodule "external/glslang"]
path = external/glslang
url = https://github.com/KhronosGroup/glslang
[submodule "external/googletest"]
path = external/googletest
url = https://github.com/google/googletest
[submodule "external/imgui"]
path = external/imgui
url = https://github.com/ocornut/imgui
[submodule "external/imgui_club"]
path = external/imgui_club
url = https://github.com/ocornut/imgui_club
[submodule "external/libfat16"]
path = external/libfat16
url = https://github.com/Vita3K/libfat16
[submodule "external/printf"]
path = external/printf
url = https://github.com/Vita3K/printf
[submodule "external/pugixml"]
path = external/pugixml
url = https://github.com/zeux/pugixml
[submodule "external/sdl"]
path = external/sdl
url = https://github.com/libsdl-org/SDL.git
[submodule "external/spdlog"]
path = external/spdlog
url = https://github.com/gabime/spdlog
branch = v1.x
[submodule "external/SPIRV-Cross"]
path = external/SPIRV-Cross
url = https://github.com/KhronosGroup/SPIRV-Cross.git
[submodule "external/stb"]
path = external/stb
url = https://github.com/nothings/stb
[submodule "external/vita-toolchain"]
path = external/vita-toolchain
url = https://github.com/vitasdk/vita-toolchain.git
[submodule "external/VulkanMemoryAllocator-Hpp"]
path = external/VulkanMemoryAllocator-Hpp
url = https://github.com/YaaZ/VulkanMemoryAllocator-Hpp
[submodule "external/yaml-cpp"]
path = external/yaml-cpp
url = https://github.com/jbeder/yaml-cpp
[submodule "external/psvpfstools"]
path = external/psvpfstools
url = https://github.com/Vita3K/psvpfstools.git
[submodule "external/xxHash"]
path = external/xxHash
url = https://github.com/Cyan4973/xxHash
[submodule "external/dynarmic"]
path = external/dynarmic
url = https://github.com/Vita3K/dynarmic.git
[submodule "external/fmt"]
path = external/fmt
url = https://github.com/fmtlib/fmt.git
[submodule "external/LibAtrac9"]
path = external/LibAtrac9
url = https://github.com/Vita3K/LibAtrac9.git
[submodule "external/tracy"]
path = external/tracy
url = https://github.com/wolfpld/tracy.git
[submodule "external/nativefiledialog-extended"]
path = external/nativefiledialog-extended
url = https://github.com/btzy/nativefiledialog-extended.git
[submodule "external/cubeb"]
path = external/cubeb
url = https://github.com/mozilla/cubeb.git
[submodule "external/concurrentqueue"]
path = external/concurrentqueue
url = https://github.com/cameron314/concurrentqueue.git
[submodule "external/libadrenotools"]
path = external/libadrenotools
url = https://github.com/bylaws/libadrenotools
[submodule "external/substitute"]
path = external/substitute
url = https://github.com/Vita3K/substitute.git