Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизПеревести из ASM в Delphi Найти похожие ветки
← →
Ji © (2005-03-13 14:47) [0]Кто знает ассемблер, помогите, плз перевести данный код в Делфи:
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
jz @OUT
mov ah, 10111000b
mov ecx, [esi-4]
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;
← →
Anatoly Podgoretsky © (2005-03-13 14:49) [1]Судя по
var
s:string;
key:integer;
это и есть в Дельфи.
А что данные код делает, приведи формулу.
← →
Ji © (2005-03-13 15:04) [2]Это не знаю, что он конкретно делает... Эту процедуру я взял из исходников... Это какой-то алгоритм простого шифрования. Здесь S - шифруемая строка, K - ключ для шифрования.
Все бы ничего, но... Если я вставляю этот код в программу в виде процедуры, то в том месте где я эту процедуру использую, она изменяет переменные к этой процедуре никак не относящиеся. Хочу разобраться и заодно понять что делает этот алгоритм со строкой
← →
Anatoly Podgoretsky © (2005-03-13 15:11) [3]Ясно, значит можно выбросить и заменить любой другой.
← →
Ji © (2005-03-13 15:22) [4]Можно :) Но мне нужно не шифровать, а РАСШИФРОВАТЬ... Это в продолжение темы про XOR текста, которую обсуждали наднях:
http://delphimaster.net/view/1-1110574689/
Простой xor как оказалось там не работает... Что-то сложнее, и как раз вот этот код делает то что мне нужно и я смог расшифровать тот файл с помощью этого кода
← →
Anatoly Podgoretsky © (2005-03-13 15:32) [5]Возможно и похитрее, насчет XOR были только предположения.
А разбираться с этим кодом нет желания. Совсем другое дело если тебе поступает зашифрованный код и тебе надо расшифровывать, но в этом случае от адресатов надо потребовать алгоритм расшифровки и/или готовые библиотеки.
А если с разбираться данным кодом, то надо вручную на бумаге прогнать алогритм с эталонным текстом. Код здесь не сложный, но нужно желание.
← →
DrPass © (2005-03-13 15:33) [6]
> в том месте где я эту процедуру использую, она изменяет
> переменные к этой процедуре никак не относящиеся
Наверное же перед вызовом этой процедуры не мешало бы регистры в стек посбрасывать, а после - поднять.
← →
Ji © (2005-03-13 15:36) [7]Ясно... Конечно было бы интересно с алгоритмом разобраться...
В общем баг с потерей значений переменной обошел: после этого кода заново вычисляю и присваиваю нужное значение... Но все равно он остался... может еще в чем-то потом проявится...
← →
Ji © (2005-03-13 15:39) [8]> DrPass © (13.03.05 15:33) [6]
> Наверное же перед вызовом этой процедуры не мешало бы регистры > в стек посбрасывать, а после - поднять.
А можно чуть подробней?
← →
Anatoly Podgoretsky © (2005-03-13 15:48) [9]Скажем так данная процедура нерабочая, является замаскированым трояном, втихую портит регистры и память. Ты ее выбрось от греха подальше.
← →
DrPass © (2005-03-13 15:49) [10]push eax
push ecx
push edx
...
pop edx
pop ecx
pop eax
Но насколько я вижу, это код побайтового XOR строки. Там можно и без ассемблера вполне обойтись.
← →
Ji © (2005-03-13 15:59) [11]DrPass © (13.03.05 15:49) [10]
> Там можно и без ассемблера вполне обойтись.
Ну я в общем-то для этого и создал тему.
Хотя это не совсем xor. Простой Xor дает другие результаты.
← →
Anton_K © (2005-03-13 16:01) [12]>Ji
За умеренную плату напишу тебе процедуру на ассемблере для расшифровки.
← →
Anatoly Podgoretsky © (2005-03-13 16:02) [13]DrPass © (13.03.05 15:49) [10]
Согласно спецификации Дельфи, данный код не нужен как бессмысленный. Сохранять надо совсем другие регистры.
← →
Ji © (2005-03-13 16:21) [14]> DrPass © (13.03.05 15:49) [10]
Помогло. Реальное спасибо.
Только я регистры сохранил все подряд. Не знаю, является ли это необходимым, но теперь работает.
Я написал:
push esi
push ecx
и pop соответственно.
← →
begin...end © (2005-03-13 17:37) [15]> Ji © (13.03.05 16:21) [14]
Регистры EAX, ECX и EDX сохранять не нужно.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c