Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
9-1104704810
Trip
2005-01-03 01:26
2005.03.27
Потестируйте мой скринсэйвер на GLScene ?


3-1109250939
Sam Stone
2005-02-24 16:15
2005.03.27
Старый глюк с DOA


4-1108073150
GanibalLector
2005-02-11 01:05
2005.03.27
WM_KILLFOCUS


14-1110203727
Ломброзо
2005-03-07 16:55
2005.03.27
По просьбам трудящихся!


3-1109321159
juice
2005-02-25 11:45
2005.03.27
где IB Expert хранит свои настройки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский