Commit Graph
16 Commits
Author SHA1 Message Date
Peace-Maker 2ba221b6a3 Fix passing this pointer to callback even if the detour was setup to ignore it
The this pointer was always passed to the plugin callback if the calling convention was a thiscall. Even if the plugin author set the this pointer type to ThisPointer_Ignore.
2018-01-23 13:40:55 +01:00
Peace-Maker 02e0545d75 Fix saving arguments in custom registers in combination with arguments on the stack
If a function was optimized to only pass one parameter in a register, but still pass other parameters on the stack, save the registers at the correct offset in the buffer.
2018-01-23 13:39:37 +01:00
Peace-Maker 38aca973db Update visual studio project files 2018-01-23 12:19:51 +01:00
Peace-Maker 94181be280 Fix assert when the pre-hook was fired, but the post hook was skipped
The post hook would have cleared the esp value from the return address map, but there seems to be a case where the post hook isn't called, but the function gets called with the same esp again. This is probably just masking a different error :(
2018-01-23 03:16:46 +01:00
Peace-Maker 1b9fa3743f Add support for custom calling convention passing arguments in registers
If the compiler decided to pass an argument in a register on an internal function instead of pushing it on the stack to save time, allow us to specify the register the parameter is going to be in.

DHookAddParam received another parameter to set the register.
2018-01-23 03:15:03 +01:00
Peace-Maker 5d21350e9e Fix not clearing return address cache after use
The esp pointer wasn't removed from the map after the function was called and the original return address was retrieved.
If the same function was called again with the same esp this would fail due to there already being an (old) return address associated with the esp.
2018-01-22 00:11:28 +01:00
Peace-Maker b6382f1c27 Fix compilation 2018-01-21 13:48:50 +01:00
Peace-Maker 8221a6522b Save this pointer on windows after calling original function
ecx might get cleared before the original function returns leading to garbage in the post handler.
2016-12-13 17:47:59 -07:00
Peace-Maker b18e3284e1 Fix overriding return value
The custom return value was lost when calling the original function.
Save and restore our own return value, if we're about to call the original function.
2016-12-13 17:45:22 -07:00
Peace-Maker 6e96e0fb84 Don't use std::list at all in DynamicHooks
Switch to amtl Vector.
2016-12-13 17:37:12 -07:00
Peace-Maker c70d3b9ee0 Use AMTL instead of the stdlib in DynamicHooks 2016-12-13 00:34:28 -07:00
Peace-Maker 8ab9c14e93 Add detour test plugin 2016-12-12 22:48:40 -07:00
Peace-Maker 63c6addc30 Fix new - free mismatch 2016-12-12 22:47:35 -07:00
Peace-Maker 764b325a1e Switch to sp::MacroAssembler instead of AsmJit 2016-12-12 22:18:43 -07:00
Peace-Maker 63ccb7448f Cleanup detour structures properly on unload 2016-12-11 22:18:53 -07:00
Peace-Maker 2e52ab24b7 First draft of dynamic detours using Ayuto's DynamicHooks library
https://github.com/Ayuto/DynamicHooks
2016-12-11 22:02:10 -07:00