Сегодня я хочу поговорить с вами о мусоре, столь полезной как оказалось в защите вещи. Начнём. Порывшись в инете можно найти вот такие заготовки. 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 и т.д. Устрошающе выглядит? Хотелось бы больше задач на эту тему. Ведь видеть суть кода очень полезный навык. Жду задач.
Dmitriy507, а 4то такого в нем сверхестественного? сам асмовый код - всего лишь одна из миллионов простеньких вариаций на тему полиморфизма\метаморфизма, а and\or - просто хаки булевой логики
Вот только время выполнения этих циклов увеличится примерно в 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 и множество других...
В google введи "булевая алгебра" и читай, читай, читай. А я не говорю что нужно всё переделывать. Просто пару xor'ов. вот-вот!! Просто пара примеров. Я всё это к тому что задач по оптимизации и разгребании мусора на форуме практически нет . Всё на отладку да на отладку. Яж без компа(в данный момент), и задачи в виде текста будут интересны не тока мне.
>>Я всё это к тому что задач по оптимизации и разгребании мусора на форуме практически нет дык какая же это оптимизация, это же замусоревание а так, поддерживаю, тема более-менее интересная и может как основа пригодиться