Дизассемблирование

Тема в разделе "WASM.ASSEMBLER", создана пользователем EvilsInterrupt, 26 сен 2004.

  1. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Я тута в aspack увидел:



    public main

    main proc near

    pusha

    call first_anti

    db 0E9h ; first bad byte :)

    main endp

    main_metka:

    jmp short sekond_anti

    first_anti:

    pop ebp

    inc ebp

    push ebp

    retn ; jmp main_metka

    sekond_anti:

    call start_code

    db 0EBh ; sekond bad byte :)

    start_code:



    Это же не писк моды дизассемблирования?! :)))

    Какие еще есть?
     
  2. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    100
    Адрес:
    Ukraine
    Что-то я не понял что это за first Bad Byte и sekond Bad Byte. jmp без операндов. Для чего? И что случится при их выполнении?
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    А ты уверен что они выполнятся? ;))))
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    (Эта) подобная ;) тема как раз недавно обсуждалась в треде А бывает относительный безусловный jmp? ;)



    не полностью понятно что кого куда вызывает, но вызываемой процедуре никто не запрещает сделать, например, следующее:
    Код (Text):
    1.  
    2. mov ebx,dword ptr [esp]
    3. mov byte ptr куда-то,[ebx] ; читаем байт, следующий за call
    4. inc dword ptr [esp] ; увеличиваем адрес возврата на один
    5.                     ; (на следующий байт)
    6.  




    еще: вызываемая процедура также может никогда и не возвращаться в вызываемую (на то он и асьм ;)
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    shoo

    Возми Aspack пройди в VA Entry Point и будет ли тебе и тогда казаться что темы похожи?
     
  6. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    виноват - уже исправился ;) я просто рассуждал исходя из приведенного кода ;)
     
  7. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    А еще методы противодействия как я просил можешь сказать?
     
  8. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    я глянул код внимательней (я ж, типа, на работе ;) это как раз и есть момент запутывания дизасемблера, когда нужно глазками пробегать чтобы понять, откуда начинать думать.



    а это точно так:



    не call main, который возвращает в start_code потом?



    я вообще-то не асс ;) наверное, в иде можно скрипт лепить для таких дел, но их тоже на все случаи не слепишь (полиморфизм, однако ;)
     
  9. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Да я увидел это в иде, но можно и в Hiew, ваще прикольная вещь, но легко распознается нечто подобное было в Образ Мышления Ida pro:

    add si,6

    jmp si

    b9

    А тут не посредственно с адресами без регистров, Есть ли еще методы противодействия?
     
  10. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    ну, путать можно по разному, даже не так явно

    в фрейме процедуры взять и впендюрить адрес в [ebp+4], после корректного leave пойдем по этому адресу. а вообще, если честно, не понял, противодействие чему ты имеешь ввиду - дизассемблеру или наглому коду? если коду - то все случаи не рассмотришь. Я было анализировал почтовый троян (который ко мне пришел по почте, хе-хе) - там корректная процедура main, которая почти ничего не делает и культурно завершается. там просто пишется двойное слово, которое затирает "культурное завершение" нехорошим кодом, который во время выполнения программы вызывает исключение, а обработчик размещен в ресурсах, который и расшифровывает зашифрованый текст программы. Пришлось вручную менять байты согласно командам и передизассемблировать, чтобы это понять. А если ты хочешь противодействовать взлому - это вопрос не только технический, но и психологический, так как проведя дизассемблер ты заставишь человека с кислой рожей наклонится к монитору - и тут уже держись ;) лучше поводить за нос, чем резко явно мусорить (мнение мое личное)
     
  11. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Спасибо