ScriptHook is too an injected dll, the only difference is, it's using dxinput.dll.
This is a Library which will ussually Loaded from Windows\System32.
But every Programm look first in his own Folder if there is no explicit Path used.
So ScriptHook use a prepared dxinput.dll which is Hooking the DirectX Output and wrap to real dxinput.dll, which is injecting the ScriptHookV.dll for you.
The difference is, ScriptHook invokes Native Functions + the ScriptHandle Thread, because you can only call Functions from this.
The Last Thing (Hooking the ScriptThread) is what is detected, so other Hacks just don't use it, or avoid to write something there.
ScriptHook is Hooking the Functions and the rest dll Hacks use something like this:
Code:
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
CreateThread(NULL, 0, HookStart, NULL, 0, NULL);
return TRUE;
}
which creates a Worker Thread for you, where you can do your shit.