Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых) |
eXeL@B —› Основной форум —› Странный UPX. Помогите советом |
Посл.ответ | Сообщение |
|
Создано: 12 сентября 2005 10:09 · Личное сообщение · #1 Есть прога - DosPrn (h**p://webfile.ru/508819 - 320Kb) exe-шник упакован (по мнению PEiD'а, да и на глаз очень похоже) UPX'ом. Названия секций: ALLA; BETA; .rsrc Хотя распаковка UPX'а для меня не проблема, но возникли две траблы: 1. Дамп снимается, но не могу восстановить импорт, ни руками, ни при помощи различных утилит 2. Ладно, хотел сделать инлайн патч. Но при добавлении пары строк кода на точке перехода к ОЕР, прога вывливается тут: ;************************ Код пакера ************************* 001E821C 89F9 MOV ECX, EDI 001E821E 57 PUSH EDI 001E821F 48 DEC EAX 001E8220 F2:AE REPNE SCAS BYTE PTR ES:[EDI] 001E8222 55 PUSH EBP 001E8223 FF96 78940E00 CALL DWORD PTR DS:[ESI+E9478] ; KERNEL32.GetProcAddress 001E8229 09C0 OR EAX, EAX ; EAX = 0, а в непатченой адрес API 001E822B 74 07 JE SHORT 001E8234 ;прыгает на екзит процес 001E822D 8903 MOV DWORD PTR DS:[EBX], EAX 001E822F 83C3 04 ADD EBX, 4 001E8232 EB E1 JMP SHORT 001E8215 001E8234 FF96 7C940E00 CALL DWORD PTR DS:[ESI+E947C] ;ExitProcess 001E823A 83C7 04 ADD EDI, 4 001E823D 8D5E FC LEA EBX, DWORD PTR DS:[ESI-4] |
|
Создано: 12 сентября 2005 10:47 · Поправил: 6aHguT · Личное сообщение · #2 Я не спец могу и ошибаться, но тут помоему проверка селостности 001E821C 89F9 MOV ECX, EDI 001E821E 57 PUSH EDI 001E821F 48 DEC EAX 001E8220 F2:AE REPNE SCAS BYTE PTR ES:[EDI] 001E8222 55 PUSH EBP 001E8223 FF96 78940E00 CALL DWORD PTR DS:[ESI+E9478] ; KERNEL32.GetProcAddress 001E8229 09C0 OR EAX, EAX ; EAX = 0, а в непатченой адрес API 001E822B 74 07 JE SHORT 001E8234 ; попробуй тут jne втулить Что-то неприпомню что UPX так делал .... |
|
Создано: 12 сентября 2005 11:30 · Личное сообщение · #3 |
|
Создано: 12 сентября 2005 11:41 · Личное сообщение · #4 crc1 Уже тыщу раз писалось, как вручную определять начало таблицы импорта, тыб хоть статью MozgC прочитал что ли. Все распаковывается нормально. Что до инлайна - тоже нормально инлайнится, т.к. это простой UPX. Ну и сразу скажу про эту прогу - наскоком пропатчить ее неудастся, прога будет потом жутко глючить. |
|
Создано: 12 сентября 2005 13:33 · Личное сообщение · #5 Вопрос по восстановлению импорта снимается. Тормознул я Ну а Ara пишет: Что до инлайна - тоже нормально инлайнится не получается. На переходе к ОЕР я пишу: :001E8266 add edi, 00000002 :001E8269 jmp 001E824D :001E826B popad :001E826C mov byte ptr [00XXXXXX], EB ;Меняю три байта :001E8273 mov byte ptr [00XXXXXX], 00 :001E827A mov byte ptr [00XXXXXX], EB :001E8281 push 001AB588 ; => OEP :001E8286 ret При запуске выдает это "Ошибка инициализации приложения (0хс0000017) Для выхода..." Ara пишет: наскоком пропатчить ее неудастся, прога будет потом жутко глючить. А нельзя чуть поподробнее... |
|
Создано: 12 сентября 2005 15:27 · Личное сообщение · #6 |
|
Создано: 12 сентября 2005 17:09 · Личное сообщение · #7 |
|
Создано: 12 сентября 2005 17:15 · Поправил: Asterix · Личное сообщение · #8 |
|
Создано: 12 сентября 2005 18:17 · Личное сообщение · #9 Asterix Спасибо за мини-тутор, но в моем случае исполняемый файл. Упакован UPX Переход на ОЕР фиксированный: jmp 001AB588 Адреса постоянные. Почему не получается поменять на переходе к ОЕР три байта в памяти? После изменений прога даже в ОЛЮ не грузится, вылетает с ошибкой ЗЫ. To all Опять к импорту. Под ХР восстановил ипреком импорт. Прога запустилась. Гуд Перегрузился под 2К. Распакованная прога падает с ошибкой "Порядковый номер 878 не найден в библиотеке DLL kernel32.dll". Восстановил импорт под 2К, все заработало В обоих случаях ОЕР и RVA в импрек вставлял одни и теже Мля, чтобы это значило? |
|
Создано: 12 сентября 2005 18:24 · Личное сообщение · #10 |
|
Создано: 12 сентября 2005 18:47 · Личное сообщение · #11 crc1 пишет: Опять к импорту. Под ХР восстановил ипреком импорт. Прога запустилась. Гуд Перегрузился под 2К. Распакованная прога падает с ошибкой "Порядковый номер 878 не найден в библиотеке DLL kernel32.dll". У тебя неправильные настройки ИмпРека, наверное галка стоит на Импорт по ординалам или что-то в этом роде |
|
Создано: 12 сентября 2005 19:56 · Личное сообщение · #12 |
|
Создано: 12 сентября 2005 20:15 · Личное сообщение · #13 |
|
Создано: 13 сентября 2005 11:57 · Личное сообщение · #14 Ara Спасибо. Сделал длинный джамп на св. место и все поехало to Asterix Глянь в аттаче мои настройки ImportREC и подскажи че не правильно Grey пишет: Почему сначала JMP а потом POPAD Потому что так в оригинальном упакованном файле 001E8260 C1E0 10 SHL EAX, 10 001E8263 66:8B07 MOV AX, WORD PTR DS:[EDI] 001E8266 83C7 02 ADD EDI, 2 001E8269 EB E2 JMP SHORT 001E824D 001E826B 61 POPAD 001E826C E9 37010000 JMP 001E83A8 ;тут переход на инлайн 001E8271 0000 ADD BYTE PTR DS:[EAX], AL 001E8273 008C82 1E009C82 ADD BYTE PTR DS:[EDX+EAX*4+829C001E], CL 30bd_OptionImportREC.jpg |
|
Создано: 13 сентября 2005 16:53 · Личное сообщение · #15 |
|
Создано: 14 сентября 2005 08:58 · Личное сообщение · #16 |
eXeL@B —› Основной форум —› Странный UPX. Помогите советом |
Эта тема закрыта. Ответы больше не принимаются. |