Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Автопатч формы из RCData в exe-файле


Автор: fridkaratel 21.12.2008, 20:02
В-общем, появилась необходимость пропатчить файл приложения и изменить параметры формы в RCData. Программа не зашифрована, т.е. все данные можно просмотреть в Restorator'е.

Собственно, пример данных из RCData
Код

object Form1: TForm1
  Left = 78
  Top = 281
  BorderStyle = bsDialog
  Caption = 'Form1'
  ClientHeight = 136
  ClientWidth = 331
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  Position = poScreenCenter
  OnClose = FormClose
  OnShow = FormShow
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 24
    Top = 16
    Width = 289
    Height = 25
    AutoSize = False
    Caption = 'Label1'
  end
end


Необходимо изменить параметры ClientWidth и ClientHeight, а также Top и Left.

Автопатчер Restorator'а не подходит - он цепляется к версии, к тому же он патчит весь ресурс, а мне необъодимо только определенные строки. Остальные же оставить без изменения...

Знаю, что при просмотре Exe-файла в WinHEX'е видна эта информация...

Кто-нибудь сталкивался с такими задачами? Может есть советы или рекомендации? Буду очень признателен...

Автор: 586 21.12.2008, 21:56
Пример редактирование Width:

Ищешь в WinHex строку Width. После этой строки будет идти байт 03 а потом 2-х байтовое число. Его надо исправить.

57 69 64 74 68 03 FF 00    Width.я.

0x00FF = 255 (Width)

Автор: GremlinProg 21.12.2008, 23:46
fridkaratel, возьми PE Explorer, он прекрасно видит борланд-формы и позволяет редактировать их отдельные свойства

Автор: fridkaratel 22.12.2008, 06:21
В WinHEX'е видел это, но вот не могу понять - как можно изменить Caption, если вдруг понадобится... получается, надо переписать весь ресурс?

2GremlinProg: я вручную смогу и ресторатором отредатировать.... меня инетесует вопрос создания патча в C++, чтобы ручками каждый раз не делать.... ;)

Скажу проще, в той программе, которую надо будет патчить, около 15 форм, и на каждой форме надо изменить порядка 20 контролов...

Ручками это от версии к версии делать нелегко smile

Автор: 586 22.12.2008, 07:53
Цитата
В WinHEX'е видел это, но вот не могу понять - как можно изменить Caption, если вдруг понадобится... получается, надо переписать весь ресурс?

Да. Существуют WinAPI функции для изменения ресурсов.

http://msdn.microsoft.com/en-us/library/ms674625(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms648004(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms674621(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms648049(VS.85).aspx

Автор: GoldFinch 22.12.2008, 13:07
Цитата(fridkaratel @  22.12.2008,  06:21 Найти цитируемый пост)
В WinHEX'е видел это, но вот не могу понять - как можно изменить Caption, если вдруг понадобится... получается, надо переписать весь ресурс?

надо просто задать изначально под него максимум символов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)