Форум: "WinAPI";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
Внизрегистр 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c