SHELLCODE на пример

Тема в разделе "WASM.ASSEMBLER", создана пользователем WIN32, 10 фев 2007.

Статус темы:
Закрыта.
  1. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    Здр.
    Вот я опять со своими баранами, в общем базонезависимый код у меня на С++ не получаеться писать, поэтому взялся за асм, вот что вышло :
    Код (Text):
    1. .386
    2. .MODEL Flat, STDCALL
    3. ;--------------------------------------------------------------------- ---
    4. ; Functions
    5. ;--------------------------------------------------------------------- ---
    6. ; 0x77D7057D - MessageBoxA
    7. ; 0x7C80CCA9 - ExitThread
    8. ;--------------------------------------------------------------------- ---
    9.  
    10. ;--------------------------------------------------------------------- ---
    11. ; libs
    12. ;--------------------------------------------------------------------- ---
    13. includelib c:masm32libuser32.lib
    14. includelib c:masm32libkernel32.lib
    15.  
    16. ;--------------------------------------------------------------------- ---
    17. ; D A T A
    18. ;--------------------------------------------------------------------- ---
    19. .DATA
    20. MyMessageBox DWORD 2010580349 ; MessageBoxA
    21. MyExitThread DWORD 2088815785 ; ExitThread
    22. .CODE
    23. start:
    24. push 0
    25. push 0
    26. push 0
    27. push 0
    28. call MyMessageBox
    29.  
    30. PUSH 0
    31. call MyExitThread
    32. end start
    в опкодах это вот что значит :
    Код (Text):
    1. 6A 00 ; push 0
    2. 6A 00 ; push 0
    3. 6A 00 ; push 0
    4. 6A 00 ; push 0
    5. E8 70 F5 96 77 ; Call user32.messageboxa
    6. 6A 00 ; push 0
    7. E8 95 BC 40 7C ; call kernel32.exitthread ( нужен, я ведь внедряю поток, и его надо както завершить )
    Вот, до внедрения подрубаюсь олькой к процессу (notepad.exe) но там он просто пишет "Access violation when executing [F790F57D] - use блабла" так вот, вроде у меня всё норм почему трэд останавливаеться ? и кстати в окне (в ольке) CPU потока почему то пусто =
    а в списке потоков вот что :
    Threads, item 0
    Ident=000006DC
    Entry=7C810856
    Data block=7FFDE000
    Last error=ERROR_SUCCESS (00000000)
    Status=Active
    Priority= 32 + 0
    User time= 0.0000 s
    System time= 0.0000 s

    внедряюсь так http://www.everfall.com/paste/id.php?8dg2e66libpl
     
  2. koderr

    koderr New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    205
    Че-то я сомневаюсь, что call'ы базонезависимые у тебя получились. Делай хотя бы
    Код (Text):
    1. mov reg, offset
    2. call reg
     
  3. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    адреса точные я проверял
     
  4. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    WIN32
    Блин давай код потыкаем носом
     
  5. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    PaCHER
    тыкай вон он :)
     
  6. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    Код (Text):
    1. ...
    2. char    shellcode[]=
    3.     "\x6A\x00"              // PUSH 0   MB_OK
    4.     "\x6A\x00"              // PUSH 0   Caption_NULL
    5.     "\x6A\x00"              // PUSH 0   Text_NULL
    6.     "\x6A\x00"              // PUSH 0   HWND_NULL
    7.  
    8.     "\xB8\x7D\x05\xD7\x77"  // mov eax, 0x77D7057D ( EIP+MessageBox )
    9.     "\xFF\xD0"              // call eax
    10.  
    11.     "\x6A\x00"              // PUSH 0   dwExitCode_0
    12.     "\xB8\xA9\xCC\x80\x7C"  // mov eax, 0x7C80CCA9 ( EIP+ExitThread )
    13.     "\xFF\xD0";             // call eax
    14. /*
    15. ; 0x77D7057D - MessageBoxA
    16. ; 0x7C80CCA9 - ExitThread
    17. */
    18. ...
    EIP+AIP_FUNC_ADDR :)
     
  7. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
  8. slackhead

    slackhead New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2007
    Сообщения:
    66
    поставь в самом начале 0xCC (int 3) включи Olly дефолтным дебаггером и глянь доходит ли дело до твоего кода, а если доходит то оттрэйси..
     
  9. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    slackhead угу я так и делал.
     
  10. slackhead

    slackhead New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2007
    Сообщения:
    66
    WIN32 результат? так ещё какие-то вопросы остались?
     
  11. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    яж отписался и выложил шеллкод, тема закрыта давно уже :)
     
Статус темы:
Закрыта.