имплантанты пышных формы GPCH (ADMIN@VB-DECOMPILER.ORG) Спецвыпуск: Хакер, номер #066, стр. 066-040-3 27 00 43 72-61 63 6B 6D-65 20 66 6F-72 20 4A 6F ' Crackme for Jo 73 65 70 68-43 6F 27 73-20 45 78 44-65 63 20 50 sephCo's ExDec P 72 6F 67 72-61 6D 2E 2E-2E 00 03 08-00 00 80 19 rogram... ?? ?? 01 00 42 00-23 3E 04 00-00 6C 74 00-00 36 04 00 ? B #>? lt 6? 00 00 00 01-00 02 00 20-20 10 00 00-00 00 00 E8 ? ? ? ? 02 00 00 26-00 00 00 10-10 10 00 00-00 00 00 28 ? & ??? ( 01 00 00 0E-03 00 00 28-00 00 00 20-00 00 00 40 ? ?? ( @ 00 00 00 01-00 04 00 00-00 00 00 80-02 00 00 00 ? ? ?? 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00 00 00 00 00-00 80 00 00-80 00 00 00-80 80 00 80 ? ? ?? ? 00 00 00 80-00 80 00 80-80 00 00 80-80 80 00 C0 ? ? ?? ??? + C0 C0 00 00-00 FF 00 00-FF 00 00 00-FF FF 00 FF ++ 00 00 00 FF-00 FF 00 FF-FF 00 00 FF-FF FF 00 00 0D указывает на то, что имя формы содержит 0Dh символов. Далее идет имя "AC_ExDec_03_B", оно завершается нулевым байтом, затем — вновь 0Dh. Следующий байт 01h определяем по таблице для формы — это Caption. Следовательно, за ним должна идти длина строки и сама строка. Со строками в VB не все гладко: в некоторых свойствах объектов он хранит строки в ACIIZ-формате, а в других — в Unicode-формате. Распознать формат невозможно. Единственный способ — просто запомнить, какие свойства имеют Unicode-формат, а какие — какой-то другой. К примеру, Caption и Name — всегда в ASCII, но Tag, Connect и некоторые другие имеют Unicode-формат. Вернемся к нашим данным. 03 — это BackColor согласно нашей таблице. Следовательно, следующие 4 байта отвечают за 32-битный код цвета. Далее идет 19 — ScaleMode. Следующий за ним Word определяет масштаб. 42 — WhatsThisButton, за ним — 1 байт, определяющий логическое True (FF) или False (0). Перейдем к самому интересному, что есть в формах, — к следующему байту 23 (это Icon). Вообще при программировании на VB формы хранятся в файле frm, а графика и прочие большие данные — в frx. frm в свою очередь ссылается на определенный адрес в этом frx, в котором хранит все используемые данные один за другим. После компиляции содержимое frx встраивается в форму, поэтому в рассматриваемом случае после байта 23 будет идти иконка в формате stdole.Picture. Если берется иконка по умолчанию из MSVBVM60.DLL, то после 23 мы увидим FFFFFFFF (в противном случае — размер картинки). Именно столько байт мы должны считать после адреса, чтобы получить всю используемую иконку. 3E 04 00-00 = 43E = 1086 байт. Именно через столько байт кончится иконка и продолжится форма, которую мы декомпилируем (рис. 2) FF 00 00 35-FF 00 00 24-05 00 46 6F-72 6D 31 00 5 $? Form1 35 3C 00 00-00 59 01 00-00 CC 15 00-00 03 0C 00 5< Y? ¦§ ?? 00 46 03 FF-01 55 00 00-00 01 06 00-46 72 61 6D F? ?U ?? Fram 65 31 00 03-01 11 00 42-75 74 74 6F-6E 20 69 73 e1 ??? Button is 20 69 6E 20-68 65 72 65-00 03 00 00-00 00 04 FF in here ? ? FF FF 00 05-78 00 A0 05-AF 14 37 05-12 01 00 1B ?x ???¶7??? ? 01 00 00 00-BC 02 A4 2C-02 00 0E 43-65 6E 74 75 ? +??,? ?Centu |