mirror of
https://github.com/paranoidninja/Proxy-DLL-Loads
synced 2026-06-08 16:38:54 +00:00
33 lines
1.2 KiB
C
33 lines
1.2 KiB
C
#include <windows.h>
|
|
#include <stdio.h>
|
|
|
|
typedef NTSTATUS (NTAPI* TPALLOCWORK)(PTP_WORK* ptpWrk, PTP_WORK_CALLBACK pfnwkCallback, PVOID OptionalArg, PTP_CALLBACK_ENVIRON CallbackEnvironment);
|
|
typedef VOID (NTAPI* TPPOSTWORK)(PTP_WORK);
|
|
typedef VOID (NTAPI* TPRELEASEWORK)(PTP_WORK);
|
|
|
|
FARPROC pLoadLibraryA;
|
|
|
|
UINT_PTR getLoadLibraryA() {
|
|
return (UINT_PTR)pLoadLibraryA;
|
|
}
|
|
|
|
extern VOID CALLBACK WorkCallback(PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work);
|
|
|
|
int main() {
|
|
pLoadLibraryA = GetProcAddress(GetModuleHandleA("kernel32"), "LoadLibraryA");
|
|
FARPROC pTpAllocWork = GetProcAddress(GetModuleHandleA("ntdll"), "TpAllocWork");
|
|
FARPROC pTpPostWork = GetProcAddress(GetModuleHandleA("ntdll"), "TpPostWork");
|
|
FARPROC pTpReleaseWork = GetProcAddress(GetModuleHandleA("ntdll"), "TpReleaseWork");
|
|
|
|
CHAR *libName = "wininet.dll";
|
|
PTP_WORK WorkReturn = NULL;
|
|
((TPALLOCWORK)pTpAllocWork)(&WorkReturn, (PTP_WORK_CALLBACK)WorkCallback, libName, NULL);
|
|
((TPPOSTWORK)pTpPostWork)(WorkReturn);
|
|
((TPRELEASEWORK)pTpReleaseWork)(WorkReturn);
|
|
|
|
WaitForSingleObject((HANDLE)-1, 0x1000);
|
|
printf("hWininet: %p\n", GetModuleHandleA(libName));
|
|
|
|
return 0;
|
|
}
|