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

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


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

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

   

vins вопрос немножко не по теме но


vins вопрос немножко не по теме но
как в delphi узнать адрес команды
допустим нужно такое сделать
procedure TForm1.But...
begin
asm
mov eax,ebx
end;
showmessage( адрес команды mov eax,ebx );
end;
Как?
[RU].Ban0K! :: Так не выходит?

var
bb: label;
cc: integer;
begin
asm
bb: mov eax,ebx
mov eax,bb
mov cc,eax
end;

типа адрес в cc..., я в дельфях не шарю, но типа как-то так можно наверное...
или на худой конец заведи переменную перед командой и сохрание её оффсет, а относительно ней посчтитай... но это всё наверное слишком гиморно, ... можно как-то обычней..

vins :: [RU].Ban0K!
спасибо работает, только там
label bb;
var ...

MozgC [TSRh] :: procedure TForm1.Button1Click(Sender: TObject);
var
address : string;
redi : longword;
begin
asm
call @geteip
@geteip:
pop eax
mov redi, eax
end;
address:=format(’%x’,[redi]);
showmessage(address);
end;

Будет взят адрес команды по адресу @geteip. Причем pop eax тут обязательно. Значит получается, что происходит call, при этом в стеке сохраняется адрес возврата, т.е. адрес следующей после call’а команды, а это pop eax по адресу @geteip. С помощью pop eax адрес возврата берется из стека, т.е. после этого в eax окажется адрес команды pop eax. Затем этот адрес запоминается в redi. Все...

-= ALEX =- :: MozgC [TSRh] ну блин, а я вот тоже нашел способ, только щас в инет зашел, а ты уже тоже ответил :)
я вот так делал

var s:longint;
begin
asm
push eax
call @1
@1: pop eax
add eax,8
mov s,eax
pop eax
mov eax,ebx // твой код
end;
showmessage(inttohex(s,8));

замечание: такой код тебе точно возвратит адрес по которому mov eax,ebx !

vins :: всем спасибо






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


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