Русский / Russian English / Английский

Сейчас на форуме: _MBK_ (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

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


Ранг: 60.7 (постоянный)
Статус: Участник
KpTeaM

Создано: 12 ноября 2009 11:17 New!
Цитата · Личное сообщение · #1

Вообщем вопрос такой - есть программа (менеждер паролей) Keydb, скачать можно здесь: _http://softsoup.com/download.php?f=keydb.zip
Запакована PeCompact'ом, соответственно распаковывается элементарно, но хочется сделать инлайн. Раньше я никогда PeCompact не инлайнил, поэтому возможно не учёл какие-то нюансы... Я сделал так:

Code:
  1. _.0079B080: EB0C                         jmps       .00079B08E  -----(1)
  2. _.0079B082: 03CA                         add         ecx,edx
  3. _.0079B084: 6800800000                   push        000008000 ;" А "
  4. _.0079B089: 6A00                         push        000
  5. _.0079B08B: 57                           push        edi
  6. _.0079B08C: FF11                         call        d,[ecx]
  7. _.0079B08E: E92B000000                   jmp        .00079B0BE  -----(2)
  8. _.0079B093: 90                           nop
  9. _.0079B094: 90                           nop
  10. _.0079B095: 90                           nop
  11. _.0079B096: 90                           nop
  12. _.0079B097: 90                           nop
  13. _.0079B098: 0000                         add         [eax],al
  14. _.0079B09A: 0000                         add         [eax],al
  15. _.0079B09C: BCB07900FC                   mov         esp,0FC0079B0 ;"№ y_"
  16. _.0079B0A1: B079                         mov         al,079 ;"y"
  17. _.0079B0A3: 00B4B07900B8B0               add         [eax][esi]*4[0B0B80079],dh
  18. _.0079B0AA: 7900                         jns        .00079B0AC  -----(3)
  19. _.0079B0AC: 0000                         add         [eax],al
  20. _.0079B0AE: 0000                         add         [eax],al
  21. _.0079B0B0: 0000                         add         [eax],al
  22. _.0079B0B2: 0000                         add         [eax],al
  23. _.0079B0B4: 0000                         add         [eax],al
  24. _.0079B0B6: 0000                         add         [eax],al
  25. _.0079B0B8: 0000                         add         [eax],al
  26. _.0079B0BA: 0000                         add         [eax],al
  27. _.0079B0BC: 0000                         add         [eax],al
  28. _.0079B0BE: 66C7052D1F6C00B001           mov         w,[006C1F2D],001B0 ;"_"
  29. _.0079B0C7: C6052F1F6C0090               mov         b,[006C1F2F],090 ;"Р"
  30. _.0079B0CE: 8BC6                         mov         eax,esi
  31. _.0079B0D0: 5A                           pop         edx
  32. _.0079B0D1: 5E                           pop         esi
  33. _.0079B0D2: 5F                           pop         edi
  34. _.0079B0D3: 59                           pop         ecx
  35. _.0079B0D4: 5B                           pop         ebx
  36. _.0079B0D5: 5D                           pop         ebp
  37. _.0079B0D6: FFE0                         jmp         eax
  38. _.0079B0D8: 0000                         add         [eax],al
  39. _.0079B0DA: 0000                         add         [eax],al

Вроде всё работает, но программа наглухо виснет Может кто-нибудь подскажет, в чём затык ?


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 12 ноября 2009 11:38 · Поправил: DaRKSiDE New!
Цитата · Личное сообщение · #2

Версия пекомпакта какая? На версии до 2.х надо было делать порядка 3-4 редиректов из кода расаковщика, после второй версии все упросилось... т.е. прыжек на ОЕР открытый и находиться в олле бряком на доступ к esp-4 .. классически... т.е. просто тупо патчишь код прыга на свой код и потом на ОЕР..

Ранг: 243.6 (наставник)
Статус: Участник

Создано: 12 ноября 2009 11:40 New!
Цитата · Личное сообщение · #3

Нифига не понятно. Где тут твой инлайн?
У PeCompact в конце есть jmp eax
Правишь его на jmp на свой код, в своём коде патчишь что надо и потом выполняешь jmp eax
Если твой инлайн это то что в конце самом в листинге, то что-то там дофига pop, а push что-то не видно.


Ранг: 60.7 (постоянный)
Статус: Участник
KpTeaM

Создано: 12 ноября 2009 11:42 · Поправил: Runtime_err0r New!
Цитата · Личное сообщение · #4

DaRKSiDE
> Версия пекомпакта какая?
PEiD говорит 2.x

> т.е. прыжек на ОЕР открытый и находиться в олле бряком на доступ к esp-4 .. классически... т.е. просто тупо патчишь код прыга на свой код и потом на ОЕР..
Я так и сделал, только прога после этого виснет, в этом-то и проблема

cppasm
> Нифига не понятно. Где тут твой инлайн?

Вот он

Code:
  1. _.0079B0BE: 66C7052D1F6C00B001           mov         w,[006C1F2D],001B0 ;"_"
  2. _.0079B0C7: C6052F1F6C0090               mov         b,[006C1F2F],090 ;"Р"
  3. _.0079B0CE: 8BC6                         mov         eax,esi
  4. _.0079B0D0: 5A                           pop         edx
  5. _.0079B0D1: 5E                           pop         esi
  6. _.0079B0D2: 5F                           pop         edi
  7. _.0079B0D3: 59                           pop         ecx
  8. _.0079B0D4: 5B                           pop         ebx
  9. _.0079B0D5: 5D                           pop         ebp
  10. _.0079B0D6: FFE0                         jmp         eax


Статус: Аноним

Создано: 12 ноября 2009 11:58 New!
Цитата #5

На сколько я помню сразу после JMP EAX надо оставить свободное место. Туда пишется адрес OEP, который затем попадает в EAX.

Ранг: 441.3 (мудрец)
Статус: Участник

Создано: 12 ноября 2009 12:10 New!
Цитата · Личное сообщение · #6

Runtime_err0r
фигня какая-то

вот OEP
Code:
  1. 0079B096  - FFE0                JMP EAX      -  <b>OEP</b>
  2. 0079B098    E4 51               IN AL,51
  3. 0079B09A    6F                  OUTS DX,DWORD PTR ES:[EDI]
  4. 0079B09B    00BCB0 7900FCB0     ADD BYTE PTR DS:[EAX+ESI*4+B0FC0079],BH
  5. 0079B0A2    79 00               JNS SHORT keydb.0079B0A4
  6. 0079B0A4    B4 B0               MOV AH,0B0
  7. 0079B0A6    79 00               JNS SHORT keydb.0079B0A8
  8. 0079B0A8    B8 B0790000         MOV EAX,79B0


с него и делай прыжок на свой инлайн


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 12 ноября 2009 12:12 New!
Цитата · Личное сообщение · #7

Runtime_err0r пишет:
Я так и сделал, только прога после этого виснет, в этом-то и проблема

Проверяй... правильно ли пачишь? Не вызывает ли это коллизии...


Статус: Аноним

Создано: 12 ноября 2009 12:14 New!
Цитата #8

Прыжок должен быть поверх JMP EAX и он должен быть коротким, иначе ваши инструкции затрутся, если вы умудритесь воткнуть длинный JMP или ставить новый сразу вместо JMP EAX.

А вообще в Вопросы новички переносить надо. Инлайн халява. Надо брать отладчик и в трассировке смотреть где ошибка, а не "вроде всё работает".


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 12 ноября 2009 12:18 New!
Цитата · Личное сообщение · #9

Чет я не понял, трудно сделать прыг на свой код и этот код засунуть куданить в конец файла? Там-то точно ничему мешать не будет он...

Ранг: 441.3 (мудрец)
Статус: Участник

Создано: 12 ноября 2009 12:29 · Поправил: tihiy_grom New!
Цитата · Личное сообщение · #10

DaRKSiDE
PECompact при распаковке затрёт длинный джамп вместо JMP EAX
самое простое - сделать сначала короткий джамп вместо JMP EAX, потом длинный джамп на свой инлайн
главное - выбрать верное место

Runtime_err0r
не всё запатчил. без открытия базы прога считает что она зарегистрирована, а после открытия - опять unregistered


Ранг: 544.6 (!)
Статус: Участник
оптимист

Создано: 12 ноября 2009 12:52 New!
Цитата · Личное сообщение · #11

0079B09C Идёт TLS директория прога проста упадёт))


Ранг: 462.8 (мудрец)
Статус: Участник
Only One!

Создано: 12 ноября 2009 12:54 New!
Цитата · Личное сообщение · #12

tihiy_grom пишет:
не всё запатчил. без открытия базы прога считает что она зарегистрирована, а после открытия - опять unregistered ;)

А там закейгенить не судьба?

Ранг: 441.3 (мудрец)
Статус: Участник

Создано: 12 ноября 2009 12:56 New!
Цитата · Личное сообщение · #13

DaRKSiDE
человек ведь инлайн хочет


Ранг: 60.7 (постоянный)
Статус: Участник
KpTeaM

Создано: 12 ноября 2009 12:56 · Поправил: Runtime_err0r New!
Цитата · Личное сообщение · #14

Вообщем добавил новую секцию, вписал туда инлайн, не айс, конечно, зато теперь всё работает
Всем спасибо, война окончена

tihiy_grom
> не всё запатчил. без открытия базы прога считает что она зарегистрирована, а после открытия - опять unregistered ;)
Попробуй зарегистрировать любым именем и номером

ClockMan
> 0079B09C Идёт TLS директория прога проста упадёт))
Спасибо, хоть один ответ по делу

DaRKSiDE
> А там закейгенить не судьба?
Х/З пока не получилось Может и судьба...

Ранг: 441.3 (мудрец)
Статус: Участник

Создано: 12 ноября 2009 12:59 New!
Цитата · Личное сообщение · #15

Runtime_err0r
можно было и без доп.секции сделать

Code:
  1. 0079B096   /EB 69                     JMP SHORT keydb1.0079B101
  2. 0079B098   |E4 51                     IN AL,51
  3. 0079B09A   |6F                        OUTS DX,DWORD PTR ES:[EDI]


Code:
  1. 0079B101    66:C705 2D1F6C00 B001     MOV WORD PTR DS:[6C1F2D],1B0
  2. 0079B10A    C605 2F1F6C00 90          MOV BYTE PTR DS:[6C1F2F],90
  3. 0079B111    FFE0                      JMP EAX


Статус: Аноним

Создано: 13 ноября 2009 09:43 New!
Цитата #16

Топикстартера на костёр. Только сейчас посмотрел что он часть кода прота переносит. Зачем???

Runtime_err0r пишет:
Спасибо, хоть один ответ по делу

то есть мы здесь все флудили? ну-ну

https://cracklab.ru/f/index.php?action=vthread&forum=5&topic=6085&page=2#30 - ну да, на столько простая, что надо было топик поднимать.
 eXeL@B —› Основной форум —› Проблема с инлайном PeCompact'а
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ