Главная страница
    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.034 c
1-1081844252
Dimerol
2004-04-13 12:17
2004.05.02
Management памяти.


14-1081455993
_Sh_
2004-04-09 00:26
2004.05.02
Помогите с CLX-компонентами


3-1080896327
Max_
2004-04-02 12:58
2004.05.02
DBExpress и Отчаяние


14-1081337263
Alex1988
2004-04-07 15:27
2004.05.02
Как убрать Alert message?


1-1082117419
Serge
2004-04-16 16:10
2004.05.02
DecimalSeparator !! ?????





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