Сейчас на форуме: _MBK_ (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Распаковка Asprotect 1.4, не могу найти Base Relocation Table
Посл.ответ Сообщение

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

Создано: 11 октября 2010 12:28
· Личное сообщение · #1

Добрый день,

пытаюсь распаковать программу QCollect for DTN iqfeed (http://www.mechtrading.com/ , multi-up.com/353663)
PEiD говорит, что это ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov
asprinf - [QCollector For DTN], [1], [1.4 build 11.20 Release], [Dave DeLuca].

Сама программа написана на дельфи.

Далее я пользовался набором скриптов и мануалами от vnekrilov.

Последовательность сделаных мною шагов следующая:
1. Поиск OEP/SBOEP (скрипт "Поиск OEP (SBOEP).osc"). В результате получаем следующую информацию:

Code:
  1. DE0272      * SBOEP: 00DE0272
  2. DE0272     =======================================
  3. DE0272     Программа имеет следующие опции защиты:
  4. DE0272      + эмулированные APIs!
  5. DE0272      + поврежденную таблицу INIT!
  6. DE0272      + SBOEP!
  7. DE0272      + вызовы APIs Asprotect 1.xx!


2. Раз попорчена таблица INIT, то пытаемся ее восстановить скриптом "Восстановление таблицы INIT.osc". В результате скрипт радостно сообщает, что было восстановлено F6h подпрограмм инициализации и деинициализации. В логе пишет, что:

Code:
  1. DE0272      * SBOEP: 00DE0272
  2. DE0272     =======================================
  3. DE0272      * AsProtect.dll: 00C10000
  4. DE0272      * Таблица INIT: 00527E14
  5. DE0272      * Размер таблицы INIT: 000007B8


3. На следующем этапе восстанавливаем IAT & вызовы API соответствующим скриптом. Скрипт говорит "было восстановлено 0h вызовов АПИ второго типа" и "71h вызовов API первого типа". После всего этого, предлагается исправить все проверки целостности кода, восстановить секцию импорта (.idata) в распакованных программах и восстановить эмулированные подпрограммы в коде программы. В логе появляется следующее:

Code:
  1. C2D982      * Программа имеет вызовы APIs Asprotect из Asprotect.dll: 00C2E940
  2. 471438      * Вызов из Asprotect.dll API GetRegistrationInformation: 00471438
  3. 471438      * Эмулированная API GetRegistrationInformation: 00528700


4. CRC-проверок на целостность кода и эмулированных подпрограмм не нашлось, секция импорта успешно восстановилась без особенных проблем, процесс сдампился.

5. Ищу области со stolen code. Их находит довольно много, скриптом "перенос stolen code в секцию RSRC" соответственно, переношу эти области.

6. Далее начинаются сложности: после удаления из файла секций, созданных asprotect'ом, требуется найти внутрях программы правильные значения Base Relocation Table и TLS Directory.
TLS Directory нашлась по адресу 001531A8, с ней все хорошо.
А вот изначально запись в заголовке сдампленного файла о BRT пишет адрес 001FD9E8, в котором лежит "00 20 00 00 08 00 00 00" (и лежит это в аспротектовской секции .data). Но дело в том, что найти такую последовательность данных в других секциях не удается. Нету их и все тут.

Что делать, куды бечь? Таблица должна быть, это же дельфи.




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

Создано: 11 октября 2010 13:06
· Личное сообщение · #2

Ну возьми да убери релоки вообще.



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 12 октября 2010 02:21
· Личное сообщение · #3

shutty пишет:
Таблица должна быть, это же дельфи.


Таблица релоков, как правило, используется для DLL, чтобы обеспечить корректировку кода при ее загрузке программой на какой-то адрес памяти, и она очень редко используется в файлах EXE. Для файлов, скомпилированных на дельфи, обязательно должна быть TLS Directory. Поэтому можно смело обнулять Base Relocation Table.



Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 12 октября 2010 13:48
· Личное сообщение · #4

vnekrilov пишет:
она очень редко используется в файлах EXE

В семерке довольно часто юзается в екзешниках


 eXeL@B —› Вопросы новичков —› Распаковка Asprotect 1.4, не могу найти Base Relocation Table
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати