Not sure if the title is that telling but what I want to do is hack into an executable and do as little as necessary to get the code from my DLL running since I want to write as few lines of assembly code as possible.
I already have the place where I'd like to jump in and I am ready to insert the necessary assembly instructions into the executable using ollydbg but since I never did that before I'm afraid I need a little help on those last steps.
What I want to do is basically:
- Force the executable to load my DLL
- Push a few parameters onto the stack for
init_my_dll()
- call
init_dll()
but I'm not sure what's the best way to accomplish that. Is there a straight forward way to get this done?
Btw: Is what I'm doing here actually called "dll-injection"?
VirtualAllocEx
->CreateRemoteThread(..., LoadLibraryA, "your_dll.dll", ...)
). You can do it yourself if you want, too (that's called manual mapping).CreateRemoteThread()
in order to load my dll, then callGetProcAddress()
to get the address ofinit_my_dll()
and call it? The link you are referring seems to do something different - if I get this right there are two processes in the end. I don't get how I would make the target process callinit_my_dll()
as described there.GetProcAddress
to call your function. You use it to findLoadLibraryA
, and call it. That function will load your DLL, and will call itsDllMain
- and that function could be calling yourinit_my_dll
function. That said - if you're trying to do this with a game, be careful, those have anti-cheats which usually detect this technique and ban you.