Make url configurable
This commit is contained in:
+2
-2
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user