Авторские статьи Путаем следы

Discussion in 'Статьи' started by taha, 19 Sep 2006.

  1. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    Сегодня я хочу поговорить с вами о мусоре, столь полезной как оказалось в защите вещи.
    Начнём.
    Порывшись в инете можно найти вот такие заготовки.
    mov ecx,virus_size
    lea edi,pointer_to_code_to_crypt
    mov eax,crypt_key
    @@1: xor dword ptr [edi],eax
    add edi,4
    loop @@1
    Какже можно усложнить код. Порывшись ещё, можно узнать, как представить xor через or, not, and.

    xor eax, ebx
    -------------
    mov ecx, eax
    or ecx, ebx
    and eax,ebx
    not eax
    and eax,ecx

    Вот так. Можете проверить.
    Поискав в сатьях по булевой алгебре, можно нейти следущее предстовление or(and).

    or ecx, ebx
    ---------------
    not ecx
    not ebx
    and ecx, ebx
    not ecx
    Проверяем. Подстовляем "or" в "xor."

    mov ecx, eax
    not ecx
    not ebx
    and ecx, ebx
    not ecx

    and eax,ebx
    not eax
    and eax,ecx

    Затем вставляем бессмысленные функции, типа:
    and eax,11111111b
    or eax,0

    mov ecx, eax
    and eax,11111111b
    or eax,0
    not ecx
    or eax,0
    not ebx
    and eax,11111111b
    and ecx, ebx
    not ecx
    and eax,ebx
    and eax,11111111b
    not eax
    and eax,ecx

    И ещё хотелось напимнить, что многие команды взаимозаменяемы. Например:
    not eax = xor eax,0ffffh
    xor ecx,ecx = and ecx,0h = loop $ =sub ecx,ecx

    и т.д.
    Устрошающе выглядит?
    Хотелось бы больше задач на эту тему. Ведь видеть суть кода очень полезный навык.
    Жду задач.
     
    2 people like this.
  2. Dmitriy507

    Dmitriy507 Elder - Старейшина

    Joined:
    29 Apr 2006
    Messages:
    135
    Likes Received:
    19
    Reputations:
    6
    если не секрет от куда ты выдрал этот код?
     
  3. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    Dmitriy507, а 4то такого в нем сверхестественного?

    сам асмовый код - всего лишь одна из миллионов простеньких вариаций на тему полиморфизма\метаморфизма, а and\or - просто хаки булевой логики
     
    1 person likes this.
  4. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Вот только время выполнения этих циклов увеличится примерно в 10 раз, т.к.
    1) Как минимум двойное обращения к памяти.
    2) Задействование дополнительного регистра
    3) Несколько операций вместо одной
    Но если код не большей, то можно и пожертвовать времинем вымолнеия

    Тоже, только наоборот:
    and ecx, ebx
    ---------------
    not ecx
    not ebx
    or ecx, ebx
    not ecx

    А вот этого добра, вообще несметное количество:
    add eax, 0
    sub eax, 0
    ror eax, 0 или 32, 64, 128
    rol eax, 0 или 32, 64, 128
    mov eax, eax
    or eax, eax
    and eax, eax
    shr eax, 0
    shl eax, 0
    и множество других...
     
  5. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    В google введи "булевая алгебра" и читай, читай, читай.

    А я не говорю что нужно всё переделывать. Просто пару xor'ов.

    вот-вот!! Просто пара примеров.

    Я всё это к тому что задач по оптимизации и разгребании мусора на форуме практически нет :). Всё на отладку да на отладку. Яж без компа(в данный момент), и задачи в виде текста будут интересны не тока мне.
     
  6. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    >>Я всё это к тому что задач по оптимизации и разгребании мусора на форуме практически нет

    дык какая же это оптимизация, это же замусоревание ;)

    а так, поддерживаю, тема более-менее интересная и может как основа пригодиться
     
  7. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    Сапасибо за понимание
     
    1 person likes this.