Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
xor ebp,eax ; Сравниваем ebp с eax
sub ebx,ebp ; Отнимаем от ebx – ebp
sub ebx,k1 ; Отнимаем от ebx – вторые 32 бита ключа
sub eax,edx ; Отнимаем от eax – edx
dec edi ; Уменьшаем edi на единицу
jnz DLoopR ; Дешифруем дальше
pop edi ; Вынимаем из стека edi
mov v0,ebx ; Кладём результаты шифрования в отведённое
mov v1,ecx ; для них место
ret ; Возврат из подпрограммы
;-------------------------------------------------------;
v0 equ dword ptr [edi]
v1 equ dword ptr [edi+4]
k0 equ dword ptr [esi]
k1 equ dword ptr [esi+4]
k2 equ dword ptr [esi+8]
k3 equ dword ptr [esi+12]
Как вы могли заметить, алгоритм довольно-таки простой и легко реализуем на ассемблере. Теперь на базе данного алгоритма разработаем утилиту для шифрования файлов, ориентированную на ОС Windows.
Рассмотрим листинг (fencu.asm):
;--------------------------------------------------------;
; BUFFER TO ENCRYPT -> EDX ;
; KEY TO ENCRYPT -> EAX ;
; SIZE OF BUFFER (div 4 = 0) -> ECX ;
;--------------------------------------------------------;
total_encrypt:
pusha ; Сохраняем всё в стеке
mov esi,eax ; Кладем в esi – eax
mov edi,edx ; Кладём в edi – edx
work__:
pusha ; Сохраняем всё в стеке
call Encrypt ; Шифруем первые 64 бита данных