minhook
minhook copied to clipboard
Can't get real production example to work
I'm trying to hook into a address of a function in a process with the example listed below. Tool.exe
crashes with a segfault. I never used minhook so I'm not sure what's wrong. Also how could I still call the original function in hkFooBar
?
Tool.exe
import os
from winim import LoadLibraryA
proc foobar(a, b: int): int = a + b
proc main =
echo "Address of foobar is ", cast[ByteAddress](foobar) # Address: 4265044
LoadLibraryA("hookit.dll")
while true:
os.sleep(5000)
echo "Result of foobar: ", foobar(10, 5)
when isMainModule:
main()
hookit.dll
import minhook
var toHook = cast[pointer](4265044)
proc hkFooBar(a, b: int): int = a * b
proc mainThread =
{.gcsafe.}:
echo "Library load"
assert createHook(toHook, hkFooBar, nil) == mhOk
assert enableHook(toHook) == mhOk
echo "Hook enabled"
when isMainModule:
var t: Thread[void]
t.createThread(mainThread)```
I also get a segfault when calling a 'hooked' function when it has been injected in a process using thread.