📄 tracereg.cpp
字号:
DWORD a5),
RegSetValueExW);
DETOUR_TRAMPOLINE(HFILE WINAPI Real__lcreat(LPCSTR a0,
int a1),
_lcreat);
DETOUR_TRAMPOLINE(HFILE WINAPI Real__lopen(LPCSTR a0,
int a1),
_lopen);
/////////////////////////////////////////////////////////////
// Detours
//
BOOL WINAPI Mine_WaitNamedPipeW(LPCWSTR lpNamedPipeName, DWORD nTimeOut)
{
return Real_WaitNamedPipeW(lpNamedPipeName, nTimeOut);
}
BOOL WINAPI Mine_CloseHandle(HANDLE hObject)
{
return Real_CloseHandle(hObject);
}
VOID WINAPI Mine_GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime)
{
Real_GetSystemTimeAsFileTime(lpSystemTimeAsFileTime);
}
BOOL WINAPI Mine_SetNamedPipeHandleState(HANDLE hNamedPipe,
LPDWORD lpMode,
LPDWORD lpMaxCollectionCount,
LPDWORD lpCollectDataTimeout)
{
return Real_SetNamedPipeHandleState(hNamedPipe,
lpMode,
lpMaxCollectionCount,
lpCollectDataTimeout);
}
BOOL WINAPI Mine_WriteFile(HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped)
{
return Real_WriteFile(hFile,
lpBuffer,
nNumberOfBytesToWrite,
lpNumberOfBytesWritten,
lpOverlapped);
}
BOOL WINAPI Mine_CreateProcessW(LPCWSTR lpApplicationName,
LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCWSTR lpCurrentDirectory,
LPSTARTUPINFOW lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation)
{
_PrintEnter("CreateProcessW(%ls,%ls,%lx,%lx,%lx,%lx,%lx,%ls,%lx,%lx)\n",
lpApplicationName,
lpCommandLine,
lpProcessAttributes,
lpThreadAttributes,
bInheritHandles,
dwCreationFlags,
lpEnvironment,
lpCurrentDirectory,
lpStartupInfo,
lpProcessInformation);
_Print("Calling DetourCreateProcessWithDllW(,%ls)\n", s_wzDllPath);
BOOL rv = 0;
__try {
rv = DetourCreateProcessWithDllW(lpApplicationName,
lpCommandLine,
lpProcessAttributes,
lpThreadAttributes,
bInheritHandles,
dwCreationFlags,
lpEnvironment,
lpCurrentDirectory,
lpStartupInfo,
lpProcessInformation,
s_wzDllPath,
Real_CreateProcessW);
} __finally {
_PrintExit("CreateProcessW(,,,,,,,,,) -> %lx\n", rv);
};
return rv;
}
//
//////////////////////////////////////////////////////////////////////////////
BOOL WINAPI Mine_CopyFileExA(LPCSTR a0,
LPCSTR a1,
LPPROGRESS_ROUTINE a2,
LPVOID a3,
LPBOOL a4,
DWORD a5)
{
_PrintEnter("CopyFileExA(%hs,%hs,%lx,%lx,%lx,%lx)\n", a0, a1, a2, a3, a4, a5);
BOOL rv = 0;
__try {
rv = Real_CopyFileExA(a0, a1, a2, a3, a4, a5);
} __finally {
_PrintExit("CopyFileExA(,,,,,) -> %lx\n", rv);
};
return rv;
}
BOOL WINAPI Mine_CopyFileExW(LPCWSTR a0,
LPCWSTR a1,
LPPROGRESS_ROUTINE a2,
LPVOID a3,
LPBOOL a4,
DWORD a5)
{
_PrintEnter("CopyFileExW(%ls,%ls,%lx,%lx,%lx,%lx)\n", a0, a1, a2, a3, a4, a5);
BOOL rv = 0;
__try {
rv = Real_CopyFileExW(a0, a1, a2, a3, a4, a5);
} __finally {
_PrintExit("CopyFileExW(,,,,,) -> %lx\n", rv);
};
return rv;
}
BOOL WINAPI Mine_CreateDirectoryExW(LPCWSTR a0,
LPCWSTR a1,
LPSECURITY_ATTRIBUTES a2)
{
_PrintEnter("CreateDirectoryExW(%ls,%ls,%lx)\n", a0, a1, a2);
BOOL rv = 0;
__try {
rv = Real_CreateDirectoryExW(a0, a1, a2);
} __finally {
_PrintExit("CreateDirectoryExW(,,) -> %lx\n", rv);
};
return rv;
}
BOOL WINAPI Mine_CreateDirectoryW(LPCWSTR a0,
LPSECURITY_ATTRIBUTES a1)
{
_PrintEnter("CreateDirectoryW(%ls,%lx)\n", a0, a1);
BOOL rv = 0;
__try {
rv = Real_CreateDirectoryW(a0, a1);
} __finally {
_PrintExit("CreateDirectoryW(,) -> %lx\n", rv);
};
return rv;
}
HANDLE WINAPI Mine_CreateFileW(LPCWSTR a0,
DWORD a1,
DWORD a2,
LPSECURITY_ATTRIBUTES a3,
DWORD a4,
DWORD a5,
HANDLE a6)
{
_PrintEnter(NULL);
HANDLE rv = 0;
__try {
rv = Real_CreateFileW(a0, a1, a2, a3, a4, a5, a6);
} __finally {
_PrintExit("CreateFileW(%ls,%lx,%lx,%lx,%lx,%lx,%lx) -> %lx\n",
a0, a1, a2, a3, a4, a5, a6, rv);
};
return rv;
}
BOOL WINAPI Mine_DeleteFileA(LPCSTR a0)
{
_PrintEnter("DeleteFileA(%hs)\n", a0);
BOOL rv = 0;
__try {
rv = Real_DeleteFileA(a0);
} __finally {
_PrintExit("DeleteFileA() -> %lx\n", rv);
};
return rv;
}
BOOL WINAPI Mine_DeleteFileW(LPCWSTR a0)
{
_PrintEnter("DeleteFileW(%ls)\n", a0);
BOOL rv = 0;
__try {
rv = Real_DeleteFileW(a0);
} __finally {
_PrintExit("DeleteFileW() -> %lx\n", rv);
};
return rv;
}
HANDLE WINAPI Mine_FindFirstFileExA(LPCSTR a0,
FINDEX_INFO_LEVELS a1,
LPVOID a2,
FINDEX_SEARCH_OPS a3,
LPVOID a4,
DWORD a5)
{
_PrintEnter("FindFirstFileExA(%hs,%lx,%lx,%lx,%lx,%lx)\n", a0, a1, a2, a3, a4, a5);
HANDLE rv = 0;
__try {
rv = Real_FindFirstFileExA(a0, a1, a2, a3, a4, a5);
} __finally {
_PrintExit("FindFirstFileExA(,,,,,) -> %lx\n", rv);
};
return rv;
}
HANDLE WINAPI Mine_FindFirstFileExW(LPCWSTR a0,
FINDEX_INFO_LEVELS a1,
LPVOID a2,
FINDEX_SEARCH_OPS a3,
LPVOID a4,
DWORD a5)
{
_PrintEnter(NULL);
HANDLE rv = 0;
__try {
rv = Real_FindFirstFileExW(a0, a1, a2, a3, a4, a5);
} __finally {
_PrintExit("FindFirstFileExW(%ls,%lx,%lx,%lx,%lx,%lx) -> %lx\n",
a0, a1, a2, a3, a4, a5, rv);
};
return rv;
}
DWORD WINAPI Mine_GetFileAttributesW(LPCWSTR a0)
{
_PrintEnter(NULL);
DWORD rv = 0;
__try {
rv = Real_GetFileAttributesW(a0);
} __finally {
_PrintExit("GetFileAttributesW(%ls) -> %lx\n", a0, rv);
};
return rv;
}
DWORD WINAPI Mine_GetModuleFileNameW(HMODULE a0, LPWSTR a1, DWORD a2)
{
_PrintEnter("GetModuleFileNameW(%lx,%lx,%lx)\n", a0, a1, a2);
DWORD rv = 0;
__try {
rv = Real_GetModuleFileNameW(a0, a1, a2);
} __finally {
_PrintExit("GetModuleFileNameW(%lx,%lx:%ls,%lx) -> %lx\n", a0, a1, a1, a2, rv);
};
return rv;
}
FARPROC WINAPI Mine_GetProcAddress(struct HINSTANCE__* a0,
LPCSTR a1)
{
WCHAR wzModule[MAX_PATH] = L"";
PWCHAR pwzModule = wzModule;
if (Real_GetModuleFileNameW(a0, wzModule, ARRAYOF(wzModule)) != 0) {
if ((pwzModule = wcsrchr(wzModule, '\\')) == NULL) {
if ((pwzModule = wcsrchr(wzModule, ':')) == NULL) {
pwzModule = wzModule;
}
else {
pwzModule++; // Skip ':'
}
}
else {
pwzModule++; // Skip '\\'
}
}
else {
wzModule[0] = '\0';
}
_PrintEnter(NULL);
FARPROC rv = 0;
__try {
rv = Real_GetProcAddress(a0, a1);
} __finally {
if (pwzModule[0] == 0) {
_PrintExit("GetProcAddress(%lx,%hs) -> %lx\n", a0, a1, rv);
}
else {
_PrintExit("GetProcAddress(%lx:%ls,%hs) -> %lx\n", a0, pwzModule, a1, rv);
}
};
return rv;
}
HMODULE WINAPI Mine_LoadLibraryExW(LPCWSTR a0,
HANDLE a1,
DWORD a2)
{
_PrintEnter("LoadLibraryExW(%ls,%lx,%lx)\n", a0, a1, a2);
HMODULE rv = 0;
__try {
rv = Real_LoadLibraryExW(a0, a1, a2);
} __finally {
_PrintExit("LoadLibraryExW(,,) -> %lx\n", rv);
if (rv) {
InstanceEnumerate(rv);
}
};
return rv;
}
BOOL WINAPI Mine_MoveFileA(LPCSTR a0,
LPCSTR a1)
{
_PrintEnter("MoveFileA(%hs,%hs)\n", a0, a1);
BOOL rv = 0;
__try {
rv = Real_MoveFileA(a0, a1);
} __finally {
_PrintExit("MoveFileA(,) -> %lx\n", rv);
};
return rv;
}
BOOL WINAPI Mine_MoveFileExA(LPCSTR a0,
LPCSTR a1,
DWORD a2)
{
_PrintEnter("MoveFileExA(%hs,%hs,%lx)\n", a0, a1, a2);
BOOL rv = 0;
__try {
rv = Real_MoveFileExA(a0, a1, a2);
} __finally {
_PrintExit("MoveFileExA(,,) -> %lx\n", rv);
};
return rv;
}
BOOL WINAPI Mine_MoveFileExW(LPCWSTR a0,
LPCWSTR a1,
DWORD a2)
{
_PrintEnter("MoveFileExW(%ls,%ls,%lx)\n", a0, a1, a2);
BOOL rv = 0;
__try {
rv = Real_MoveFileExW(a0, a1, a2);
} __finally {
_PrintExit("MoveFileExW(,,) -> %lx\n", rv);
};
return rv;
}
BOOL WINAPI Mine_MoveFileW(LPCWSTR a0,
LPCWSTR a1)
{
_PrintEnter("MoveFileW(%ls,%ls)\n", a0, a1);
BOOL rv = 0;
__try {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -