[ Ручная распаковка NeoLite 2.0 ]


Программа: NeoLite 2.0
Сайт программы: http://www.neoworx.com
Программа написанна на: Microsoft Visual C++ 6.0
На предмет: Ручная распаковка NeoLite 2.0
Инструменты: Ollydbg, Pe Tools, Import REC.
Автор: OutLaw (теперь Mirr0r)

Привет. Ты наверно слышал о пакере NeoLite 2.0 Сегодня мы будет в ручную распаковывать как раз именно этот пакер. На 
примере будет выступать сам пакер, он к стате запакован сам собой.
Если у тебя есть Peid то можешь убедиться, что NeoLite 2.0 упакован NeoLite-том 2.0. Хехе..не люблю повторяться но все же 
это факт. И так начнем мы с тобой с открытия NeoLite 2.0 в отладчике Ollydbg и так перед нами вот такой код:

0041C1A8 > $ E9 A6000000    JMP NeoLite.0041C253 - Мы тут
0041C1AD     B8DA4100       DD NeoLite.0041DAB8
0041C1B1   . A8C04100       DD <&KERNEL32.LoadLibraryA>
0041C1B5   . ACC04100       DD <&KERNEL32.GetProcAddress>
0041C1B9   . 00000000       DD 00000000
0041C1BD   . B84A0000       DD 00004AB8
0041C1C1     6AC24100       DD NeoLite.0041C26A

Если ты ранее занимался ручной распаковкой то ты знаешь, что надо найти оригинальную точку входа или проще сказать OEP.
Как видешь на этом коде мы не видим оригинальной точки входа.
Давай стобой введем команду "hr esp-4" без кавычек, для этого надо запустить плагин Command Line, для этого выбири в 
главном меню Plugins -> Command Line -> Command Line в появившемся окне напиши hr esp-4 и нажми Enter. Потом запускаем 
программу то бишь нажимаем F9..после запуска мы окажемся вот тут:

0041C5D3  /$ 53             PUSH EBX - Мы тут
0041C5D4  |. 51             PUSH ECX
0041C5D5  |. 52             PUSH EDX
0041C5D6  |. 56             PUSH ESI
0041C5D7  |. 57             PUSH EDI
0041C5D8  |. C8 E80200      ENTER 2E8,0
0041C5DC  |. 50             PUSH EAX
0041C5DD  |. 81ED 82000000  SUB EBP,82

Но как ты видешь это опять не то место. (Для те кто начал в первые распаковывать в ручную программу, я поясню после 
строки на которой мы находимся должен быть JMP то есть переход на OEP)
Давай нажмем опять F9 и окажемся здесь:

0041C262   . FE05 52C24100  INC BYTE PTR DS:[41C252] -Мы тут
0041C268   . FFE0           JMP EAX
0041C26A   . 803D 52C24100 >CMP BYTE PTR DS:[41C252],0
0041C271   . 75 13          JNZ SHORT NeoLite.0041C286

Обрати внимание на JMP EAX. Посмотрим Registers FPU то есть в верхний от тебя правый угол, видешь вот этот адрес:

EAX 004073F3 NeoLite.004073F3

Это виртуальный адрес перехода на ориганальную точку входа в программу. Записываем этот адрес 004073F3 в блокнот.
Этот адрес нам понадобится при восстановлении таблицы импорта.
Трассируем программу с помощью клавиши F7 и доходим до этого адреса:

004073F3   55               PUSH EBP - Мы тут
004073F4   8BEC             MOV EBP,ESP
004073F6   6A FF            PUSH -1
004073F8   68 A0D14000      PUSH NeoLite.0040D1A0
004073FD   68 3C9A4000      PUSH NeoLite.00409A3C
00407402   64:A1 00000000   MOV EAX,DWORD PTR FS:[0]

Это и есть оригинальная точка входа, я писал об этом выше, мы просто его нашли. Сворачиваем ollydbg (не закрываем). 
Теперь давай снимем дамп памяти. Для этого открываем Petools.
В процесах ищем нашу программу. После того как найдешь увидешь внизу какие библиотеки запускает программ, перейди на exe 
программы, видишь "ImageBase - 00400000" запиши этот адрес в блокнот, то есть туда где ты OEP записывал.
И так нажми правой кнопкой по exe-шнику и в меню выбери Dump (Full) сохраняй дамп в отдельной папке, я сохранил его на 
рабочем столе.
Далее открываем PEditor он встроен в Petools просто выбери в панели управления Tools->PE Editor и выбираем в нем наш дамп.
Терь помнишь наш OPE и Image Base давай стобой математикой займемся. короче 004073F3 - 00400000 = 73F3. Дальше нажимаем в 
Pe Editore на Optional Header и в Entry Point вписываем 73F3.
Закрываем Petools. Далее нам надо востановить таблицу импорта
для этого открываем Import REC, ищем в нем нашу прогу Оригинальную. После того как все библиотеки запустяться впиши наш 
OEP а именно 73F3 в OEP в нижем левом от тебя углу. 
После того как введшь 73F3 нажми на IAT AutoSearch. Всплывет окошко Found something! Нажимаем OK, после чего тыкаем на 
Get Imports и увидим как в окне появиться строки YES, если у тебя появиться NO значит читай заного статью, может ты что 
то не то сделал. И так я продолжаю. После чего нажимаем на FixDump, в окне выбираем наш дамп памяти, после чего в окошке 
ты увидешь что типо вот такой надписи. Dumped_.exe saved successfully. Ты тока потом не забудь Dumped_.exe в папку с 
NeoLit-ом переместить а то будет он ругаться что какойто файл не нашел. Короче потом можешь открыть PEiD посмотреть на 
каком языке этот пакер написан. 
Ну вот и все, програ распакованна а то есть мы распаковали NeoLite 2.0 который был запакован NeoLite-от Хехе, читай 
следующие статьи "Ручная распаковка Asprotect","Ручная распаковка UPX".

(c) Outlaw