Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

АРХИВ ФОРУМА eXeL@B
https://exelab.ru/f/

   

mnalex Подсобите с Delphi ... Люди, подскажите, как в Делфях при написании


mnalex Подсобите с Delphi ... Люди, подскажите, как в Делфях при написании ассемблерной вставки, сделать так, чтобы по определённому адресу слаживать определенные кода символов (чтобы это все слаживалось последовательно в строку) (это все должно проходить в цикле сформированном самим Делфи), а потом как эту строку вытащить с этого адреса и передать в основной код, ну и там дальше уже сним я разберусь ;)
-= ALEX =- :: дя не сложно впринципе, правда я толком не понял, что ты хотишь :)

mnalex :: Я хочу в цикле реализованном на Делфях (через For ... Begin Asm End; End;) сделать в нутри asm end создание строки, и потом эту строку передать как String в основную часть, вот и вопросы:
1 как формаровать строку в Асме;
2 как потом передать ее в Делфи?
Формирование строки должно строиться по принцепу - 1 проход цикла - 1 буква (ну или 2, 3, и т.д. но в разных местах процедуры). Так же формирование строки может происходить в подциклах реализованных на je (или на других командах перехода).
Надеюсь так вопрос будет звучать понятно.

MozgC [TSRh] :: Это если ты хочешь сделать кейген на дельфи. Простейший пример без проверок и прочего:

procedure TForm1.Button1Click(Sender: TObject);
var
login, password:string;
begin
password:=Edit2.Text; //Чтобы password указывал
// на данные в секции данных. Если написать password:=’xxx’
// то будет указывать на данные в секции кода
// и попытка записи вызовет исключение
login:=Edit1.Text;
asm
mov esi, password // esi указывает на адрес
//по которому будет вписываться пароль
mov edi, login //edi = address of login string
mov ecx, [edi-4] // ecx = длина логина
@again:
mov al, byte ptr [edi] // al = символ из логина
inc al
mov byte ptr [esi], al // al после инкремента
// записываем следующим символом в будущий пароль
inc esi
inc edi
loop @again // Цикл заново?
mov byte ptr [esi],0 // Завершаем строку нулем
end;
Edit2.Text:=password // Выводим на экран
end;

mnalex :: Биг биг Вери сенкс :))
Примного благодарен!!!

-= ALEX =- :: эх опередил меня Мозг...

mnalex :: -= ALEX =-
:)) ничо еще успеешь :)) Но усеравно сенкс :)

Gloomy :: ›› :)) ничо еще успеешь :)) Но усеравно сенкс :)
А теперь давайте будем этот код оптимизировать! Сначала сведем количество байт до минимума, а потом будем считать биты, установленные в 1 :) Мой вариант (MASM32):

mov esi,OFFSET password
mov edi,OFFSET buff
@next:
lodsb
inc al
stosb
dec al
jnz @next

Итого: 18 байт. Кто меньше?

mnalex :: Gloomy
А причем здесь размер??? Я вообщето не проразмер говорил, а про Делфи :( ...
Оптимизация - это отдельный разговор!!!!!!

MozgC [TSRh] :: Gloomy
Еще конец строки надо нулем забивать.

Gloomy :: mnalex
Размер - это чисто для спортивного интереса, для маньяков АСМа :) Для Дельфей можно обойтись и вовсе без АСМа ;)

procedure TForm1.Button1Click(Sender: TObject);
var
i: Byte;
login, password: String;
begin
login:= Edit1.Text;
SetLength(password, Length(login));
for i:= 1 to Length(login) do
password:= Chr(Ord(login)+1);
Edit2.Text:= password;
end;

Gloomy :: MozgC [TSRh]
Удлиним мой пример на пару байт и забивать ноль вручную не понадобится ;)

mov esi,OFFSET password
mov edi,OFFSET buff
@@: lodsb
test al,al
jz @F
inc al
stosb
jmp @B
@@:

Итого: 20 байт

З.Ы. Жутковатый у тебя аватар :)

MozgC [TSRh] :: Gloomy пишет:
цитата:
Для Дельфей можно обойтись и вовсе без АСМа ;)


Ему нужен асм т.к. он другое пишет. Мой пример тут нипричем.

mnalex :: Gloomy
Я бы посмотрел как ты на чистых делфях сделашь Rol , ah-al и другие низкие операции :) . А Мозг просто пример привел, который к моей задаче никакого отношения неимеет...!

Gloomy :: mnalex пишет:
цитата:
как ты на чистых делфях сделашь Rol , ah-al и другие низкие операции :)


У меня там в самом начале дисклаймер написан - Мой вариант (MASM32):
mnalex пишет:
цитата:
пример привел, который к моей задаче никакого отношения неимеет...!


Так ты просто хотел узнать как вставку на АСМе сделать? :)

MozgC [TSRh] :: Он хотел узнать как связать вставку на асме с дельфийским типом string

mnalex :: Gloomy
Батенька, вы гоните, я вам про одно - а вы мне совершенно продругое, внимательнее нужно читать!






   
Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS