Witty subtitle here
End User Information
What is Syringe?
Syringe is an application developed by pd primarily to simplify modification of Yuri's Revenge. It can inject code into any other executable as well, so it is a general-purpose code injector tool.
How does it work?
In simple terms, a patch developer creates a small DLL file and an "injection control file". When Syringe is run, it loads all recognized DLLs into the target program, and instructs the program to call certain functions from the DLL file under certain circumstances.
How does this benefit the end user, compared to the old RockPatch patching method?
Are there any released patches which use Syringe?
DCoder is also using Syringe for a modification for a different game (Urban Chaos), but it is not yet intended for public use.
What skills do I need to use Syringe?
DLLs are written using C++, but naturally the executable you are targeting needs to be reverse-engineered for any meaningful changes.
For example, if you have reverse engineered a game and could possibly write some patches for it in assembler, you will be able to do the same in Syringe with no difficulty. If you don't know reverse-engineering, don't panic just yet - if the Syringe wrappers have been written for that executable, you can use them and write normal C++ code with some guidance from the reverse-engineers. For more info, check the Getting Started with Syringe page.
I want to contribute something to the Ares/RockPatch 2 project
Please see the Ares project page.
I want to create another DLL for YR
Please see the Writing A DLL for Syringe page.
I want to create DLLs for a different application
Please see the Injecting Syringe DLLs Into An Application page.
How does it work, really?
Syringe uses a variant of the infamous DLL Injection technique - a small chunk of ASM code is inserted at executable startup, forcing the executable to search for and load suitable DLLs into its context. An injection control file dictates the functions to call at certain addresses, Syringe overwrites code at those addresses with 0xCC (int 3), and those interrupts are trapped using Debug API and the executable is redirected to invoke said functions.
Does it work with Launch Base?
Yes. Launch Base includes the latest version of Syringe and automatically knows when to execute it - your mod just needs to include any DLL files it requires in it's own "syringe" directory.