Получение шела, лучший способ

Тема в разделе "WASM.RESEARCH", создана пользователем neutronion, 28 окт 2011.

  1. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Задача такая нужно автоматизированное средство получения кода из
    вида:
    mov eax,1

    в вид:
    \xB8\x01\x00\x00\x00

    ну кто в теме знает в чем суть
    Можно делать в Ольке и другими способами
    Нужен простейший и быстрый способ получить результат
     
  2. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    да вроде были утилиты под это дело типа bintodb

    Можно и самим bintodb а потом в far найти и заменить запятые на \x и грохнуть все db

    Тупо и просто ...

    А так смотри в metasploit есть утилиты заточенные под это ...
     
  3. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    В метасплойте вроде уже готовые только
     
  4. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    фасм + своя утиль для перевода в текстовый хекс. или форматер до/переписать
    или васм + влинк. в влинке есть режим линковки в бин или хекс дамп (лучшн посмотреть что и как самому, поскольку особенно не проверял)

    с фасмом меньше инструментов и не надо разбирать много опций, с влинком можно переводить не только асм, но и вообще любую сборку из форматов что он понимает
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    С фасмом вообще никаких других утилит и инструментов не надо.
    Код (Text):
    1. use32
    2.  
    3. mov eax,1
    4.  
    5. repeat $-$$
    6.     load buf byte from $$+(%-1)
    7.     display '\x'
    8.     repeat 2
    9.         dig = buf shr ((2-%)*4) and 0Fh+'0'
    10.         if dig > '9'
    11.             dig = dig-'0'+('A'-10)
    12.         end if
    13.         display dig
    14.     end repeat
    15. end repeat
    На выходе имеем \xB8\x01\x00\x00\x00.

    Я обычно нечто подобное использую, если мне надо кусок кода в OllyDbg вставить, чтобы заставить процесс его выполнить вне очереди. Например, если надо запустить cmd из произвольного участка кода:
    Код (Text):
    1. use32
    2. include 'general.inc'
    3. include 'win32a.inc'
    4.  
    5. org 0x401160
    6. label CreateProcessA at 0x76951C28
    7. label CloseHandle at 0x7699AE8D
    8.  
    9. pushad
    10. sizeof.cmdpath pushstr "C:\Windows\system32\cmd.exe",0
    11. mov esi,esp
    12. sub esp,sizeof.STARTUPINFO
    13.     mov edi,esp
    14.     xor eax,eax
    15.     mov ecx,sizeof.STARTUPINFO
    16.     rep stosb
    17.     mov dword[esp+STARTUPINFO.cb],sizeof.STARTUPINFO
    18.     mov dword[esp+STARTUPINFO.dwFlags],STARTF_USESHOWWINDOW
    19.     mov dword[esp+STARTUPINFO.wShowWindow],SW_SHOW
    20. mov edi,esp
    21. sub esp,sizeof.PROCESS_INFORMATION
    22. mov ebx,esp
    23. stdcall CreateProcessA,esi,NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,edi,ebx
    24. stdcall CloseHandle,[ebx+PROCESS_INFORMATION.hThread]
    25. stdcall CloseHandle,[ebx+PROCESS_INFORMATION.hProcess]
    26. add esp,sizeof.cmdpath+sizeof.STARTUPINFO+sizeof.PROCESS_INFORMATION
    27. popad
    28.  
    29. repeat $-$$
    30.     load buf byte from $$+(%-1)
    31.     dispHex buf,2
    32. end repeat
    На выходе имеем:
    Код (Text):
    1. 60686578650068636D642E686D33325C68797374656877735C7368696E646F68433A5C5789E683EC4489E731C0B944000000F3AAC7042444000000C744242C01000000C74424300500000089E783EC1089E353576A006A006A106A006A006A006A0056E8600A5576FF7304E8BD9C5976FF33E8B69C597683C47061
    , что можно просто вставить в Olly.
     
  6. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    l_inc
    хм, да, интересно и просто. жалко только, что затеряется в форуме.

    было бы хорошо подобные мелкие трюки выносить в отдельную дополняемую статью на основном сайте (администрацией, видимо. о вике ж можно только мечтать)
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    qqwe
    Это не трюк. Это тривиальный пример использования стандартных возможностей fasm. :)
    Кстати, если вывод через display заменить на вывод через db (macro display [args] { common db args }), то такой же текстовый шестнадцатиричный вывод можно получать в скомпилированном текстовом файле (format binary as 'txt'). Правда, придётся чуть-чуть помучаться, чтобы избавиться от скомпилированного кода в txt-файле, но по большому счёту это не обязательно.
     
  8. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    все трюки это тривиальные возможности если вкапываться. но на вкапывание то нет времени. потому, пусть тривиальные, но полезные обороты надо бы выносить с оглавлением. для быстрого нахождения когда надо.
    видели кукбуки по разным тулзам? вот типа этого. тоже все в рамках инструкций, но просто часто нужные мелочи и полезности.
     
  9. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    http://www.sendspace.com/file/w2qf1t
    ppjz0rBvfJbHJFvn0c
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    qqwe
    Можно таки довести приведеный способ до уровня не самой тривиальной полезности (и под тривиальной здесь понимается такая, за которой лень будет в "кукбук" лезть вместо того, чтобы самостятельно аж сорок секунд "вкапываться"). Например, следующим образом. Такой код:
    Код (Text):
    1. format binary as 'txt'
    2. use32
    3. include 'hexencode.inc'
    4.  
    5. hexencodestart
    6.     mov eax,1
    7. hexencodeend
    скомпилируется в строку "B801000000" .
    hexencodestart принимает два необязательных параметра: строка ведущих и строка завершающих символов. Т.о. аналогично можно написать:
    Код (Text):
    1. format binary as 'txt'
    2. use32
    3. include 'hexencode.inc'
    4.  
    5. hexencodestart '0x',','
    6.     mov eax,1
    7. hexencodeend
    , что скомпилируется в строку "0xB8,0x01,0x00,0x00,0x00," .
    Ну и наконец можно даже делать вложенные блоки:
    Код (Text):
    1. format binary as 'txt'
    2. use32
    3. include 'hexencode.inc'
    4.  
    5. hexencodestart '\x'
    6.     mov eax,1
    7.     hexencodestart
    8.         mov eax,1
    9.     hexencodeend
    10.     mov eax,1
    11. hexencodeend
    Сначала будет перекодирован вложенный блок. А внешний блок перекодирует то, что получилось от вложенного блока: "\xB8\x01\x00\x00\x00\x42\x38\x30\x31\x30\x30\x30\x30\x30\x30\xB8\x01\x00\x00\x00" .

    Необходимый для вышеописанных извращений hexencode.inc приложен.
     
  11. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Во накидали Ну спасибо, поделюсь как это делает чукча типа меня
    Компилю асм в натив функции в Вижуал Студии, затем дизассеблю в Ида далее скриптом все байтики вытаскиваю Так у нас делают в Анадыре :)
    к Фасму нужно будет внимательней приглядеться