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

Вниз

регистр EIP   Найти похожие ветки 

 
Zorrow   (2003-11-25 17:22) [0]

Всем привет

Можно ли узнать содержимое регистра eip, не используя GetThreadContext? Напомню, что в блоке asm дельфи не позволяет обратиться к этому регистру.
всем спасибо


 
Dimka Maslov ©   (2003-11-25 17:24) [1]

вопрос а для чего нужно узнавать значение регистра EIP? Оно всё равно изменяется


 
Digitman ©   (2003-11-25 17:24) [2]

накой он тебе сдался ? можешь пояснить ?


 
Zorrow   (2003-11-25 17:26) [3]

В регистр EIP заносится текущий исполняемый адрес.
нужно изнутри функции узнать ее адрес.


 
Digitman ©   (2003-11-25 17:28) [4]


> В регистр EIP заносится текущий исполняемый адрес


да ... заметь только - при исполнении каждой очередной маш.инструкции !


> нужно изнутри функции узнать ее адрес


зачем ?? объясни вразумительно ... возможно, существует иное, гораздо более простое и изящное решение


 
Dimka Maslov ©   (2003-11-25 17:31) [5]

узнать адрес функции можно так:
lea eax, func
где func - имя функции


 
Zorrow   (2003-11-25 17:39) [6]

да ... заметь только - при исполнении каждой очередной маш.инструкции !
Да уж заметил, так это не мешает мне просто от значения, считанного с eip, отнять чило пройденных инструкций.
mov eax, eip
sub eax, Number

Ок объясняю:

Как некогда заметил столь догадливый Digitman, я пишу перехватчик апи - и не простой, а ...нет, не золотой, а в объектном виде.

так вот, перехват будет ставиться на метод моего объекта.
Вызов функции с неизвестным числом параметров я уже реализовал, но при этом получить доступ к свойствам и методам объекта можно только, зная адрес его экземпляра. Скажем, есть функция, кот. по адресу метода объекта, может определить адрес экземпляра (например, через список). Вот здесь и требуется передавать в эту функцию искомый адрес функции


 
Digitman ©   (2003-11-25 17:48) [7]


> отнять число пройденных инструкций


почем ты знаешь заранее, СКОЛЬКО инструкций выполнено с момента передачи управления п/программе ?

кр.того, длина разных инструкций разная ... это м.б. и 1 байт и 10 байт и ...

в общем, если тебя приспичило, см. Dimka Maslov © (25.11.03 17:31) [5]


 
Zorrow   (2003-11-25 17:50) [8]

О, придумал!!!
можно вызвать каую-нибудь функцию изнутри того метода, при этом в стек запишется адрес для возврата, отсюда и будем плясать


 
Zorrow   (2003-11-25 17:52) [9]

>Digitman
почем ты знаешь заранее, СКОЛЬКО инструкций выполнено с момента передачи управления п/программе ?


а в CPU window я что, не могу заглянуть
ну я уже все сделал, спасибо


 
Dimka Maslov ©   (2003-11-25 17:53) [10]

Нет функции, которая по адресу метода объекта может определить адрес его экземпляра. Все методы объекта - есть обычные процедуры и функции, адреса которых определены после запуска приложения.


 
Zorrow   (2003-11-25 17:55) [11]

>Dimka Maslov
:) уже есть


 
Digitman ©   (2003-11-25 17:56) [12]


> а в CPU window я что, не могу заглянуть


да какой тебе еще CPU Window ?) ты ж в ран-тайм это собрался делать, для любого метода ! Насколько я понял) ...


 
Dimka Maslov ©   (2003-11-25 17:58) [13]

>Zorrow (25.11.03 17:55) [11]
А если есть несколько экземпляров объектов одного класса?


 
Zorrow   (2003-11-25 17:58) [14]

Эх вы, мастера
долго объяснять, вот закончу, выложу в готовые программы


 
Dimka Maslov ©   (2003-11-25 18:01) [15]

var
T1, T2: TObject;
begin
T1 := TObject.Create;
T2 := TObject.Create;

а теперь зная адрес TObject.Free определи значения T1 и T2


 
Digitman ©   (2003-11-25 18:07) [16]


> Zorrow


по-моему, ты занимаешься ерундой

тебе следовало двигаться в сторону kernel-level-отладчика (!), имеющего кроме всего прочего функц-ть известного дизассемблера DeDe ... все остальные потуги на этом поприще трудно назвать сколь-либо серьезными и оправданными


 
MBo ©   (2003-11-25 18:09) [17]

>Dimka Maslov
TMethod, видимо, имеется в виду


 
Digitman ©   (2003-11-25 18:21) [18]


> вот закончу, выложу в готовые программы


"Вырасту, выучусь, куплю тебе, Папакарло, дюжину новых курточек !"

(с)

))))))))))



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

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

Наверх




Память: 0.5 MB
Время: 0.016 c
14-2285
Леприкон
2004-01-13 08:28
2004.02.02
WinRAR вырезал ошибочную часть AVI...


1-2089
Hogo
2004-01-20 08:23
2004.02.02
Как быстро скопировать или переместить много файлов.


3-1978
Innokenty
2004-01-09 03:21
2004.02.02
DB Access и поля Date/Time.


1-2188
Татьяна
2004-01-21 16:49
2004.02.02
Screen.Fonts


1-2079
qwerty2
2004-01-20 12:13
2004.02.02
Пул COM объектов