Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2014, 14:46   #1
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию EXE (PE) протектор

Уважаемые форумчане, на просторах интернета нашел исходник протектора программ от взлома (Обман анализатора файлов типа PeId)
Его задача - добавление новой секции в PE файл, перевод на эту секцию точку входа EntryPoint,
запись сигнатуры протектора исполняемых файлов Armadillo, потом запись перехода на оригинальную точку входа в основную программу.

Проблема в том что, по умолчанию в исходнике записана только одна сигнатура этого протектора.
А при попытке заменить эту сигнатуру в исходнике на другой упаковщик/протектор, например Morphine или AsPack,
Запакованные файлы попросту перестают работать.
Хочу добавить в него несколько других сигнатур для выбора, но эта проблема не дает этого сделать.
Подскажите пожалуйста, в чем может быть проблема.
Есть подозрение что все зависит от длины записываемой сигнатуры в новую секцию.
К сожалению в этом не особо силен, т.к. по формату и архитектуре PE имею только общее представление.

Вот код сигнатуры Armadillo, которая записывается протектором в новую секцию:
Код:
procedure _FAKESIG();      //Armadillo v3.00a *
begin
  asm
    db 060h ,0E8h ,000h ,000h ,000h ,000h ,05Dh ,050h ,051h ,0EBh ,00Fh ,0B9h ,0EBh ,00Fh ,0B8h ,0EBh ,007h ,0B9h ,0EBh ,00Fh ,090h ,0EBh ,008h ,0FDh ,0EBh ,00Bh ,0F2h ,0EBh ,0F5h ,0EBh ,0F6h ,0F2h ,0EBh ,008h ,0FDh ,0EBh ,0E9h ,0F3h ,0EBh ,0E4h ,0FCh ,0E9h ,059h ,058h ,050h ,051h ,0EBh ,00Fh ,0B9h ,0EBh ,00Fh ,0B8h ,0EBh ,007h ,0B9h ,0EBh ,00Fh ,090h ,0EBh ,008h ,0FDh ,0EBh ,00Bh ,0F2h ,0EBh ,0F5h ,0EBh ,0F6h ,0F2h ,0EBh ,008h ,0FDh ,0EBh ,0E9h ,0F3h ,0EBh ,0E4h ,0FCh ,0E9h ,059h ,058h ,050h ,051h ,058h
    db 058h, 061h      //  не известно что такое
  end;
end;
Вот код сигнатуры Morphine v2.7, которую я пытаюсь записать:
PHP код:
[Morphine v2.7]
signature = ?? ?? ?? ?? 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 6B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 47 65 74 50 72 6F 63 

Переписываю сигнатуру в процедуре (Заменяя вопросики рандомными байтами)

Код:
procedure _FAKESIG();    // Morphine v2.7
begin
  asm
   db 0B9h 00Bh 0FDh 00Fh 000h 000h 000h 000h 000h 000h 000h 000h 0BFh 090h 0B9h 0B8h 051h 0EBh 007h 00Fh 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 000h 0EBh 007h 00Fh 0B9h 0B8h 051h 06Fh 063h 000h 000h 000h 000h 0B8h 051h 0EBh 007h 0B9h 0B8h 051h 0EBh 0B9h 0B8h 000h 000h 000h 000h 06Bh 065h 072h 06Eh 065h 06Ch 033h 032h 02Eh 064h 06Ch 06Ch 000h 000h 047h 065h 074h 050h 072h 06Fh 063h
    db 058h, 061h //  не известно что такое
  end;
end;
И все файлы после протекта становятся не рабочими =(
Прикладываю сам исходник протектора - http://rghost.ru/private/57532384/e4...27d7e576da908b.
Всем спасибо за любую помощь.
denis76560 вне форума Ответить с цитированием
Старый 18.08.2014, 15:14   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Переписываю сигнатуру в процедуре (Заменяя вопросики рандомными байтами)
может по этому и нерабочие.

Цитата:
К сожалению в этом не особо силен, т.к. по формату и архитектуре PE имею только общее представление.
Тогда зачем вообще взялись что-то писать если базы знаний 0 ?
Человек_Борща вне форума Ответить с цитированием
Старый 18.08.2014, 15:26   #3
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
может по этому и нерабочие.
Они из строки видно что могут быть рандомными.

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Тогда зачем вообще взялись что-то писать если базы знаний 0 ?
ну, скажем не 0, а кое-какое представление имею, вот и изучаю данный формат файла на этом примере.
При том, что тут (в этом коде), как я полагаю, просто не верно выставлена длина кода сигнатуры (после ее замены на сигнатуру Morphine). Если это так, то, может кто подскажет где ее указывать, если нет, то может кто-то подскажет в чем дело.
denis76560 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо извлечь .exe из ресурсов .exe скомпилированного с delphi xe. bagabuga Общие вопросы Delphi 2 25.02.2012 21:10
Посоветуйте хороший протектор? XerSon Общие вопросы Delphi 2 13.06.2011 22:58
Как 'засунуть' звуковой файл в EXE-шник.чтоб моя прога состояла всего из одного exe betirsolt Общие вопросы Delphi 11 18.04.2010 21:58
Передача строки exe (с формой (API)) ↔ exe (форма скрыта) Alex Cones Общие вопросы Delphi 16 04.10.2009 15:26
чтение из одного exe файла, и запись в другой exe inndim Общие вопросы Delphi 2 04.02.2009 15:23