имплантанты пышных формы GPCH (ADMIN@VB-DECOMPILER.ORG) Спецвыпуск: Хакер, номер #066, стр. 066-040-5 Begin VB.Form AC_ExDec_03_B 'Offset: 000010FA Caption = "Crackme for JosephCo's ExDec Program..." BackColor = &H80000008& ScaleMode = 1 WhatsThisButton = 0 'False Icon = "AC_ExDec_03_B.frx":0 LinkTopic = "Form1" ClientLeft = 60 ClientTop = 345 ClientWidth = 5580 ClientHeight = 3075 StartUpPosition = 3 'Windows Default Begin VB.Frame Frame1 'Offset: 000015A6 Caption = "Button is in here" BackColor = &H0& ForeColor = &HFFFFFF& Left = 120 Top = 1440 Width = 5295 Height = 1335 TabIndex = 1 BeginProperty Font Name = "Century Gothic" Size = 14,25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ... и так далее Теперь предлагаю на конкретном примере разблокировать залоченное меню и показать невидимую кнопку. Будем учиться [разлочивать меню]. Специально для демонстрации я написал простенький CrackMe. В нем заблокирован пункт меню «Сохранить», как часто устраивают в коммерческих программах. Попробуем разблокировать. Какие же способы есть для того, чтобы сделать меню неактивным? Существует всего два пути. Первый — при проектировании поставить свойство Enabled в False меню. Второй — установить это свойство кодом при запуске формы. Предположим, кодер поленился и установил это свойство при разработке меню. Мы же декомпилируем этот проект и посмотрим, что получилось. Для простоты не будем заново декомпилить в уме, а возьмем мой декомпилятор (Lite-версия вполне подойдет) и пустим его в дело. В разделе «Формы» находится всего одна форма. Поищем там меню (Листинг 2). Begin VB.Menu mnuFile 'Offset: 000011B3 Caption = "Файл" Begin VB.Menu mnuSave 'Offset: 000011CF Caption = "Сохранить" Enabled = 0 'False End Begin VB.Menu Separator 'Offset: 000011F0 Caption = "-" End Begin VB.Menu mnuExit 'Offset: 0000120B Caption = "Выход" End End Оп-па! «Enabled = 0» — то, что мы искали. Теперь подумаем, как поправить. Откроем программу в HIEW и перейдем по адресу 11F0 (рис. 3). 00 00 02 07-00 6D 6E 75-53 61 76 65-00 13 03 09 O• mnuSave !¦0 00 D1 EE F5-F0 E0 ED E8-F2 FC 00 05-00 FF 02 1A Сохранить ¦ яO> Все стандартно. Сначала Name, затем Caption (03) и 05 — Enabled. Дальше идет один байт 00б, что означает False. Замени его на FF (True) и попробуй запустить. При нажатии на меню разблокировки выводится MessageBox "cool". Вот и все! Легкий взлом, правда? Настало время научиться [отлавливать invisibles]. Несмотря на ICQ’шный стиль заголовка, мы не будем писать плагин определения invisible, только попытаемся сделать скрытые кнопки видимыми. Для большего реализма я написал CrackMe, который делает кнопку «Сохранить» видимой через три секунды после запуска. Вот и посмотрим в декомпиляторе, что изменилось в поведении кнопки «Сохранить» (Листинг 3). Begin VB.CommandButton cmdSave 'Offset: 00001175 Caption = "Сохранить" Left = 1680 Top = 1800 Width = 1335 Height = 375 Visible = 0 'False |