![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать адресс процелуры
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