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