Skip to content

Releases: Phobos-developers/SyringeEx

v0.1.0.2

Choose a tag to compare

@Metadorius Metadorius released this 20 Jun 00:04
535056d
  • Fix more causes of black screen freeze on exit

v0.1.0.1

Choose a tag to compare

@Metadorius Metadorius released this 16 Jun 14:37
  • Made --nodetach default (conforms to Syringe behavior); to use automatic detach add --detach to arguments
  • Fixed --nodetach freezing the target app on exit

v0.1.0.0

Choose a tag to compare

@Metadorius Metadorius released this 13 Jun 18:26

This is the first release of SyringeEx, a true community continuation of Syringe, licensed under LGPL. The public Syringe source code was missing some critical changes, so we reimplemented them and added some fixes on top.

Added

  • Injected DLL whitelist via -i=<dllname.dll> flag; only specified DLLs are injected when at least one -i= option is present, in the declaration order (* wildcard allowed, defaults to -i="*.dll")
  • ESP modification support (ESPModification feature flag), allowing DLLs to change the stack pointer across hooks for different stack depth at exit
    • Currently, only decreasing stack depth changes are fully safe; if you increase stack depth - you overlap the stack-allocated REGISTERS* R, so be wary!
  • Zero flag preservation (ZFPreservation feature flag) so conditional instructions (e.g. JZ) can be safely hooked without clobbering ZF
  • Relative address instruction fixup (ReladdrInstructionFixup feature flag) relocating JMP/CALL/Jcc offsets in trampoline stubs to prevent stale-relative-offset crashes
  • Feature flags API via exported SyringeFeatures::* booleans in Syringe.h for runtime capability detection by injected DLLs
  • Automatic debugger detach after all hooks are placed; --nodetach keeps the debugger attached, --nowait exits SyringeEx immediately after detaching

Changed

  • Command-line syntax changed to facilitate easier expansion: first non-flag argument selects the target executable, --args="..." passes through arguments, "..." are no longer required for the target EXE.
    • To migrate command-line, before:
      Syringe.exe "gamemd.exe" -SPAWN -CD -LOG
      After:
      Syringe.exe gamemd.exe --args="-SPAWN -CD -LOG"
    • To migrate XNA CnCNet Client, in Resources/ClientDefinitions.ini->[Settings] (don't forget to modify Unix compat. script as well), before:
      GameExecutableNames=gamemd.exe
      GameLauncherExecutableName=Syringe.exe
      ExtraCommandLineParams=-SPAWN -CD -LOG
      After:
      GameExecutableNames=Syringe.exe
      ExtraCommandLineParams=gamemd.exe --args="-SPAWN -CD -LOG"

Fixed

  • Multithreaded hook support using FS:[0x14] thread-local storage instead of DS segment for reliable breakpoint dispatch in multi-threaded targets (similar to AlexB's private Syringe releases; thanks to @lhmouse and others for research help!)
  • Handshakes are now optional: handshake failures on the Steam version of Yuri's Revenge no longer prevent DLL loading (similar to AlexB's private Syringe releases)

Credits

Brought to you by yours truly, @Metadorius and @ZivDero.

Includes vendored Zydis /w Zycore-C under MIT license.