Сейчас на форуме: vsv1 (+3 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Проблема с распаковкой UPX |
Посл.ответ | Сообщение |
|
Создано: 10 февраля 2008 13:15 · Поправил: satana · Личное сообщение · #1 Здраствуйте, у меня возникла проблема с распаковкой UPX. Распаковать решил обычный mspaint.exe, как ни странно мой когда я открыл свой оригинальный mspaint.exe через PEid он написал Nothing Found*... Но не в этом суть, когда я запаковал его UPX'ом PEid показал UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo как раз то что и нужно, и оригинальный и запакованные файлы запускаются нормально, и работают. Далее я все делал по инструкции, в SoftIce ставил бряк на int 3 (bpint 3), далее в PETools открыл запакованный файл через Break & Enter, когда вывалился в SoftIce восстановил eip (e eip 60) снял бряк с int 3 (bc *) - и поставил след.бряк на esp-4. Нажав F5 тутже снова вылез SoftIce: 01059776 . 61 POPAD 01059777 . 8D4424 80 LEA EAX,DWORD PTR SS:[ESP-80] <<--Тута я прервался... 0105977B > 6A 00 PUSH 0 0105977D . 39C4 CMP ESP,EAX 0105977F .^75 FA JNZ SHORT mspaint.0105977B 01059781 . 83EC 80 SUB ESP,-80 01059784 .-E9 36B4FDFF JMP mspaint.01034BBF <<-- Здесь как я понял прыжок на OEP, я так решил по след причине, вот что выполняется если выполнить прыжек... 01034BBF 6A 70 PUSH 70 01034BC1 68 00740001 PUSH mspaint.01007400 01034BC6 E8 11040000 CALL mspaint.01034FDC 01034BCB 33FF XOR EDI,EDI 01034BCD 57 PUSH EDI 01034BCE FF15 B0110001 CALL DWORD PTR DS:[10011B0] А вот начало незапакованного файла: 01034BBF > $ 6A 70 PUSH 70 01034BC1 . 68 00740001 PUSH mspainto.01007400 01034BC6 . E8 11040000 CALL mspainto.01034FDC 01034BCB . 33FF XOR EDI,EDI 01034BCD . 57 PUSH EDI 01034BCE . FF15 B0110001 CALL DWORD PTR DS:[<&KERNEL32.GetModuleHandleA>] Так вот, записав на листочек адрес 01034BBF как OEP я снял все бряки в Сайсе и поставил на 01059784 по которому находится прыжек на OEP, когда на нем прервался снова снял все бряки и в зациклил программу (а [enter] jmp eip [enter][enter]) Потом нажал F5 и запустил LordPE, там в списке процессов, на процессе mspaint.exe в контекстном меню выбрал dump full... Сохранив файл под именем dumped.exe Далее запустил запакованный файл (mspaint.exe), потом ImpRec и в нем выбрал процесс mspaint.exe, в поле OEP ввел 34BBF, нажал на IAT Auto Search, появилось сообщение - Found Address...... В поле RVA поместилось 1000 а в поле Size 00000EA0. После нажатия на кнопку Get Import в списке появилось 11 строк с библеотеками, напротив каждой стояло YES. Далее нажал Fix Dump, выбрал dumped.exe и все... При запуске dumped_.exe ничего не происходит ![]() Подумал что что-то напутал и еще раз повторил вышеуказанные действия, все тоже самое... При открытии его в Olly Debug выскакивает сообщение: Module 'dumped_' has entry point outside the code (..... (Мои скромные познания в англ.языке подсказывают что сообщение о том что точка входу вне кода) Однако код такой же как в оригинале (не запакованной), спустившись на несколько строк преравыемся на эксепшене... 01034C34 830D 7CF40301 FF OR DWORD PTR DS:[103F47C],FFFFFFFF <<-- Вот на этой строке... 01034C34 830D 7CF40301 FF OR DWORD PTR DS:[103F47C],FFFFFFFF <<-- В оригинале строка такаяже! Ничего непонятно... Исключение возникает из за попытки записи по адресу 0103F47C Пользовался след программами... UPX 3.00w PETools 1.5.400 Import REConstructor v1.6F LordPE (где посмотреть версию так и не нашел) В настройках LordPE - в котегории Task Viewer галочка стоит только напротив Full dupm: Fix header как и написанно в инструкции, в качестве инструкции использовал статью "Распаковка: от самого простого к чуть более сложному", Автор: MozgC [TSRh]. К топику прилагается архив, в нем: mspaint.exe - запакованный файл dumped.exe - дамп dumped_.exe - должен быть работоспособным распакованным. answer.txt - эта тема ImpRecLog.txt - лог ImpRec'a Более детально чем я описал проблему описать наверное невозможно, помогите поожалуйста разобратся, в часности всетаки распакавать данную прогу и понять почему вылетает исключение, и почему OEP вне кода получился... заранее всем большое спасибо=) ![]() ![]() |
|
Создано: 10 февраля 2008 14:07 · Поправил: Veliant · Личное сообщение · #2 |
|
Создано: 10 февраля 2008 14:08 · Личное сообщение · #3 |
|
Создано: 10 февраля 2008 14:35 · Личное сообщение · #4 |
|
Создано: 10 февраля 2008 14:47 · Поправил: satana · Личное сообщение · #5 >>>IMHO UPX при помощи SoftIce распаковывать изврат Эта первая программа котторую я пытаюсь распаковать вручную=) >>>Права у секции UPX1 (code) поставь Full access или хотя бы Writeable Про что почитать чтобы это понять? >>>У тебя дамп кривой 100% А почему он в Olly Debug выглядит в точности как оригинал? ![]() |
|
Создано: 10 февраля 2008 15:42 · Личное сообщение · #6 Стоя на ЕР, прокрути немного вниз, увидишь нули. перед ними прыжок на OEP- в оле по F7 / F8 прыгай, и сдирай дамп с помощью OllyDump'a. получается рабочий дамп. все упиксы сдираются так, и более простого решения нету. ... при сдирании дампа давишь кнопку "Get EIP as OEP", и никакого восстановления уже не нужно... По упиксу статьей есть здесь несколько, посмотри, там все по теме, включая скрэмблеры-но они почти не усложняют работу. ![]() |
|
Создано: 10 февраля 2008 17:25 · Личное сообщение · #7 |
|
Создано: 10 февраля 2008 17:44 · Личное сообщение · #8 |
|
Создано: 10 февраля 2008 17:55 · Личное сообщение · #9 |
|
Создано: 10 февраля 2008 18:12 · Поправил: Assass1n · Личное сообщение · #10 |
|
Создано: 11 февраля 2008 09:58 · Личное сообщение · #11 |
![]() |
eXeL@B —› Вопросы новичков —› Проблема с распаковкой UPX |