Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Вниз

Изучаю PE заголовок...   Найти похожие ветки 

 
Spawn   (2003-07-05 12:01) [0]

...и вот появился такой вопрос. В одной статье написано, что поле Signature должно содержать ASCII код, обозначающий тип файла. Пробую делать так.

Base:=GetModuleHandle(nil);
ImageDosHeader:=PImageDosHeader(Base);
ImageNtHeaders:=PImageNtHeaders(Base+ImageDosHeader._lfanew);
ShowMessage(PChar(ImageNtHeader.Signature)); - так возникает Access Violetion

А если же я сделаю так

ShowMessage(PChar(Base+ImageDosHeader._lfanew)), то показывает сообщение с надписью "PE". Так в чем сдесь ошибка? Возможно, я еще не очень хорошо понимаю как нужно использовать указатели. Заранее спасибо.


 
R4D][   (2003-07-05 12:20) [1]

Сигнатура это не указатель, а DWORD, поэтому писать, что это PCHAR - ересь. Так же, так как PImageDos(NT)Header - это указатель, то надо использовать символ ^. В общем я проэксперементировал и вот, что получил. Показывает 17744, что по-моему соответсвует "PE", хотя я могу ошибаться:

var
ImageDosHeader: PImageDosHeader;
ImageNtHeaders: PImageNtHeaders;
Base ( nil)
Сигнатура это не указатель, а DWORD, поэтому писать, что это PCHAR - ересь. Так же, так как PImageDos(NT)Header - это указатель, то надо использовать символ ^. В общем я проэксперементировал и вот, что получил. Показывает 17744, что по-моему соответсвует "PE", хотя я могу ошибаться:

var
ImageDosHeader: PImageDosHeader;
ImageNtHeaders: PImageNtHeaders;
Base : THANDLE;
begin
Base:=GetModuleHandle(nil);
ImageDosHeader:=PImageDosHeader(Base);
ImageNtHeaders:=PImageNtHeaders(Base+ImageDosHeader^._lfanew);
ShowMessage(IntToStr(ImageNtHeaders^.Signature));
end;


 
R4D][   (2003-07-05 12:26) [2]

Да, соответсвует. Если добавить такой код перед самыым end;, то сообщение не выдается:

if ImageNtHeaders^.Signature<>IMAGE_NT_SIGNATURE then ShowMessage("error");


 
Spawn   (2003-07-05 14:24) [3]

Без значка указателя (^) абсолютно те же самые данные. То есть нет различия. И вообще обьясните мне плиз в чем разница записи ImageDosHeader._lfanew и ImageDosHeader^._lfanew ?


 
VMcL   (2003-07-05 15:51) [4]

>Spawn © (05.07.03 14:24)

Разницы нет.


 
Poirot   (2003-07-05 16:46) [5]

Сдаётся мне эта фишка осталась ещё от паскаля.... типа для совместимости!


 
Spawn   (2003-07-05 16:52) [6]

Избыточность языка программирования получается


 
R4D][   (2003-07-05 17:17) [7]

А я считаю, для порядка так сказать, для крайней ясности :)


 
Morfein   (2003-07-05 20:40) [8]


MessageBox(0, @ImageNtHeaders.Signature, nil, 0);


 
AlexRush   (2003-07-06 18:40) [9]

Если кому-то интересна тема, предлагаю глянуть rush-x-change.front.ru/peview.rar
Это исходнники моей проги, которая позволяет прсмотреть PE модуль подобно TDUMP"у.
P.S. Не судите строго, я ее писал, когда с ПЕ разбирался :)



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

Форум: "Система";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
14-58869
Вася Добрый
2003-08-29 16:11
2003.09.18
Что такое WAREZ???


14-58847
ZeroDivide
2003-08-29 10:13
2003.09.18
Что вы думаете о ZeroDivide?


6-58815
HellTrooper
2003-07-16 11:40
2003.09.18
Connection Closed Gracefully


7-58951
Сергей Князев
2003-07-04 13:40
2003.09.18
Как добавить свое сообщение в Журнал событий WinNt (WinXP)


7-58941
killer
2003-07-05 20:11
2003.09.18
Как определить путь папки с Window-ом?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский