Сейчас на форуме: Adler, asfa, bartolomeo (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Как найти OEP для запакованной библиотеки DLL
Посл.ответ Сообщение

Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июня 2012 20:06 · Поправил: StarXruk
· Личное сообщение · #1

С помощью программы GeTaOEP в режиме external dll loader получаются такие результаты:
Dll has been injected into the target process at base address 0x10000000
Processing...
Target imagebase: 0x00160000
Approximate OEP RVA: 0x000375D5
VA: 0x001975D5
Target process has been terminated

Как теперь найти в отладчике,когда запущен основной процесс,этот адрес? По адресу 001975D5 ничего нет
При загрузке программы,модуль этой Dll занимает область памяти: 00330000 - 00392000




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 10 июня 2012 20:15
· Личное сообщение · #2

00330000 + 000375D5 = 003675D5

-----
Nulla aetas ad discendum sera




Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июня 2012 21:35
· Личное сообщение · #3

Ну вот в отладчике загружен этот фрагмент:

Судя по всему ОЕР=003675B4-00330000=000375B4
Загружаем ImpRec:

И почему-то ничего не находит




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 10 июня 2012 21:41
· Личное сообщение · #4

Значит GeTaOEP нашла неверный OEP

-----
Nulla aetas ad discendum sera


| Сообщение посчитали полезным: hlmadip


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 10 июня 2012 21:47 · Поправил: -=AkaBOSS=-
· Личное сообщение · #5

ну вот нах накой сюда скрины цеплять?
можно ведь просто скопировать нужный участок и оформить тегом кода

во-первых, OEP находится там, где вызывается процедура, на которой у тебя открыт отладчик
во-вторых, IAT далеко не всегда можно найти автоматически. посмотри, где у тебя начало блока
с адресами импорта и впиши всё ручками

Flint
не, OEP походу правильный (почти, чуть назад надо вернуться)
стандартный код для MSVC++ 8.0
/ADD: упс, и то верно. забыл, что это длл.




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 10 июня 2012 21:58
· Личное сообщение · #6

-=AkaBOSS=- пишет:
во-первых, OEP находится там, где вызывается процедура, на которой у тебя открыт отладчик

OEP длл это начало DllMain, где практически всегда есть проверка на DLL_PROCESS_ATTACH, что в отладчике выглядит как CMP DWORD PTR SS:[EBP+C],1

-----
Nulla aetas ad discendum sera


| Сообщение посчитали полезным: StarXruk, Svinovod

Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июня 2012 22:12
· Личное сообщение · #7

Flint пишет:
OEP длл это начало DllMain, где практически всегда есть проверка на DLL_PROCESS_ATTACH, что в отладчике выглядит как CMP DWORD PTR SS:[EBP+C],1

Нет такого,вот только что есть:
Code:
  1. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  2. |:10008E14(C)
  3. |
  4. :10008ECD 897D0C                  mov dword ptr [ebp+0C], edi
  5.  
  6. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  7. |:10008F0F(U)
  8. |
  9. :10008ED0 837D0C00                cmp dword ptr [ebp+0C], 00000000
  10. :10008ED4 763B                    jbe 10008F11





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 10 июня 2012 22:21 · Поправил: -=AkaBOSS=-
· Личное сообщение · #8

StarXruk
а теперь от этого места вверх ищи конструкцию вида
Code:
  1. push ebp
  2. mov ebp, esp

это и будет ОЕП

btw. а чем запаковано-то хоть?



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июня 2012 22:42 · Поправил: StarXruk
· Личное сообщение · #9

Выше есть вот что:
Code:
  1. :10008DA0 55                      push ebp
  2. :10008DA1 8BEC                    mov ebp, esp

Но на адресе 338DA0 бряк не срабатывает и IAT не ищется.
-=AkaBOSS=- пишет:
а чем запаковано-то хоть?

Frontline Protect Technology Starforce 4.70.8.0 Pro
В аттаче сама библиотека,а вот дамп:
http://depositfiles.com/files/1ceh30yh5

9a89_10.06.2012_EXELAB.rU.tgz - EventsLib.dll




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 10 июня 2012 22:54
· Личное сообщение · #10

StarForce V1.X-V5.X -> StarForce Copy Protection System * Sign.By.fly [Overlay] *

-----
Nulla aetas ad discendum sera




Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июня 2012 22:58 · Поправил: StarXruk
· Личное сообщение · #11

Смысл здесь в том,что проверку диска переместили из exe-файла в эту библиотеку.Если распаковать сам исполняемый файл,восстановить импорт - он запускается,но проверяет диск.
Поэтому,нужно распаковать dll - для этого надо найти точку входа DllEntryPoint.
Откуда я узнал,что проверка в этой библиотеке? Да очень просто,по наличию секции .sforce3 ,которая однозначно говорит о том что файл упакован Старфорсом.




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 10 июня 2012 23:07 · Поправил: -=AkaBOSS=-
· Личное сообщение · #12

дык писал уже:
-=AkaBOSS=- пишет:
посмотри, где у тебя начало блока
с адресами импорта и впиши всё ручками


у тебя на скрине явно видны команды вида
jmp dword ptr ds:[xxxxxxxx]
и
call dword ptr ds:[xxxxxxxx]

найди в дампе один из этих адресов, и просмотри вверх, где он начинается
вычисли RVA этого адреса и введи его в поле RVA в импрек
после просмотри вниз, где этот блок кончается...
вычти из большего меньшее, получишь размер
введешь его в поле Size в импрек, нажмешь Get Imports


StarXruk пишет:
проверку диска переместили из exe-файла в эту библиотеку

нет, просто на неё тоже навесили Старфорс, и она тоже грузит protect.dll, которая
уже работает с дровами и проверяет диск

StarXruk пишет:
надо найти точку входа DllEntryPoint.

дык, нашли ж уже
то, что там ничего не останавливается, еще ничего не значит
стар мог скопировать часть кода и выполнить его гдето в другом месте

| Сообщение посчитали полезным: StarXruk, Svinovod


Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 10 июня 2012 23:32
· Личное сообщение · #13

Не досидел в бане 23 дня, исправлено.

| Сообщение посчитали полезным: Svinovod
 eXeL@B —› Вопросы новичков —› Как найти OEP для запакованной библиотеки DLL
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати