Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать адресс процелуры


Igit ©   (2005-07-14 23:51:00) 

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


Digitman   (2005-07-19 12:14:00) [1]


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


по барабану.

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


evvcom   (2005-07-19 12:11:00) [2]


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

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


Digitman   (2005-07-19 11:38:00) [3]


> Igit   (19.07.05 11:17) [13]


см. MAP-файл


evvcom   (2005-07-19 11:24:00) [4]


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

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


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

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

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


Digitman   (2005-07-15 09:40:00) [6]


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


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


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

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

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


Digitman   (2005-07-15 08:04:00) [8]


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


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


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


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

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


Piter   (2005-07-15 02:42:00) [10]

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


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


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

Хм, спасибо!


Defunct   (2005-07-15 01:28:00) [12]

> 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]) )
 ..


Defunct   (2005-07-15 01:18:00) [13]

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


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

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


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

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

Сделал так:

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;


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо