[ Ручная распаковка 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