2014-01-18 4 views
-5

마우스로 호출 된 봇으로부터 보호해야합니다. (클릭이 인간에 의한 것인지 아닌지). http://pastebin.com/SfebsEPj어떻게 우회로로부터 보호 할 수 있습니까?

을하지만 일부 사람들은 똥 우회했다 :

나는 그것을 보호해야 http://pastebin.com/HK9CekzZ

누구나 아이디어가 있습니까?

코드 :

HHOOK MouseHook; 

LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) 
{ 
    if (nCode == HC_ACTION) 
    { 
     if(wParam == WM_RBUTTONDOWN || wParam == WM_LBUTTONDOWN) 
     { 
      MSLLHOOKSTRUCT *info=(MSLLHOOKSTRUCT*)lParam;  
      if((info->flags & LLMHF_INJECTED) == LLMHF_INJECTED) 
      { 
       ExitProcess(-1); 
      } 
     } 
    } 
    return CallNextHookEx(MouseHook,nCode,wParam,lParam); 
} 


void AntiShotbotLogger() 
{ 
    HINSTANCE hInstance = GetModuleHandle(NULL); 

    MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, hInstance, NULL); 
    MSG message; 
    while (GetMessage(&message,NULL,0,0)) { 
     TranslateMessage(&message); 
     DispatchMessage(&message); 
    } 

    UnhookWindowsHookEx(MouseHook); 

바이 패스 :

HHOOK MouseHook; 


LRESULT CALLBACK ReplaceMousehook(int nCode, WPARAM wParam, LPARAM lParam) 
{ 
    if (nCode == HC_ACTION && (wParam == WM_RBUTTONDOWN || wParam == WM_LBUTTONDOWN)) 
    { 
     reinterpret_cast<MSLLHOOKSTRUCT*>(lParam)->flags = 0; 
     std::cout << "Injection bypassed!" << std::endl; 
    } 
    return CallNextHookEx(MouseHook,nCode,wParam,lParam); 
} 


void ShotbotBypassExample() 
{ 
    while(true) 
    { 
     if (GetAsyncKeyState(VK_NUMPAD0)&1) 
     { 
      std::cout << "Sending input now." << std::endl; 
      INPUT input[2]; 
      input[0].type = INPUT_MOUSE; 
      input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;  
      input[1].type = INPUT_MOUSE; 
      input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP; 
      SendInput(2, input, sizeof(INPUT)); 
     } 


     Sleep(1); 
    } 
} 


int main(int argc, char** argv) 
{ 
    std::thread keybind(ShotbotBypassExample); 
    keybind.joinable(); 


    HHOOK hook = SetWindowsHookEx(WH_MOUSE_LL, ReplaceMousehook, GetModuleHandle(0), NULL); 
    MSG message; 
    while (GetMessage(&message,NULL,0,0)) { 
     TranslateMessage(&message); 
     DispatchMessage(&message); 
    } 
    return 0; 
} 
+0

작은 독립적 인 예를 질문에 붙여 넣으십시오. 신뢰할 수없는 외부 링크를 열지 않으려 고합니다. –

+2

_ '긴급히 필요합니다.'_ 기본 하향 추종자이기 때문에 그걸 제거했습니다 ... –

+0

@ H2CO3 트러스트, 김밥입니다. – user3018746

답변

0

하지 전화 CallNextHookEx을 수행하십시오 자신의 후크를 설치합니다. 그들의 훅은 호출되지 않습니다 (오래된 경우).

또한, 훅을 설치할 때로드 된 DLL에 대한 프로세스를 확인하십시오. 나중에로드 된 모든 DLL에는 후크가 무시 될 수 있습니다.

+0

어떻게 CallNextHookEx를 호출하지 않고도 다른 후크를 설치할 수 있습니까? – user3018746

관련 문제