Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #66, МАЙ 2006 г.

имплантанты пышных формы

GPCH (ADMIN@VB-DECOMPILER.ORG)

Спецвыпуск: Хакер, номер #066, стр. 066-040-4


72 79 20 47-6F 74 68 69-63 FF 01 2B-00 00 00 03 ry Gothic ?+ ?

08 00 43 6F-6D 6D 61 6E-64 31 00 04-01 09 00 45 ? Command1 ??? E

6E 61 62 6C-65 20 4D 65-00 04 78 00-58 02 BF 13 nable Me ?x X?+?

EF 01 11 02-00 FF 02 03-AE 00 00 00-02 06 00 4C ???? ??? ?? L

61 62 65 6C-31 00 01 01-6A 00 41 63-69 64 5F 43 abel1 ??j Acid_C

6F 6F 6C 5F-31 37 38 27-73 20 45 78-44 65 63 20 ool_178's ExDec

43 72 61 63-6B 6D 65 20-30 33 2E 42-2C 20 6A 75 Crackme 03.B, ju

73 74 20 65-6E 61 62 6C-65 20 74 68-65 20 62 75 st enable the bu

74 74 6F 6E-2E 2E 2E 20-4D 61 79 62-65 20 74 68 tton... Maybe th

69 73 6F 6E-65 20 69 73-20 61 62 69-74 20 65 61 isone is abit ea

73 69 65 72-20 74 68 61-6E 20 45 78-44 65 63 20 sier than ExDec

30 33 2E 41-00 03 00 00-00 00 04 FF-FF FF 00 05 03.A ? ? ?

78 00 78 00-AF 14 47 04-12 00 00 25-01 00 00 00 x x ?¶G?? %?

BC 02 A4 2C-02 00 0E 43-65 6E 74 75-72 79 20 47 +??,? ?Century G

6F 74 68 69-63 FF 02 04-50 00 00 00-2E F4 B5 01 othic ??P .?¦?

C9 42 34 4B-9A 3F 43 B2-41 04 7C 5E-00 00 00 00 +B4K??C¦A?|^

Теперь видим 24 — это LinkTopic. После него идет строка. Мы уже умеем доставать строки, поэтому пойдем дальше. В таблице нет опкода 35, но я расскажу, что он представляет собой всего лишь линейные размеры клиентской части формы. За байтом 35 идут четыре dword'а: ClientLeft, ClientTop, ClientWidth, ClientHeight соответственно. Затем видим 46 (StartUpPosition) — один байт, определяющий позицию формы при запуске (в центре экрана, где получится или в центре Parent-формы).

Вот мы и дошли до самого интересного — FF01. Я уже говорил о константах, определяющих конец одних контролов или начало других. FF01 — это vbFormNewChildControl. Он определяет, что далее идет контрол, контейнером для которого является форма. Сначала стандартно: dword — размер информации о следующей контроле. Затем — имя контрола.

Дальше пошли свойства. 01 — Caption, 03 — BackColor, 04 — ForeColor, 05 — линейные размеры. Декомпилируются подобно линейным размерам клиентской части формы, с одной небольшой разницей: каждый из размеров занимает не 4, а 2 байта.

12 (TabIndex) — индекс, используемый для перечисления контролов на формы при нажатии <Tab>. Многие программисты забывают проставить его после разработки программы, поэтому любители работать на компьютере не прикасаясь к мыши плюются и ругают программу и руки автора. Я поддерживаю их гнев — программист обязан выставить это свойство, так как иначе он не соблюдет правило профессиональной разработки интерфейсов. Этот индекс определяется двумя байтами, что означает: на форму невозможно поместить более 65535 контролов. Затем идет 1B. Одно из самых интересных свойств — Font. В отличие от других, оно описывается классом stdole.Font, который есть только в VB. Так что писать декомпилятор VB не на VB — это большой геморрой, именно из-за классов, зашитых в библиотеки VB.

В конце всех контролов видим FF0204. Как ты помнишь, 02 — это vbFormExistingChildControl. Если ты закрываешь контрол, 04 (vbFormEnd) закрывает форму. Смотри, что получилось бы, если бы мы записывали то, что декомпилировали в уме (листинг взят из моего декомпилятора VB Decompiler — см. Листинг 1).

Назад на стр. 066-040-3  Содержание  Вперед на стр. 066-040-5