-
-
Notifications
You must be signed in to change notification settings - Fork 159
Hook virtual functions by offset #617
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Dynamic
DynamicHooks
to support virtual functions
/// <summary> | ||
/// <b>WARNING:</b> this is only supposed to be used with <see cref="VirtualFunctionVoid"/> and <see cref="VirtualFunctionWithReturn{TResult}"/> | ||
/// </summary> | ||
internal BaseMemoryFunction(IntPtr objectPtr, int offset, DataType returnType, DataType[] parameters) : base( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This and related constructors are internal
because they should not be used randomly. People should only use the exposed VirtualFunctionVoid
and VirtualFunctionWithReturn
versions
managed/CounterStrikeSharp.API/Modules/Memory/DynamicFunctions/BaseMemoryFunction.cs
Show resolved
Hide resolved
5c674f5
to
73fe4ff
Compare
@roflmuffin +1 on this |
my second review has to be resolved before this pr is ready |
what is second pr? can community help you somehow? |
this is the second review |
DynamicHooks
to support virtual functions
virtual functions that has been created by an offset are now stored as
the hook itself is reused, but currently only the latter is called, I believe this could also happen if the same function is hooked with 2 different signatures? (tested it and yes) |
…StrikeSharp into virtual-hooks
With these changes, we will be able to hook virtual functions based on offset.
Example
Testing
StartTouch
,Touch
,EndTouch
hooks on the soccerball in de_dust2Debug output:
Developers should be aware that they are hooking the virtual function, which is shared between instances (same as with signatures)