Выполнение кода на стеке.

Тема в разделе "WASM.BEGINNERS", создана пользователем REx07, 27 июн 2010.

  1. qqwe

    qqwe New Member

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

    REx07 New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2010
    Сообщения:
    5
    Задача успешна решилась использованием дазассемблера длин от sars он же Catchy32. По поводу релоков Clerk все верно говорит, просто в контексте данной задачи код между метками хоть и доступен, но рассматривается как недоступный. Чуть позже выложу реализацию, хотя из предложения kweed и так все понятно.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    REx07
    Просто ваша задача очень проста - на сколько я понял вам известен диапазон адресов кода(начало и конец его), для этого кода нужно поправить смещения. Вы проходите дизасмом длин и правите смещения в ветвлениях, не используя в этом коде непосредственно ссылок на данные. Это уже не морфинг, граф то не меняется. Тогда и не нужен никакой дизасм длин - это простой перемещаемый код(пикод). По мойму задача бредовая.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1. ; +
    2. ; Eax - число префиксов.
    3. ; Ecx - последний префикс.
    4. ; o Размер инструкции не проверяем(16).
    5. ;
    6. QueryPrefixLength proc uses esi edi Ip:PVOID
    7. Local PrefixesTable[12]:BYTE
    8.     mov dword ptr [PrefixesTable],02EF3F2F0H
    9.     mov dword ptr [PrefixesTable + 4],06426363EH
    10.     mov dword ptr [PrefixesTable + 8],000676665H
    11.     mov esi,Ip
    12.     cld
    13.     lea edx,PrefixesTable
    14. @@:
    15.     lodsb
    16.     mov edi,edx
    17.     mov ecx,11
    18.     repne scasb
    19.     jz @b
    20.     dec esi
    21.     xor eax,eax
    22.     movzx ecx,byte ptr [esi - 1]
    23.     sub esi,Ip
    24.     .if Zero?
    25.     xor ecx,ecx
    26.     .else
    27.     mov eax,esi
    28.     .endif
    29.     ret
    30. QueryPrefixLength endp
    31.  
    32. ; +
    33. ; o Не проверяем Pfx 0x66.
    34. ; o Не выполняем поправку фиксапов.
    35. ;
    36. MoveBlock proc uses ebx esi edi FirstIp:PVOID, LastIp:PVOID, Buffer:PVOID
    37.     mov ebx,Buffer
    38.     mov esi,FirstIp
    39.     mov edi,ebx
    40.     cld
    41.     sub ebx,esi ; Dt
    42. Next:
    43.     invoke QueryPrefixLength, Esi
    44.     mov ecx,eax
    45.     rep movsb   ; Pfx
    46.     mov al,byte ptr [esi]
    47.     sub al,0E8H ; Jump/Call near rel.
    48.     jz @f
    49.     dec al
    50.     jz @f
    51.     Call VirXasm32
    52.     mov ecx,eax
    53.     rep movsb
    54.     jmp Check
    55. @@:
    56.     movsb
    57.     lodsd
    58.     sub eax,ebx
    59.     stosd
    60. Check:
    61.     cmp LastIp,esi
    62.     ja Next
    63.     xor eax,eax
    64.     ret
    65. MoveBlock endp
    Можно прикрутить сюда парсер, который будет находить фиксапы для целевого участка кода и выполнять их поправки(это например если в копируемом коде есть калбэки).
     
  5. Satsura

    Satsura S4(uR4 __r00tw0rm__

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    374
    Адрес:
    Узбекистон, бляать!!11 :D
    2REx07
    М.....да... Бред конечно)) Но тема...! и пища для размышления для таких кодокопателей как я))
    Но 7-е чувство мне подсказывает что сей механизм антиотладки далеко не пойдет,..... хотя все может быть, всё...;)
     
  6. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Satsura
    это гуан, а не механизм.
    техника исполняемого кода в стеке умерла много лет назад.
     
  7. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    REx07 - на счет DEP, если внимательно почитаете, дажет беглым взглядом, то поймете что вы ошибаетесь..

    Clerk если добиться автоматизации конвертации в пикод, все антивирусные базы, будут писать вновь )).

    Кстати, ведь код на стеки будет жить только время его выполнения, а дальше он перезатрется, так что это весьма хороший упаковщик.(Конечно же если оригинал криптофан, а по мере помещения на стек декриптовка)
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    IceCrashLdr
    Для аверского эмулятора пользовательский стек это проекция памяти в его ап. Посему джамп на стек ничем не отличается от джампа в кодосекцию.