Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.21;
Скачать: CL | DM;

Вниз

Адрес вызывающего функцию   Найти похожие ветки 

 
MultIfleX   (2009-04-24 14:52) [0]

Имеем в библиотеке stdcall функцию с 4 параметрами (PAnsiChar,Pointer,LongBool,Integer). Нужно узнать с какого адреса осуществолен вызов.

Спасибо.


 
MBo ©   (2009-04-24 15:20) [1]

адрес возврата лежит в стеке перед первым параметром


 
MultIfleX   (2009-04-24 15:43) [2]

ага, сделал так:

asm
mov   eax, [ebp+$04]
sub   eax, $00000002
push  eax
mov   eax, [ebp+$14]
push  eax
mov   eax, [ebp+$10]
push  eax
mov   eax, [ebp+$0C]
push  eax
mov   eax, [ebp+$08]
push  eax
call  mrRegisterMethodWithAddr
end;
mrRegisterMethodWithAddr - аналогичная функция с пятым параметром Addr
вродебы работает, хоть и кривовато выглядит.
MBo, спасибо!


 
MultIfleX   (2009-04-25 10:45) [3]

Вопрос в догонку: как узнать какая библиотека (*.dll) загружена в это адресное пространство? Загружены все по LoadLibrary, т.е. есть Handle. Где-то это описывается? Ну тобишь посмотреть какие библиотеки подцеплены к твоему приложению, и где в памяти распологаются?


 
MultIfleX   (2009-04-25 12:55) [4]

Тогда другой вопрос, каким образом можно определить сколько памяти выделено под ДЛЛ при LoadLibrary. В принципе Ptr( LoadLibrary(,,) )-это начальный адрес, как узнать занимаемую область - это проблема. Процесс естессно мой.


 
MultIfleX   (2009-04-25 13:06) [5]

Решил вопрос прочитав PE заголовок модуля.


 
GrayFace ©   (2009-04-30 10:59) [6]

проще так:
function RegisterMethod(param1: PAnsiChar; ...);
var addr:^pointer;
begin
 addr:= pointer(@param1);
 dec(addr);
 addr^ - искомый return address
end;


MultIfleX   (25.04.09 13:06) [5]
Решил вопрос прочитав PE заголовок модуля.

эти вопросы решают 1-2 функции - см. ShowException (тот, что в SysUtils) в сорсах.



Страницы: 1 вся ветка

Текущий архив: 2010.03.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-1241176890
MM_ASH
2009-05-01 15:21
2010.03.21
Интеграция с Delphi IDE


1-1242738691
Franzy
2009-05-19 17:11
2010.03.21
Некорректное отображение программ Дельфи на некоторых компах


15-1262122484
Dmytry2010
2009-12-30 00:34
2010.03.21
Работа с сокетами TCP на Pascale под MS DOS


6-1215009957
FireMan_Alexey
2008-07-02 18:45
2010.03.21
Proxy-Server вопрос по RFC2068


2-1263934328
@!!ex
2010-01-19 23:52
2010.03.21
Как подогнать размеры TRichEdit под текст в нем