![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
регистр EIP [D7]
Zorrow © (2003-11-25 17:22:00)
Всем привет
Можно ли узнать содержимое регистра eip, не используя GetThreadContext? Напомню, что в блоке asm дельфи не позволяет обратиться к этому регистру.
всем спасибо
Digitman (2003-11-25 18:21:00) [1]
> вот закончу, выложу в готовые программы
"Вырасту, выучусь, куплю тебе, Папакарло, дюжину новых курточек !"
(с)
))))))))))
MBo (2003-11-25 18:09:00) [2]
>Dimka Maslov
TMethod, видимо, имеется в виду
Digitman (2003-11-25 18:07:00) [3]
> Zorrow
по-моему, ты занимаешься ерундой
тебе следовало двигаться в сторону kernel-level-отладчика (!), имеющего кроме всего прочего функц-ть известного дизассемблера DeDe ... все остальные потуги на этом поприще трудно назвать сколь-либо серьезными и оправданными
Dimka Maslov (2003-11-25 18:01:00) [4]
var
T1, T2: TObject;
begin
T1 := TObject.Create;
T2 := TObject.Create;
а теперь зная адрес TObject.Free определи значения T1 и T2
Zorrow (2003-11-25 17:58:00) [5]
Эх вы, мастера
долго объяснять, вот закончу, выложу в готовые программы
Dimka Maslov (2003-11-25 17:58:00) [6]
>Zorrow (25.11.03 17:55) [11]
А если есть несколько экземпляров объектов одного класса?
Digitman (2003-11-25 17:56:00) [7]
> а в CPU window я что, не могу заглянуть
да какой тебе еще CPU Window ?) ты ж в ран-тайм это собрался делать, для любого метода ! Насколько я понял) ...
Zorrow (2003-11-25 17:55:00) [8]
>Dimka Maslov
:) уже есть
Dimka Maslov (2003-11-25 17:53:00) [9]
Нет функции, которая по адресу метода объекта может определить адрес его экземпляра. Все методы объекта - есть обычные процедуры и функции, адреса которых определены после запуска приложения.
Zorrow (2003-11-25 17:52:00) [10]
>Digitman
почем ты знаешь заранее, СКОЛЬКО инструкций выполнено с момента передачи управления п/программе ?
а в CPU window я что, не могу заглянуть
ну я уже все сделал, спасибо
Zorrow (2003-11-25 17:50:00) [11]
О, придумал!!!
можно вызвать каую-нибудь функцию изнутри того метода, при этом в стек запишется адрес для возврата, отсюда и будем плясать
Digitman (2003-11-25 17:48:00) [12]
> отнять число пройденных инструкций
почем ты знаешь заранее, СКОЛЬКО инструкций выполнено с момента передачи управления п/программе ?
кр.того, длина разных инструкций разная ... это м.б. и 1 байт и 10 байт и ...
в общем, если тебя приспичило, см. Dimka Maslov © (25.11.03 17:31) [5]
Zorrow (2003-11-25 17:39:00) [13]
да ... заметь только - при исполнении каждой очередной маш.инструкции !
Да уж заметил, так это не мешает мне просто от значения, считанного с eip, отнять чило пройденных инструкций.
mov eax, eip
sub eax, Number
Ок объясняю:
Как некогда заметил столь догадливый Digitman, я пишу перехватчик апи - и не простой, а ...нет, не золотой, а в объектном виде.
так вот, перехват будет ставиться на методмоего объекта.
Вызов функции с неизвестным числом параметров я уже реализовал, но при этом получить доступ к свойствам и методам объекта можно только, зная адрес его экземпляра. Скажем, есть функция, кот. по адресу метода объекта, может определить адрес экземпляра (например, через список). Вот здесь и требуется передавать в эту функцию искомый адрес функции
Dimka Maslov (2003-11-25 17:31:00) [14]
узнать адрес функции можно так:
lea eax, func
где func - имя функции
Digitman (2003-11-25 17:28:00) [15]
> В регистр EIP заносится текущий исполняемый адрес
да ... заметь только - при исполнении каждойочередной маш.инструкции !
> нужно изнутри функции узнать ее адрес
зачем ?? объясни вразумительно ... возможно, существует иное, гораздо более простое и изящное решение
Zorrow (2003-11-25 17:26:00) [16]
В регистр EIP заносится текущий исполняемый адрес.
нужно изнутри функции узнать ее адрес.
Dimka Maslov (2003-11-25 17:24:00) [17]
вопрос а для чего нужно узнавать значение регистра EIP? Оно всё равно изменяется
Digitman (2003-11-25 17:24:00) [18]
накой он тебе сдался ? можешь пояснить ?