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

Вниз

Как можно расчитать смещение от начала файла до записи константы   Найти похожие ветки 

 
FireMan_Alexey ©   (2004-04-14 14:10) [0]

Ув. Мастера! Подскажите пожалуйста, как расчитать смещение от начала EXE(Win32) файла, до константы в этом файле.
Имеется ввиду, что при запуске EXE-шника, он сам определяет расположение константы на диске в самом себе и выдает смещение!
Заранее благодарен!


 
FireMan_Alexey ©   (2004-04-14 17:38) [1]

Прошу, очень надо!


 
Digitman ©   (2004-04-14 17:48) [2]

смещение константы в ехе-файле и смещение той же константы в загруженном РЕ-модуле различны

о чем идет речь - непонятно пока ... для каких целей требуется поиметь смещение оной в файле ?


 
Игорь Шевченко ©   (2004-04-14 18:14) [3]

Digitman ©   (14.04.04 17:48)


> для каких целей требуется поиметь смещение оной в файле
>


Например, исправить ее там. Но это уже следующий вопрос будет :)


 
Fay ©   (2004-04-14 18:33) [4]

А мне не очевидно, что она (константа) присутствует в файле...


 
TCrash ©   (2004-04-14 19:49) [5]

Создаешь константу в проекте, допустим строковую, например
const
 myConst="abcdefgh1234567890";
компилишь проект, ищешь в проекте свою константу по _содержимому_ при помощи любого ХЕКС едитора


 
FireMan_Alexey ©   (2004-04-15 09:10) [6]

>Digitman
Нужно расчитать нахождение константы в EXE-файле на диске.
Т.е. я запускаю ЕХЕ-шник, а он мне выдает скажем 15002(смещение в файле, а не сегменте кода или данных запущенного ЕХЕ-шника) и по этому адресу, я нахожу нужное мне значение и по надобности изменяю.
>TCrash
Дело в том, что содержимое константы может быть где-то повторено в самом ЕХЕ-шнике и при проэктировании ЕХЕ-файла не очень удобно каждый раз лазить в тотже HIEW(извините за рекламу) и отыскивать там значение.


 
Digitman ©   (2004-04-15 09:29) [7]


> FireMan_Alexey ©   (15.04.04 09:10) [6]


по-моему ты геморрой себе ищешь
если тебе нужно сохранить некие данные между сессиями работы приложения, создай DLL, создай в ней ресурс требуемого типа, в ран-тайм грузи/пользуй этот ресурс, при необходимости же изменить значение ресурса в файле библ-ки выгружай ее и пользуй для этого BeginUpdateResource/UpdateResource/EndUpdateResource

под ХР будет работать без вопросов, под Маздаем при условии инсталляции некоторого дополнительного сист.ПО


 
Sha ©   (2004-04-15 09:32) [8]

Констант там может оказаться много...


 
FireMan_Alexey ©   (2004-04-15 13:17) [9]

>Digitman
Понимаешь, у меня так поставлена задача!
>Sha
В том то и дело, что найдя смещение по сегменту кода до заданной константы и зная где хранится этот сегмент в файле, можно обращатся напрямую к этому значению.


 
Digitman ©   (2004-04-15 13:31) [10]


> Понимаешь, у меня так поставлена задача


дурная постановка задачи


> можно обращатся напрямую к этому значению


попробуй-ка изменить в ехе-файле, из которого стартован тек.процесс, любой байт по любому адресу ! после этого и разговор будет


 
FireMan_Alexey ©   (2004-04-16 10:02) [11]

>Digitman
Если можно, по подробней о специальном ПО для 9х/МЕ как я понял
для работы с UpdateResource!


 
Digitman ©   (2004-04-16 10:47) [12]

проблема - в поддержке (вернее - ее отсутствии) ОС Win9x/Me юникода в ресурсах

описание проблемы и и ее решение, предлагаемое мелкомягкими, - здесь :

http://msdn.microsoft.com/library/en-us/mslu/winprog/microsoft_layer_for_unicode_on_windows_95_98_me_systems.asp


 
FireMan_Alexey ©   (2004-04-16 10:52) [13]

Я хотел еще спросить, возможно ли добавлять к уже готовому ЕХЕ-шнику новые ресурсы, а не только обновлять?


 
Digitman ©   (2004-04-16 10:56) [14]

возможно

теже самые упомянутые ф-ции как раз и используются для этой цели


 
FireMan_Alexey ©   (2004-04-16 10:59) [15]

Т.е. как я понимаю, я пишу UpdateResource, указываю новое имя ресурса и он создается?


 
Digitman ©   (2004-04-16 11:06) [16]

вот выдержка из справки :

The UpdateResource function adds, deletes, or replaces a resource in an executable file.


 
FireMan_Alexey ©   (2004-04-16 11:12) [17]

Огромное спасибо за помощь! :)


 
FireMan_Alexey ©   (2004-04-16 12:03) [18]

Я извиняюсь, но у меня не получается с нахождением ресурса. Я скачал с Microsoft-а библиотеку по ссылке выше и заменил свою библиотеку новой в c:\Win98\System\unicows.dll. Но мое приложение все равно показывает, что не находит ресурс!
MYDATA.RC:
MYDATA RCDATA P.EXE

Вот код:

{$R Data.RES}

procedure TForm1.Button1Click(Sender: TObject);
Var
 T:TResourceStream;
begin
 T:=TResourceStream.Create(Hinstance,"MyDATA",PChar("RT_RCDATA"));
 T.SaveToFile("P.exe");
 T.Free;
end;


 
FireMan_Alexey ©   (2004-04-16 13:08) [19]

Я разобрался ВСЕМ СПАСИБО!!!!!



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

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

Наверх




Память: 0.49 MB
Время: 0.032 c
1-1081858010
ЕвгенийК
2004-04-13 16:06
2004.05.02
Обладатели Delphi 5 или BCB 5 дайте DsgnIntf.dcu PLS!


3-1081357466
Mishenka
2004-04-07 21:04
2004.05.02
Запись переменной длины?


14-1081838585
REA
2004-04-13 10:43
2004.05.02
Наследование


4-1078844305
Ландграф Павел
2004-03-09 17:58
2004.05.02
Нажатие кнопки на чужом окне


14-1081510366
Lexer
2004-04-09 15:32
2004.05.02
Может есть здесь кто из Харькова





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский