Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

19.09.2006, 11:43
|
|
Постоянный
Регистрация: 20.08.2006
Сообщений: 327
Провел на форуме: 2472378
Репутация:
1077
|
|
Путаем следы
Сегодня я хочу поговорить с вами о мусоре, столь полезной как оказалось в защите вещи.
Начнём.
Порывшись в инете можно найти вот такие заготовки.
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
и т.д.
Устрошающе выглядит?
Хотелось бы больше задач на эту тему. Ведь видеть суть кода очень полезный навык.
Жду задач.
|
|
|

20.09.2006, 05:14
|
|
Участник форума
Регистрация: 29.04.2006
Сообщений: 171
Провел на форуме: 333060
Репутация:
63
|
|
если не секрет от куда ты выдрал этот код?
|
|
|

20.09.2006, 14:29
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
Dmitriy507, а 4то такого в нем сверхестественного?
сам асмовый код - всего лишь одна из миллионов простеньких вариаций на тему полиморфизма\метаморфизма, а and\or - просто хаки булевой логики
|
|
|

20.09.2006, 18:32
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Вот только время выполнения этих циклов увеличится примерно в 10 раз, т.к.
1) Как минимум двойное обращения к памяти.
2) Задействование дополнительного регистра
3) Несколько операций вместо одной
Но если код не большей, то можно и пожертвовать времинем вымолнеия
Сообщение от TAHA
Поискав в сатьях по булевой алгебре, можно нейти следущее предстовление or(and).
Тоже, только наоборот:
and ecx, ebx
---------------
not ecx
not ebx
or ecx, ebx
not ecx
Сообщение от TAHA
Затем вставляем бессмысленные функции, типа:
А вот этого добра, вообще несметное количество:
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
и множество других...
|
|
|

21.09.2006, 12:21
|
|
Постоянный
Регистрация: 20.08.2006
Сообщений: 327
Провел на форуме: 2472378
Репутация:
1077
|
|
если не секрет от куда ты выдрал этот код?
В google введи "булевая алгебра" и читай, читай, читай.
А я не говорю что нужно всё переделывать. Просто пару xor'ов.
А вот этого добра, вообще несметное количество:
вот-вот!! Просто пара примеров.
Я всё это к тому что задач по оптимизации и разгребании мусора на форуме практически нет  . Всё на отладку да на отладку. Яж без компа(в данный момент), и задачи в виде текста будут интересны не тока мне.
|
|
|

21.09.2006, 21:21
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
>>Я всё это к тому что задач по оптимизации и разгребании мусора на форуме практически нет
дык какая же это оптимизация, это же замусоревание
а так, поддерживаю, тема более-менее интересная и может как основа пригодиться
|
|
|

22.09.2006, 12:47
|
|
Постоянный
Регистрация: 20.08.2006
Сообщений: 327
Провел на форуме: 2472378
Репутация:
1077
|
|
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|