Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых)

 eXeL@B —› Основной форум —› Странный UPX. Помогите советом
Посл.ответ Сообщение

Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 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]





Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 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 так делал ....



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 12 сентября 2005 11:30
· Личное сообщение · #3

6aHguT пишет:
001E822B 74 07 JE SHORT 001E8234 ; попробуй тут jne втулить


Не прокатит. В EAX должен быть адрес API функции, а тут ноль




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 12 сентября 2005 11:41
· Личное сообщение · #4

crc1
Уже тыщу раз писалось, как вручную определять начало таблицы импорта, тыб хоть статью MozgC прочитал что ли. Все распаковывается нормально. Что до инлайна - тоже нормально инлайнится, т.к. это простой UPX.
Ну и сразу скажу про эту прогу - наскоком пропатчить ее неудастся, прога будет потом жутко глючить.



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 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 пишет:
наскоком пропатчить ее неудастся, прога будет потом жутко глючить.

А нельзя чуть поподробнее...




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 12 сентября 2005 15:27
· Личное сообщение · #6

crc1
Какой-то кривой у тебя инлайн.

crc1 пишет:
А нельзя чуть поподробнее...

Неа, сама прога стоит копейки какие-то, мучаться с ней лень было



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 12 сентября 2005 17:09
· Личное сообщение · #7

Ara пишет:
Какой-то кривой у тебя инлайн.

В чем кривизна?
Это же форум. Ты гордо называешься - наставник, дык наставь на путь истинный
И потом, откуда ты взял, что
Ara пишет:
прога будет потом жутко глючить
, если мучаться с ней лень было
В чем глюки если не секрет



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 12 сентября 2005 17:15 · Поправил: Asterix
· Личное сообщение · #8

Мля, у меня что-то с глазами, топик то про UPX, sorry не то запостил



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 12 сентября 2005 18:17
· Личное сообщение · #9

Asterix
Спасибо за мини-тутор, но в моем случае исполняемый файл. Упакован UPX
Переход на ОЕР фиксированный: jmp 001AB588
Адреса постоянные. Почему не получается поменять на переходе к ОЕР три байта в памяти?
После изменений прога даже в ОЛЮ не грузится, вылетает с ошибкой
ЗЫ. To all
Опять к импорту. Под ХР восстановил ипреком импорт. Прога запустилась. Гуд
Перегрузился под 2К. Распакованная прога падает с ошибкой "Порядковый номер 878 не найден
в библиотеке DLL kernel32.dll". Восстановил импорт под 2К, все заработало
В обоих случаях ОЕР и RVA в импрек вставлял одни и теже
Мля, чтобы это значило?



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 12 сентября 2005 18:24
· Личное сообщение · #10

Asterix
Пока ответ писал ты уже и тутор снес. Быстро
А зря, поучительная весч для незнающих. Выложи в раздел статьи



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 12 сентября 2005 18:47
· Личное сообщение · #11

crc1 пишет:
Опять к импорту. Под ХР восстановил ипреком импорт. Прога запустилась. Гуд
Перегрузился под 2К. Распакованная прога падает с ошибкой "Порядковый номер 878 не найден
в библиотеке DLL kernel32.dll".


У тебя неправильные настройки ИмпРека, наверное галка стоит на Импорт по ординалам
или что-то в этом роде




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 12 сентября 2005 19:56
· Личное сообщение · #12

crc1 пишет:
Почему не получается поменять на переходе к ОЕР три байта в памяти?

Да потомучто ты своим патчем затираешь нужные данные. Сделай JMP _свободное место и там размещай свой патч.



Ранг: 389.6 (мудрец)
Активность: 0.150
Статус: Участник

Создано: 12 сентября 2005 20:15
· Личное сообщение · #13

crc1
А что у тебя с перходом на ОЕП? Почему сначала JMP а потом POPAD? И как ты вообще выходишь на инлайн?

-----
TBR




Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 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



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 13 сентября 2005 16:53
· Личное сообщение · #15

crc1
вроде все по умолчанию, тогда не знаю в чем проблема



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 14 сентября 2005 08:58
· Личное сообщение · #16

Ладно, прикроем тему
Спасибо всем кто откликнулся
С импортом попробую докумкать сам


 eXeL@B —› Основной форум —› Странный UPX. Помогите советом
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати