OSDN Git Service

enable command notify on x64
[yamy/yamy.git] / fixscancodemap.cpp
index 9083c48..249ba1a 100755 (executable)
@@ -25,19 +25,19 @@ static DWORD WINAPI invokeFunc(InjectInfo *info)
 \r
        HANDLE hProcess = info->pOpenProcess(PROCESS_QUERY_INFORMATION, FALSE, info->pid_);\r
        if (hProcess == NULL) {\r
-               result = 1;\r
+               result = YAMY_ERROR_ON_OPEN_YAMY_PROCESS;\r
                goto exit;\r
        }\r
 \r
        ret = pOpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_DUPLICATE , &hToken);\r
        if (ret == FALSE) {\r
-               result = 2;\r
+               result = YAMY_ERROR_ON_OPEN_YAMY_TOKEN;\r
                goto exit;\r
        }\r
 \r
        ret = pImpersonateLoggedOnUser(hToken);\r
        if (ret == FALSE) {\r
-               result = 3;\r
+               result = YAMY_ERROR_ON_IMPERSONATE;\r
                goto exit;\r
        }\r
 \r
@@ -49,7 +49,7 @@ static DWORD WINAPI invokeFunc(InjectInfo *info)
 \r
        ret = pRevertToSelf();\r
        if (ret == FALSE) {\r
-               result = 4;\r
+               result = YAMY_ERROR_ON_REVERT_TO_SELF;\r
                goto exit;\r
        }\r
 \r
@@ -88,13 +88,13 @@ int FixScancodeMap::acquirePrivileges()
        HANDLE hToken = NULL;\r
 \r
        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {\r
-               ret = 5;\r
+               ret = YAMY_ERROR_ON_OPEN_CURRENT_PROCESS;\r
                goto exit;\r
        }\r
 \r
        LUID luid;\r
        if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {\r
-               ret = 6;\r
+               ret = YAMY_ERROR_ON_LOOKUP_PRIVILEGE;\r
                goto exit;\r
        }\r
 \r
@@ -104,7 +104,7 @@ int FixScancodeMap::acquirePrivileges()
        tk_priv.Privileges[0].Luid = luid;\r
 \r
        if (!AdjustTokenPrivileges(hToken, FALSE, &tk_priv, 0, NULL, NULL)) {\r
-               ret = 7;\r
+               ret = YAMY_ERROR_ON_ADJUST_PRIVILEGE;\r
                goto exit;\r
        }\r
 \r
@@ -201,62 +201,45 @@ int FixScancodeMap::injectThread(DWORD dwPID)
        SIZE_T memSize =  afterFuncAddr - invokeFuncAddr;\r
 \r
        if ((wi.m_hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID)) == NULL) {\r
-               ret = 8;\r
+               ret = YAMY_ERROR_ON_OPEN_WINLOGON_PROCESS;\r
                goto exit;\r
        }\r
 \r
        wi.m_remoteMem = VirtualAllocEx(wi.m_hProcess, NULL, memSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);\r
        if (wi.m_remoteMem == NULL) {\r
-               ret = 9;\r
+               ret = YAMY_ERROR_ON_VIRTUALALLOCEX;\r
                err = GetLastError();\r
                goto exit;\r
        }\r
 \r
        wFlag = WriteProcessMemory(wi.m_hProcess, wi.m_remoteMem, (char*)invokeFunc, memSize, (SIZE_T*)0);\r
        if (wFlag == FALSE) {\r
-               ret = 10;\r
+               ret = YAMY_ERROR_ON_WRITEPROCESSMEMORY;\r
                goto exit;\r
        }\r
 \r
        wi.m_remoteInfo = VirtualAllocEx(wi.m_hProcess, NULL, sizeof(m_info), MEM_COMMIT, PAGE_READWRITE);\r
        if (wi.m_remoteInfo == NULL) {\r
-               ret = 11;\r
+               ret = YAMY_ERROR_ON_VIRTUALALLOCEX;\r
                err = GetLastError();\r
                goto exit;\r
        }\r
 \r
        wFlag = WriteProcessMemory(wi.m_hProcess, wi.m_remoteInfo, (char*)&m_info, sizeof(m_info), (SIZE_T*)0);\r
        if (wFlag == FALSE) {\r
-               ret = 12;\r
+               ret = YAMY_ERROR_ON_WRITEPROCESSMEMORY;\r
                goto exit;\r
        }\r
 \r
-#if 0\r
-       TCHAR buf[1024];\r
-\r
-       _stprintf_s(buf, sizeof(buf)/sizeof(buf[0]),\r
-               _T("execute UpdatePerUserSystemParameters(), inject code to winlogon.exe?\r\n")\r
-               _T("invokeFunc=0x%p\r\n")\r
-               _T("afterFunc=0x%p\r\n")\r
-               _T("afterFunc - invokeFunc=%d\r\n")\r
-               _T("remoteMem=0x%p\r\n")\r
-               _T("remoteInfo=0x%p(size: %d)\r\n"),\r
-               invokeFunc, afterFunc, memSize, m_remoteMem, m_remoteInfo, sizeof(m_info));\r
-       if (MessageBox((HWND)NULL, buf, _T("upusp"), MB_OKCANCEL | MB_ICONSTOP) == IDCANCEL) {\r
-               (m_info.pUpdate)(0, 1);\r
-               goto exit;\r
-       }\r
-#endif\r
-\r
        wi.m_hThread = CreateRemoteThread(wi.m_hProcess, NULL, 0, \r
                (LPTHREAD_START_ROUTINE)wi.m_remoteMem, wi.m_remoteInfo, 0, NULL);\r
        if (wi.m_hThread == NULL) {\r
-               ret = 13;\r
+               ret = YAMY_ERROR_ON_CREATEREMOTETHREAD;\r
                goto exit;\r
        }\r
 \r
        if (WaitForSingleObject(wi.m_hThread, 5000) == WAIT_TIMEOUT) {\r
-               ret = 14;\r
+               ret = YAMY_ERROR_TIMEOUT_INJECTION;\r
                m_wlTrash.push_back(wi);\r
                goto dirty_exit;\r
        }\r
@@ -303,11 +286,11 @@ int FixScancodeMap::update()
        SystemParametersInfo(SPI_GETMINIMIZEDMETRICS, sizeof(mm), &mm, 0);\r
 \r
        result = injectThread(m_winlogonPid);\r
-       if (result == 14) {\r
+       if (result == YAMY_ERROR_TIMEOUT_INJECTION) {\r
                // retry once\r
                result = injectThread(m_winlogonPid);\r
-               if (result == 0) {\r
-                       result = 22;\r
+               if (result == YAMY_SUCCESS) {\r
+                       result = YAMY_ERROR_RETRY_INJECTION_SUCCESS;\r
                }\r
        }\r
 \r
@@ -330,20 +313,20 @@ int FixScancodeMap::fix()
        if (ret) {\r
                origMap = reinterpret_cast<ScancodeMap*>(malloc(origSize));\r
                if (origMap == NULL) {\r
-                       result = 16;\r
+                       result = YAMY_ERROR_NO_MEMORY;\r
                        goto exit;\r
                }\r
 \r
                ret = m_pReg->read(_T("Scancode Map"), reinterpret_cast<BYTE*>(origMap), &origSize, NULL, 0);\r
                if (ret == false) {\r
-                       result = 17;\r
+                       result = YAMY_ERROR_ON_READ_SCANCODE_MAP;\r
                        goto exit;\r
                }\r
 \r
                fixSize = origSize;\r
                fixMap = reinterpret_cast<ScancodeMap*>(malloc(origSize + s_fixEntryNum * sizeof(s_fixEntry[0])));\r
                if (fixMap == NULL) {\r
-                       result = 18;\r
+                       result = YAMY_ERROR_NO_MEMORY;\r
                        goto exit;\r
                }\r
 \r
@@ -355,7 +338,7 @@ int FixScancodeMap::fix()
                fixSize = sizeof(ScancodeMap);\r
                fixMap = reinterpret_cast<ScancodeMap*>(malloc(sizeof(ScancodeMap) + s_fixEntryNum * sizeof(s_fixEntry[0])));\r
                if (fixMap == NULL) {\r
-                       result = 19;\r
+                       result = YAMY_ERROR_NO_MEMORY;\r
                        goto exit;\r
                }\r
 \r
@@ -390,7 +373,7 @@ int FixScancodeMap::fix()
 \r
        ret = m_pReg->write(_T("Scancode Map"), reinterpret_cast<BYTE*>(fixMap), fixSize);\r
        if (ret == false) {\r
-               result = 20;\r
+               result = YAMY_ERROR_ON_WRITE_SCANCODE_MAP;\r
                goto exit;\r
        }\r
 \r
@@ -402,7 +385,7 @@ int FixScancodeMap::fix()
                ret = m_pReg->remove(_T("Scancode Map"));\r
        }\r
        if (ret == false) {\r
-               result = 21;\r
+               result = YAMY_ERROR_ON_WRITE_SCANCODE_MAP;\r
                goto exit;\r
        }\r
 \r
@@ -547,7 +530,7 @@ FixScancodeMap::FixScancodeMap() :
        }\r
 \r
        if ((m_winlogonPid = getWinLogonPid()) == 0) {\r
-               m_errorOnConstruct = 15;\r
+               m_errorOnConstruct = YAMY_ERROR_ON_GET_WINLOGON_PID;\r
                goto exit;\r
        }\r
 \r