dllmain.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // dllmain.cpp : 定义 DLL 应用程序的入口点。
  2. #include "stdafx.h"
  3. #include "PipeClient.h"
  4. #include "Utility.h"
  5. #include "OGCAssist.h"
  6. DWORD WINAPI WorkThreadProc(LPVOID lParam)
  7. {
  8. // 注入成功后,启动管道进行通信;
  9. if ( Utility::g_pPipeClient == NULL )
  10. {
  11. Utility::g_pPipeClient = new CPipeClient(Utility::g_cfgCtx.szPipeName);
  12. Utility::g_pPipeClient->StartWork();
  13. }
  14. Assist::InitCallData();
  15. BOOL bInject = Assist::HijackedAllCall();
  16. //::MessageBox(NULL, _T("劫持成功"), _T(""), MB_OK);
  17. Utility::dprintf(_T("劫持成功\n"));
  18. WaitForSingleObject(Utility::hWorkThreadProc,INFINITE);
  19. // 恢复劫持数据;
  20. Assist::RestoreAllCall();
  21. // 主线程结束,DLL自我卸载;
  22. Utility::FreeLibraryAndExit();
  23. return 0;
  24. }
  25. #ifdef _CONSOLE
  26. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  27. {
  28. int nRetCode = 0;
  29. Utility::dprintf(_T("注入\n"));
  30. Utility::GetConfigContent();
  31. if ( Utility::g_pPipeClient == NULL )
  32. {
  33. Utility::g_pPipeClient = new CPipeClient(Utility::g_cfgCtx.szPipeName);
  34. Utility::g_pPipeClient->StartWork();
  35. }
  36. int i = 0;
  37. TCHAR szData[MAX_PATH] = {0};
  38. while (true)
  39. {
  40. #if 0
  41. _stprintf(szData, _T("发送内容00000000000000000000000000000000000000000:%d, %d"), ::GetCurrentProcessId(), i++);
  42. Utility::g_pPipeClient->SendData((LPBYTE)szData, _tcslen(szData));
  43. #else
  44. MSG_INFO msg_info;
  45. msg_info.dwClientId = GetCurrentProcessId();
  46. _stprintf(msg_info.szClientName, _T("%s"), _T("OGCAssist"));
  47. msg_info.byResult = TRUE;
  48. _stprintf((char*)msg_info.byData, _T("%s"), _T("OGCAssist dfdfdfdfdfdfdfdfdf"));
  49. PACKAGE pak;
  50. pak.header.byMsgType = C2S_DISCONNECT;
  51. pak.header.dwPackageLen = sizeof(DATAHEADER) + sizeof(MSG_INFO);
  52. pak.buf = &msg_info;
  53. Utility::g_pPipeClient->SendPackage(pak);
  54. #endif
  55. Sleep(500);
  56. }
  57. system("pause");
  58. }
  59. #else
  60. BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
  61. {
  62. switch (ul_reason_for_call)
  63. {
  64. case DLL_PROCESS_ATTACH:
  65. {
  66. Utility::dprintf(_T("注入\n"));
  67. Utility::g_hDLLModule = hModule;
  68. Utility::GetConfigContent();
  69. Utility::hWorkThreadProc = CreateThread(NULL, 0, WorkThreadProc, NULL, 0, NULL);
  70. }
  71. case DLL_THREAD_ATTACH:
  72. case DLL_THREAD_DETACH:
  73. case DLL_PROCESS_DETACH:
  74. break;
  75. }
  76. return TRUE;
  77. }
  78. #endif