Make url configurable

This commit is contained in:
Changhua
2023-04-08 18:58:10 +08:00
parent ac85c144bf
commit dd02c4b6ff
9 changed files with 33 additions and 23 deletions
+2 -2
View File
@@ -69,14 +69,14 @@ static void *GetFuncAddr(LPCWSTR dllPath, HMODULE dllBase, LPCSTR funcName)
return (void *)((DWORD)dllBase + offset);
}
bool CallDllFunc(HANDLE process, LPCWSTR dllPath, HMODULE dllBase, LPCSTR funcName, DWORD *ret)
bool CallDllFunc(HANDLE process, LPCWSTR dllPath, HMODULE dllBase, LPCSTR funcName, LPVOID parameter, DWORD *ret)
{
void *pFunc = GetFuncAddr(dllPath, dllBase, funcName);
if (pFunc == NULL) {
return false;
}
HANDLE hThread = CreateRemoteThread(process, NULL, 0, (LPTHREAD_START_ROUTINE)pFunc, NULL, 0, NULL);
HANDLE hThread = CreateRemoteThread(process, NULL, 0, (LPTHREAD_START_ROUTINE)pFunc, parameter, 0, NULL);
if (hThread == NULL) {
return false;
}
+1 -1
View File
@@ -4,4 +4,4 @@
HANDLE InjectDll(DWORD pid, LPCWSTR dllPath, HMODULE *injectedBase);
bool EjectDll(HANDLE process, HMODULE dllBase);
bool CallDllFunc(HANDLE process, LPCWSTR dllPath, HMODULE dllBase, LPCSTR funcName, DWORD *ret);
bool CallDllFunc(HANDLE process, LPCWSTR dllPath, HMODULE dllBase, LPCSTR funcName, LPVOID parameter, DWORD *ret);
+14 -4
View File
@@ -34,8 +34,12 @@ static int GetDllPath(bool debug, wchar_t *dllPath)
return 0;
}
int WxInitSDK(bool debug)
int WxInitSDK(bool debug, const char *url)
{
if (url == NULL) {
return -1;
}
int status = 0;
DWORD wcPid = 0;
@@ -56,8 +60,15 @@ int WxInitSDK(bool debug)
LOG_ERROR("Failed to Inject DLL into WeChat.");
return -1;
}
size_t urlLen = strlen(url) + 1;
LPVOID urlAddr = VirtualAllocEx(wcProcess, NULL, urlLen, MEM_COMMIT, PAGE_READWRITE);
if (urlAddr == NULL) {
LOG_ERROR("Failed to Alloc Memory.");
return NULL;
}
WriteProcessMemory(wcProcess, urlAddr, url, urlLen, NULL);
if (!CallDllFunc(wcProcess, spyDllPath, spyBase, "InitSpy", NULL)) {
if (!CallDllFunc(wcProcess, spyDllPath, spyBase, "InitSpy", urlAddr, NULL)) {
LOG_ERROR("Failed to InitSpy.");
return -1;
}
@@ -73,7 +84,6 @@ int WxInitSDK(bool debug)
fclose(fd);
#endif
debugMode = debug;
LOG_INFO("WxInitSDK done.");
return 0;
}
@@ -111,7 +121,7 @@ int WxDestroySDK()
return status;
}
if (!CallDllFunc(wcProcess, spyDllPath, spyBase, "CleanupSpy", NULL)) {
if (!CallDllFunc(wcProcess, spyDllPath, spyBase, "CleanupSpy", NULL, NULL)) {
LOG_ERROR("Failed to CleanupSpy.");
return -1;
}
+1 -1
View File
@@ -1,4 +1,4 @@
#pragma once
int WxInitSDK(bool debug);
int WxInitSDK(bool debug, const char *url);
int WxDestroySDK();