Форум: "Основная";
Текущий архив: 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