R0 CREW

Enabler.exe Proof Reversing & Moding[Evil Fingers]

Enabler.exe Proof Reversing & Moding[Evil Fingers]

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Enabler.exe Proof Reversing & Moding[Evil Fingers]
Author: Sanjar Satsura
mail : sanjar [at] xakep [dot] ru
www : [url]www.d34dm4st3rs.narod.ru[/url]

PS_RU : Эту статью я посвящаю своей любимой (к сожалению) бывшей девушке.
Маржона знай, ты самая лучшая девушка которую я вообще встречал на свете
(и вряд ли еще встречу)...
Пока я жив ты всегда будешь в моем сердце....

///////////////////////////////////////////////////////////////////////////

0x00 Intro
Сегодня я вам представляю свой мод проги Enabler от EvilFingers.
Программа позволяет активизировать неактивные buttons (кнопки), так что
программа становится главным и опасным врагом шаровар программ=)))
Но используя её я не смог таки коректно ломать shareware проги и мне пришла
идея активизировать дополнительные модули в программе=))
Да заодно изучим все строение проги, и методы активации неактиных элементов…

0x01 Reversing
Итак начнем наш реверс =)) Итак нам понадобятся PEID, IDA PRO, прямые руки,
горячее сердце, и прокачанные мозги…
1 Проводим анализ проги в PEID => итак прога написана на Microsoft Visual Basic 5.0 / 6.0
об этом свидетельствует его сигнатура : 68 DC C7 40 [в секции .text]
2 Далее суем в ИДУ и видим, ой.ё.ё.ёй как следовало ожидать мы имеем дело с навороченным
PI кодом, стало быть все жопа=( НО настоящее реверсеры не сдаются, им мы щас её попробуем
захачить =)))

В архиве (www.d34dm4st3rs.narod.ru/reliases/enabl … moding.rar) привожу готовую
дамп памяти снятый утилитой Марка Рассиновичв ProcessMonitor в виде тектвой памятки что б легче
было ориентироваться (файл enabler.exe.txt)
итак что нам нужно отсюда:
API функции виртуальной машины VB (MSVBVM60.DLL) обычно их импорт.
WIN API
Можно еще структуру форм зафигачить.

0x02 Proof Reverse Research
Я уже собрал все вышесказанное и привел их файле архива(REVERSE & Moding [ENABLER].txt)
Итак щас я попытаюсь прокоментировать все что описано в файле:

Form1 1.2 Command1.Click() //; Это Главная форма. С кнопкой Enable.
0000D094: 28 LitVarI2: 1 0x1 var_C4 //; Переменная 1
0000D099: 04 FLdRfVar var_94
0000D09C: 28 LitVarI2: 5000 0x1388 var_B4 //; Переменная 2
0000D0A1: FE68 ForVar For (counter = start) To (end) //; Вот здесь начинается обычный цикл
0000D0A7: F5 LitI4: 1 0x1 //; Label (Метка)
0000D0AC: 04 FLdRfVar var_94 
0000D0AF: FC22 CI4Var
0000D0B1: 5E ImpAdCallI4 USER32.EnableWindow //; Вызов API функции EnableWindow функции из USER32.dll 
0000D0B6: 71 FStR4 var_E8
0000D0B9: 3C SetLastSystemError //; типа return if(false) завершения цикла
0000D0BA: 6C ILdRf var_E8
0000D0BD: FD69 CVarI4 var_A4
0000D0C1: FCF6 FStVar var_F8
0000D0C5: 0A ImpAdCallFPR4 DoEvents //;Вызов Events
0000D0CA: 04 FLdRfVar var_94
0000D0CD: FE7E NextStepVar Next (element) 
0000D0D3: 0A ImpAdCallFPR4 DoEvents //;Вызов Events
0000D0D8: 28 LitVarI2: 5001 0x1389 var_C4 //; Переменная
0000D0DD: 04 FLdRfVar var_94
0000D0E0: 28 LitVarI2: 10000 0x2710 var_B4
0000D0E5: FE68 ForVar For (counter = start) To (end) //; Еще один цикл for (counter=0;counter<LitVarI2;counter++){
//; counter=start }
0000D0EB: F5 LitI4: 1 0x1 
0000D0F0: 04 FLdRfVar var_94
0000D0F3: FC22 CI4Var
0000D0F5: 5E ImpAdCallI4 USER32.EnableWindow //; Вызов API функции EnableWindow функции из USER32.dll 
0000D0FA: 71 FStR4 var_E8
0000D0FD: 3C SetLastSystemError //; типа return if(false) завершения цикла
0000D0FE: 6C ILdRf var_E8
0000D101: FD69 CVarI4 var_A4
0000D105: FCF6 FStVar var_F8
0000D109: 0A ImpAdCallFPR4 DoEvents // ;Вызов Events
0000D10E: 04 FLdRfVar var_94
0000D111: FE7E NextStepVar Next (element)
0000D117: 27 LitVar_Missing // ;False
0000D11A: 27 LitVar_Missing
0000D11D: 27 LitVar_Missing
0000D120: F5 LitI4: 0 0x0 // ; return 0;
0000D125: 3A LitVarStr: "Done" // ; Done..
0000D12A: 4E FStVarCopyObj var_128
0000D12D: 04 FLdRfVar var_128
0000D130: 0A ImpAdCallFPR4 MsgBox() // ;MessageBOX с алертом [Done..]
0000D135: 36 FFreeVar var_128 var_138 var_148 var_168
0000D140: 13 ExitProcHresult // ; Выход из основной функции типа main

Form1 1.3 ---- //; Форма MessageBox'a с кнопкой Done..
0000CFD4: 13 ExitProcHresult //; Выход из подпроцедуры в main

Итак мы экспортировали функцию из библиотеки USER32.EnableWindow
которая и производит активацию не активной кнопки… :

Export : 
USER32.EnableWindow

Также импортировали API из виртуалтной машины VB (MSVBVM60)
Import:

MSVBVM60.__vbaExceptHandler ; Функция "согласия" для хэндла VB
MSVBVM60.DllFunctionCall ; Вызов фукций из дополнительных dll (Windows=>User32.dll)
MSVBVM60.EVENT_SINK_AddRef ; Создать Реферер
MSVBVM60.EVENT_SINK_QueryInterface ; производная запросов
MSVBVM60.EVENT_SINK_Release ; инициализация
MSVBVM60.MethCallEngine ; Метод вызова движка виртуальной машины VB
MSVBVM60.rtcDoEvents ; Получение ответа
MSVBVM60.rtcMsgBox ; MessageBox на VB
MSVBVM60.ThunRTMain ; Активация процедур в main

0x03 Moding
Итак пришло время модификации программы=)) Зачем нам её модфицировать ? Спросите вы.
Мне чисто нужна была прога которая активизировала бы все что вообще имеется на форме.
А это прога активировала только кнопки, что не так то и удобно для proof shareware (да и нетолько)
crakinga=). Да и потом программа работает лишь в системах от Win98 до WinXP, а вот на Viste, Se7en
да и на всех виндах выше NT 5.2.2 выдает многочесленные ошибки, даже на сборках типа BlackOS вылетает
BSOD! Да жопа не сравненая =( Но что стоит proof реверсеру “хакнуть” это убожество так чтобы народу
стало жить легче=))
Выложу уже готовый мод (enabler_moded[UPX].exe) в том же архиве. Прога активирует все что вообще возможно,
да и пашет на всех виндах, + вчера (14.02.10) оптимизировал работу с памятью и стеком %-)
Юзайте на здоровьице, кому надо может сам отреверсить прогу, по своему усмотрению. (Чтобы не терялись:
упаковал его FSG от Dulek/xt).

0x04 Заключение (outro)
Вот и все насегодня , еще один день подошел к концу, еще один реверс, да и жизнь сократилась на 1 год=)
В этой статье я привел подробный реверс проги Enabler от EvilFingers, показал метод организации программы,
да и выложил готовый крутой новомотченный экзешник %)
Теперь и вы имеете смертельное оружие от shareware (и нетолько, по данным моей статистики : более 85-87%
программных защит можно сломать имеено таким образом), которым нехгрех воспользоваться=))

Ps1: В руках искусного мастера даже ложка - смертельное оружие.
Ps2: Больше всего удар сильнее когда он не ординарен (Маслите свободнее)
Ps3: Крекинг не преступление. Это лишь форма выражения гениальных мыслей.

0x05 Законы, ух уж эти законы…
За не законное использование этой статьи я никакой ответственности не несу !!
Да, и ребятки кто вас осудит если вы сломаете программу только для личного использования ?!
Правильно, никто ! Но неследует углубляться и ломать все подряд (хотя это и нетакое уж плохое дело=)))

0x06 Greetzzz, Fuckzzz, etc…
My Gr33tzzz : OPEN RCE, EvilFingers, my l0v3r g1rlfr13nd
Fuckzzz : =)), Sh4r3w4r3 Pr0gr4mm, Oth3r Stup1d B0ts
Отдельное огромное спасибо Mackmudov’у Azam {prezident} он знает за что =))…