Жертва: Ziegler Collection for C++ Builder 5

Пыточные инструменты: 

  • W32Dasm 
  • Spy++ / WinSight32 
  • HIEW или другой шестнадцатеричный редактор

Цель данной статьи - показать, как можно
обойти ограничения шароварных
компонентов для Builder'a и Delphi. Жертвой
будет набор компонентов Ziegler Collection для
C++ Builder 5 (http://www.torry.net/vcl/packs/interfacehuge/zcc5.exe).
Если попробовать запустить файл не из-под
Builder'а, то получим вот такой облом.

Напряжем слегка мозги :). Посмотрим файл
через F3, к примеру, в Total Commander'е, и поищем
строчку "Sorry". Результат будет
следующий:

Подними взгляд на строчку выше. Видишь,
написано TAppBuilder TPropertyInspector? Люди,
знакомые с ООП, поймут, что это имена
классов. Но классов чего? Запусти Builder и
Spy++ из комплекта Visual Studio или WinSight32 из
поставки Builder'а или Delphi.

Как видно, это классы окон.
Окончательно в этом можно убедиться
продизассмив файл. Я предпочитаю
использовать W32Dasm:

Как видно, программа ищет окна по их классу. Если не находит, то выдает сообщение и закрывается. В связи с этим возникают следующие пути решения:

1. Написать программу, которая бы создавала окна с нужными классами.
2. Пропатчить экзешник.
3. Пропатчить скомпилированый bpl-файл.

Разберем более подробно каждый вариант:

№1: Все достаточно просто. В программе создать 2 формы, поменять им свойства "Name" на AppBuilder и PropertyInspector. Или, как вариант, написать то же самое на гольном WinApi, что и было мной проделано.

№2:
а) Поменять строчки типа "jne 0040F6EF" после вызова функции FindWindow на "jmp 0040F6EF".
б) Заменить поиск окон TAppBuilder и TPropertyInspector на, к примеру, Progman и ToolbarWindows32. Вместо недостающих символов поставь 00.

№3: Принцип тот же самый, но модификации должен подвергнуться файл zc1_rt_c05_0220.bpl. Это посложнее, но гораздо лучше всех предыдущих вариантов.

Исходник с эмулятором + исходник, демонстрирующий работу с эмулятором (поиск и закрытие программы)
+ различия между оригинальным и крякнутым zc1_rt_c05_0220.bpl:
demo.rar.

P.S. На всякий случай еще несколько классов, присущих IDE:
TMenuBuilder
TAppication
TAlignPalette

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии