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

Вниз

Как узнать адресс процелуры   Найти похожие ветки 

 
Igit   (2005-07-14 23:51) [0]

Как узнать адресс процедуры?
Я делаю так ShowMessage(IntToStr(@Form1.Thread1Execute));
но ниячего не получается...


 
Palladin ©   (2005-07-15 00:55) [1]

это не процедура, а метод, и копать нкжго в сторону VMT


 
Palladin ©   (2005-07-15 00:56) [2]

"нкжго" ошибка клавиатуры, читать как "нужно"


 
Igit   (2005-07-15 01:09) [3]

Хочу зашифровать участок кода, а потом его расшифровать.
Хочу определить адреса в файле начала процедуры и конца

Сделал так:

procedure TForm1.Button1Click(Sender: PObj);
var a: dword;
   b: dword;
const z = offset Thread1Execute;
begin

asm
xor eax, eax
MOV EAX, offset Thread1Execute
MOV a, EAX;
end;
asm
xor eax, eax
MOV EAX, offset BitBtn1Click
MOV b, EAX;
end;
ShowMessage("Начало процедуры: "+IntToHex(a, 8) + #13#10 +
           "Конец процедуры: "+IntToHex(b, 8) + #13#10 +
           "Размер процедуры в b: "+IntToStr(b-a));
end;


 
Igit   (2005-07-15 01:10) [4]

ой, строка const z = offset Thread1Execute; закомментированна


 
Defunct ©   (2005-07-15 01:18) [5]

procedure TForm1.Button8Click(Sender: TObject);
var
  NE : TNotifyEvent;
begin
  NE := Button8Click;
  ShowMessage( Format("%0.8X", [Integer(TMethod(NE).Code)]) )
end;
CODE>


 
Defunct ©   (2005-07-15 01:28) [6]

> Igit   (15.07.05 01:09) [3]

асмовые вставки у Вас - zzzzzzzzz.

> xor eax, eax не нужен.
> mov eax, offset ... тоже не нужен

достаточно:

var
 A, B : integer;
 ...

asm
 mov a, offset Thread1Execute
 mov b, offset BitBtn1Click
end;
 ShowMessage( format("A=%0.8X, B=%0.8X",[A, B]) )
 ..


 
Igit   (2005-07-15 01:31) [7]

Хм, спасибо!


 
Piter ©   (2005-07-15 02:42) [8]

Palladin ©   (15.07.05 0:56) [2]
"нкжго" ошибка клавиатуры


ну да, конечно!
Сначала напьются пыва, потом в час ночи начинают путать клавиши - а выходит клавиатуры виновата!


 
Просто Джо ©   (2005-07-15 04:36) [9]


>  [8] Piter ©   (15.07.05 02:42)
> Сначала напьются пыва, потом в час ночи начинают путать
> клавиши - а выходит клавиатуры виновата!

Коллега! Не зарекайся, нешто сам не пьешь сего? ;0)


 
Digitman ©   (2005-07-15 08:04) [10]


> адреса в файле


и где же здесь обращение к файлу ?


 
Igit   (2005-07-15 09:32) [11]

2Digitman ©   (15.07.05 08:04) [10]

Ну, тут не в файле... но если вычесть базу должно получится в файле.


 
Digitman ©   (2005-07-15 09:40) [12]


> если вычесть базу должно получится в файле


не должно.
не учитываешь смещение секции.


 
Igit   (2005-07-19 11:17) [13]

2Digitman ©   (15.07.05 09:40) [12]

Бр, а как его посчитать?


 
evvcom ©   (2005-07-19 11:24) [14]


> Бр, а как его посчитать?

Тебе это не нужно. См. [5]


 
Digitman ©   (2005-07-19 11:38) [15]


> Igit   (19.07.05 11:17) [13]


см. MAP-файл


 
evvcom ©   (2005-07-19 12:11) [16]


> не учитываешь смещение секции

Еще если процедура/метод в dll, то в память она может загрузиться не по базовому адресу.


 
Digitman ©   (2005-07-19 12:14) [17]


> evvcom ©   (19.07.05 12:11) [16]


по барабану.

реальный ImageBase завсегда известен.



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

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

Наверх




Память: 0.5 MB
Время: 0.047 c
9-1115776028
Slavikk
2005-05-11 05:47
2005.09.04
Отличие DCE и ODE в GLScene в Чём?


2-1070652959
Арс
2003-12-05 22:35
2005.09.04
Помощь


3-1122131750
fizzik
2005-07-23 19:15
2005.09.04
Проблема с кириллицей


9-1115805485
Scener
2005-05-11 13:58
2005.09.04
Max height of HeightField


4-1121366230
Dot
2005-07-14 22:37
2005.09.04
Обработать закрытие приожения