<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                創建win32控制臺程序 ```c++ // HookMessageBox.cpp : 定義控制臺應用程序的入口點。 // #include "stdafx.h" #include <windows.h> //掛鉤類 inline鉤子 class MyHookClass { public: MyHookClass() { m_pfnOld = nullptr; ZeroMemory(m_bNewBytes, 5); ZeroMemory(m_bOldBytes, 5); } ~MyHookClass() { UnHook(); } /* * inline掛鉤函數 * @param szModeleName 目標函數所在的模塊名稱 * @param szFuncName 目標函數名稱 * @param pHookFunc 掛鉤的地址 * @return */ BOOL Hook(char *szModuleName, char *szFuncName, PROC pHookFunc) { BOOL bRet = FALSE; do { m_pfnOld = GetProcAddress(GetModuleHandleA(szModuleName), szFuncName); if (!m_pfnOld) { break; } DWORD dwNum = 0; ReadProcessMemory(GetCurrentProcess(), m_pfnOld, m_bOldBytes, 5, &dwNum); //jmp 0xe9 m_bNewBytes[0] = '\xe9'; *(DWORD *)(m_bNewBytes + 1) = (DWORD)pHookFunc - (DWORD)m_pfnOld - 5; WriteProcessMemory(GetCurrentProcess(), m_pfnOld, m_bNewBytes, 5, &dwNum); bRet = TRUE; } while (FALSE); return bRet; } void UnHook() { if (m_pfnOld != nullptr) { DWORD dwNum = 0; WriteProcessMemory(GetCurrentProcess(), m_pfnOld, m_bOldBytes, 5, &dwNum); } } BOOL ReHook() { BOOL bRet = FALSE; if (m_pfnOld != nullptr) { DWORD dwNum = 0; WriteProcessMemory(GetCurrentProcess(), m_pfnOld, m_bNewBytes, 5, &dwNum); bRet = TRUE; } return bRet; } private: PROC m_pfnOld; //可恢復的 BYTE m_bOldBytes[5]; BYTE m_bNewBytes[5]; }; MyHookClass g_MsgHook; int WINAPI MyMessageBox( _In_opt_ HWND hWnd, _In_opt_ LPCTSTR lpText, _In_opt_ LPCTSTR lpCaption, _In_ UINT uType ) { g_MsgHook.UnHook(); MessageBoxW(hWnd, L"有罪的MessageBox", L"打的就是你", MB_OK); g_MsgHook.ReHook(); //CreateProcess(高危函數) //啟動某個程序 你掛住了他 就可以讓用戶什么程序都啟動不了 //但是 有360 return 0; } int _tmain(int argc, _TCHAR* argv[]) { //SetWindowsHookEx 他無法實現,他只支持一些窗口的操作 //高級運用 系統API級別的HOOK //MoveWindow FindWindow //感覺干貨太多 接受不了 跳到某個地址去 //那么是不是我們把地址裝了就OK了 //替換他的調用地址 就變成個了我們的了 MessageBoxW(nullptr, L"無辜的MessageBox", L"隊長是我別開槍", MB_OK); g_MsgHook.Hook("user32.dll", "MessageBoxW", (PROC)MyMessageBox); MessageBoxW(nullptr, L"無辜的MessageBox", L"隊長是我別開槍", MB_OK); g_MsgHook.UnHook(); return 0; } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看