Commit Graph

190 Commits

Author SHA1 Message Date
Drifter
cd55a5026e Add support for setting callback when hooking instead of on create only. 2018-01-27 10:08:44 -05:00
Drifter
b14f62435c Update test gamedata. 2018-01-27 10:08:03 -05:00
Peace-Maker
aa3018a27d Add support to define function signatures in gamedata
A "Functions" section is parsed in gamedata files that allow you to define the signature of functions including metadata like the calling convention and specifying the register an argument is passed in.
A new native DHookCreateFromConf can be used to setup a hook or detour from one of that function sections in the "Functions" section.
2018-01-25 17:18:30 +01:00
Peace-Maker
e2d71bae03 Mark new natives as optional if extension is optional 2018-01-23 14:58:09 +01:00
Peace-Maker
1ef64c56b5 Document the new natives in the include file 2018-01-23 14:01:41 +01:00
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
Drifter
2591478ead Update version 2016-12-20 09:48:44 -05:00
Drifter
a26316ba68 Fix not ending context. 2016-12-20 09:48:26 -05: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
Drifter
d506ce912e Make sure hooks are entity hooks before removing. 2016-12-09 08:22:09 -05:00
Dr!fter
fd8866a540 Update AMBuildScript 2016-08-31 11:46:25 -04:00
Dr!fter
2b3368e0c0 Update vcxproj. 2016-08-31 11:46:14 -04:00
Dr!fter
928570b8ec Only set each param to NULL. 2016-08-31 11:45:47 -04:00
Dr!fter
9bfc47801c Fix linux getting incorrect stack size. 2016-08-31 11:44:35 -04:00
Dr!fter
66d30ff793 Fix getting the wrong stack size for calling functions. 2016-08-31 11:37:48 -04:00
Dr!fter
ba550066ea Fix GetParamsSize for linux. 2016-08-30 17:58:40 -04:00
Dr!fter
1fe19fc823 Remove functions now in util and fix more object related issues. 2016-08-30 16:40:24 -04:00
Dr!fter
c3bc30ece3 Add util source and header with functions used in multiple locations. 2016-08-30 16:39:33 -04:00
Dr!fter
3f62ff4faf Update version number. 2016-08-30 11:01:52 -04:00
Dr!fter
4d743c0d49 Fix test plugin. 2016-08-30 11:00:26 -04:00
Dr!fter
71b840e70a Fix overriding functions with objects crashing. 2016-08-30 10:58:04 -04:00
Dr!fter
47cf76c2e3 Fix getting and setting params after objects. 2016-08-30 10:56:56 -04:00
Dr!fter
9d09a52e99 Switch to amtl vectors. Change how hooks are checked for removal on frame action. 2016-08-27 10:20:38 -04:00
Dr!fter
98fcde86c1 Only AddFrameAction once. 2016-08-26 21:01:59 -04:00
Dr!fter
c95724a9ac Update project files 2016-08-26 19:54:01 -04:00
Dr!fter
b3fb8cc8de Delay freeing hook manager one frame just in case the entity is deleted while the hook is still on the stack. 2016-08-26 19:26:52 -04:00
Dr!fter
bfd6abfb6c Fix setting vector returns not being marked as changed. 2016-08-01 16:35:27 -04:00
Dr!fter
e293b643a3 Update version number 2016-08-01 16:20:19 -04:00
Dr!fter
501e14c55c Trigger Build 2016-08-01 16:18:21 -04:00
Dr!fter
f180db5427 Fix setting return value for vector pointers. 2016-08-01 16:03:18 -04:00
Dr!fter
fddaec1bd5 Update version 2016-06-26 13:36:16 -04:00
Dr!fter
a9bbbe6665 Fix linux build. 2016-06-26 13:34:19 -04:00
Dr!fter
5c50f67898 Fix linux buildbot 2016-06-26 13:18:18 -04:00
Dr!fter
76636a84ac Fix AMBuildScript. Update MSVC project file. 2016-06-26 13:01:06 -04:00
Dr!fter
97c3cdf304 Change Vector classname to SDKVector. 2016-06-26 13:00:27 -04:00
Dr!fter
08f67ac307 Fix AMBuildScript 2016-06-26 11:53:07 -04:00