@yifanlu yifanlu released this Feb 21, 2018

Add delayed config loading to allow config to be reloaded from module_start. The main use-case here is if a kernel module defined in *KERNEL wishes to refresh the config. Previously there will be a use-after-free as it tries to free the old config while it is still being parsed. Now that's been fixed and it supports re-loading the config (delayed) after the first parse is complete.


@yifanlu yifanlu released this Jul 30, 2017 · 7 commits to master since this release

Hold L at start of an application to skip loading user plugins. This also means that if you have Ensō and hold L at boot, you should skip loading of SceShell plugins as well.


@yifanlu yifanlu released this Jun 24, 2017 · 8 commits to master since this release

Added recovery option to skip loading all plugins (kernel and user) by holding L1. If using HENkaku from the web or with the offline installer, hold L1 after the bootstrap installer starts up. If using Ensō, hold L1 and power on the Vita. You can still reuse plugins by calling taiReloadConfig even if you started taiHEN without plugin loading.


@yifanlu yifanlu released this May 25, 2017 · 10 commits to master since this release

  • Alternative config file at ur0:tai/config.txt loads if ux0:tai/config.txt is not found.


@yifanlu yifanlu released this May 14, 2017 · 11 commits to master since this release

  • Fixed a memory leak where a reference was not decremented
  • Mitigation for a SCE bug that limits the number of plugins that can be loaded per application
  • API Change: When TAI_MAIN_MODULE is used, the first loaded module will always be returned. This should be transparent to most plugins except the main change is that you can use TAI_MAIN_MODULE for SceShell now.

taiHEN Beta 6

@yifanlu yifanlu released this Dec 13, 2016 · 25 commits to master since this release

  • Module is now compressed
  • API change: TAI_MAIN_MODULE can be passed as a parameter to functions that take a module name. This will resolve to the default main module (aka the eboot.bin of the loaded application).

taiHEN Beta 5

@yifanlu yifanlu released this Nov 26, 2016 · 33 commits to master since this release

  • Add new developer exports module_get_by_name_nid, module_get_offset, module_get_export_func, and module_get_import_func for advanced users. Headers not provided because these functions are not recommended for normal users.
  • Integrated latest version of substitute with bug fixes for certain types of function hooks.

taiHEN Beta 4

@yifanlu yifanlu released this Nov 14, 2016 · 36 commits to master since this release

  • Implemented clean-up of user hooks on process termination
  • Added more APIs for kernel module loading and process module loading
  • Fixed bug where stack size was too small in syscall leading to crash when hooking or unhooking (seen by suprx loading skprx)
  • Added checks to prevent hooking of unresolved weak imports (see docs for details on how to hook weak imports)
  • Fixed bug in assembling the outro for BL instructions (can be seen by crash when hooking app_start)
  • Fixed bug where taiGetModuleInfo does not retrieve all modules.
  • Fixed bug where kernel module stopping crashes

taiHEN Beta 3

@yifanlu yifanlu released this Nov 8, 2016 · 58 commits to master since this release

  • Fixed issue with user loading of kernel module not working
  • Minor stability fixes

taiHEN Beta 2

@yifanlu yifanlu released this Nov 6, 2016 · 68 commits to master since this release

  • NID poisoning disabled, allows for user hooks of imports
  • Configuration parsing/loading
  • Fixed race condition in sceKernelMemPoolCreate
  • Fixed bug in taiLoadKernelModule and related function (#4)