Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
7-1078326302
Dmitriy_G
2004-03-03 18:05
2004.05.02
Где скачать Windows 2000 DDK?


6-1078395276
pai
2004-03-04 13:14
2004.05.02
Indy, IdTCPClient.writebuffer


7-1078649643
YurikGl
2004-03-07 11:54
2004.05.02
В чем разница?


3-1081251223
Multy
2004-04-06 15:33
2004.05.02
Киньте ссылки как работать в Delphi с MySQL


1-1081933635
galexis
2004-04-14 13:07
2004.05.02
Как получить ряд времени с интервалом 30 минут.