Главная страница
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.011 c
2-1263813721
Анна
2010-01-18 14:22
2010.03.21
TTreeView с Check Boxes


6-1214832907
Галинка
2008-06-30 17:35
2010.03.21
Sckets: почему так получается


6-1214560077
artkil
2008-06-27 13:47
2010.03.21
Ошибка Connection Closed Gracefully


15-1262449871
NailMan
2010-01-02 19:31
2010.03.21
Как сделать залипающий курсор мышки у края десктопа


15-1261105051
Petr V. Abramov
2009-12-18 05:57
2010.03.21
кстати, "госуслуги"-онлайн заработали-таки