Я пытаюсь разобрать зашифрованный файл & RQ, но я действительно не могу понять код asm. Он встроен в функцию Delphi.Что делает этот код? Delphi asm
Может ли кто-нибудь помочь мне понять это?
procedure decritt(var s:string; key:integer);
asm
mov ecx, key
mov dl, cl
shr ecx, 20
mov dh, cl
mov esi, s
mov esi, [esi]
or esi, esi // nil string
jz @OUT
// now esi points to the first character of the string
mov ah, 10111000b
mov ecx, length(s)
or ecx, ecx
jz @OUT
@IN:
mov al, [esi]
xor al, ah
rol al, 3
xor al, dh
sub al, dl
mov [esi], al
inc esi
ror ah, 3
dec ecx
jnz @IN
@OUT:
end; // decritt
Спасибо.
Он выглядит правильно, но не работает. Не знаю, почему. Ключ 300109517, результирующая строка должна быть «hello world», зашифрованная строка «\ xdd \ x92 \ x06 \ xb8 \ xcf \ x0f \ x65 \ x81 \ x9c \ xf3 \ x07" – ekini
Вы можете выполнить он с отладчиком для итерации или два и смотреть rgisters al, ах. Посмотрите, соответствуют ли их значения значениям одинаковых именованных переменных в моей программе на C. – hirschhornsalz