Главная страница
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
15-1262172412
Делфиец
2009-12-30 14:26
2010.03.21
Что готовить 31-го


1-1234778692
SPeller
2009-02-16 13:04
2010.03.21
Можно ли WideString спокойно использовать вместо String?


15-1261956446
KilkennyCat
2009-12-28 02:27
2010.03.21
Забавный Уota-сервис


15-1262169330
Цукор5
2009-12-30 13:35
2010.03.21
Delphi7 & xpmanifest


1-1243237795
_REA
2009-05-25 11:49
2010.03.21
Китайский язык