eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

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

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

 eXeL@B —› Протекторы —› Загрузка dll(exe) без сопутствующих dll
Посл.ответ Сообщение

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

Создано: 29 декабря 2015 09:43 New!
Цитата · Личное сообщение · #1

Цель: имеем dll(exe) под протектором с кучей разных длл в импорте (например плуг к автокаду). Соответственно без установленного автокада в системе такую длл в отладчик не загрузить.
Задача: загрузить такой файл в отладчик(лоадер, используя хуки или дебаг) без наличия всех длл из импорта. Полноценная работа такого файла не нужна, достаточно только возможности дойти до OEP (а то и меньше, начальная инициализация протектора и раскриптовка тела файла).
Вариант вырезания импорта например в CFF Explorer работает 50/50, хотелось бы более стабильное решение.
Может есть какое простое решение (хукать какие апи при загрузке)?


Ранг: 988.8 (! ! !)
Статус: Участник

Создано: 29 декабря 2015 09:55 New!
Цитата · Личное сообщение · #2

в ида + бош семулте свой оеп и получите все раскриптованое
а вообще поиск по форуму сто тем всяких по загрузке dll
простой мапинг в память даже сработает
--> Link <--
итд лень все темы сюда набивать, сами найдете

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

Создано: 29 декабря 2015 11:00 New!
Цитата · Личное сообщение · #3

ида + бош
это громоздко, надо просто в виде небольшой утили

простой мапинг в память
разве при маппинге релоки и импорт прота будет настроен чтоб запускать на выполнение?


Ранг: 988.8 (! ! !)
Статус: Участник

Создано: 29 декабря 2015 11:08 New!
Цитата · Личное сообщение · #4

ручками настроите, а по ссылкам и поиску форума найдете готовые исходники

Добавлено спустя 2 минуты
смутно помню что вроде с каким то флагами какая то вин апи еще грузить умеет
на форуме когда то обсуждали

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

Создано: 29 декабря 2015 11:18 · Поправил: 29 декабря 2015 11:31 Tolkin New!
Цитата · Личное сообщение · #5

ручками настроите
ну этот вариант я как раз и пробую(типа сырая загрузка длл), но думал может чего стандартное проще есть.
Типа хучить какое aпи в ntdll что подгружает или ищет длл из импорта, но пока не понял где там надо.


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

Создано: 29 декабря 2015 12:20 · Поправил: 29 декабря 2015 12:33 DenCoder New!
Цитата · Личное сообщение · #6

Tolkin
Можно и с хуками - чтоб на загрузку какой-то dll стопить работу и готовить эту dll. Но если протектор тот, который я думаю(условия задачи в сочетании с приведённым примером очень знакомы), надо мониторить и обращение к секции экспорта нужных dll. Или найти вызов функции, откуда производится импорт, и его похукать. )

Добавлено спустя 4 минуты
И вспомнил. При загрузке dll, требуемых, например, аутокаду, проверку нужного timestamp'а Вы пропустите, не разобрав работу протектора. Мониторинг хард-бряками только укажет место, откуда начнётся масса непонятных вещей )

Добавлено спустя 13 минут
reversecode пишет:
смутно помню что вроде с каким то флагами какая то вин апи еще грузить умеет
на форуме когда то обсуждали

LoadLibraryEx с флагом DONT_RESOLVE_DLL_REFERENCES может сойти

Tolkin пишет:
Соответственно без установленного автокада в системе такую длл в отладчик не загрузить.

и вообще-то его совсем необязательно ставить, чтоб загрузить длл.

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

Создано: 29 декабря 2015 12:39 · Поправил: 29 декабря 2015 12:40 Tolkin New!
Цитата · Личное сообщение · #7

DenCoder
вероятно не то прот что подумали, это хасп конверт, пример вот http://rghost.ru/8hs4HP6M5, пасс exelab.ru


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

Создано: 29 декабря 2015 12:42 New!
Цитата · Личное сообщение · #8

Вероятно

И вероятно, что и принципы те же... Вам видней )

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

Создано: 29 декабря 2015 13:00 New!
Цитата · Личное сообщение · #9

LoadLibraryEx с флагом DONT_RESOLVE_DLL_REFERENCES
пробую, но что-то не запускается так длл, не те ошибки лезут.
если не резолвит импорт - то вероятно вообще оотуда не резолвит, а пару апи из кернела для прота то нужны.
делаю типа так
Code:
  1. TDllEntryProc = function(hinstDLL: HMODULE; dwReason: dword;
  2.                          lpvReserved: pointer): boolean; stdcall;
  3.  
  4. var
  5. dllBase:HMODULE;
  6.  
  7. Procedure runDll(pModule:pointer);
  8. var
  9.   PDOSHEADER:PImageDosHeader;
  10.   PPEHEADER:PImageNtHeaders;
  11.   OEP:TDllEntryProc;
  12. begin
  13.   PDOSHEADER:=PImageDosHeader(pModule);
  14.   if PDOSHEADER^.e_magic<>$5A4D then  exit;
  15.   PPEHEADER:=PImageNtHeaders(HMODULE(PDOSHEADER)+PDOSHEADER^._lfanew);
  16.   if PPEHEADER^.Signature<>$4550 then  exit;
  17.   @OEP:=pointer(HMODULE(pModule)+PPEHEADER^.OptionalHeader.AddressOfEntryPoint);
  18.   OEP(HMODULE(pModule),DLL_PROCESS_ATTACH,nil);
  19. end;
  20.  
  21. begin
  22. dllBase:=LoadLibraryEx(PChar(edit1.Text),0,DONT_RESOLVE_DLL_REFERENCES);
  23. runDll(pointer(dllBase));
  24. end;


Добавлено спустя 5 минут
Можно и с хуками - чтоб на загрузку какой-то dll стопить работу и готовить эту dll
По этому способу я не понял где именно надо тормозить, на вызове какой апи, чтобы поймать. Ибо длл из импорта то нету, как там системный загрузчик ее проверяет или сразу пытается подгрузить.

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

Создано: 29 декабря 2015 13:27 New!
Цитата · Личное сообщение · #10

Всё это громоздко, и даже дико.
Самый лучший вариант это установить AutoCAD и не безобразничать.

С другой стороны, никто не может запретить написать собственные библиотеки:

Code:
  1. UnisNotes.dbx          ??1UnisMaskTNote@@UAE@XZ
  2. UnisGeology.arx        ?instance@CGeologyManager@@SAAAV1@XZ
  3. HoldingBoundModel.dll  ??0Vertex@@QAE@XZ
  4. UnisHoldingBound.dbx   ??1UnEdCreatePathJig@@UAE@XZ
  5.  
  6. acdb18.dll             acutRelRb
  7. AcGe18.dll             ??0AcGeTol@@QAE@XZ
  8. ACAD.exe               acedSSAdd
  9. acui18.dll             ??1CAcUiTab@@UAE@XZ
  10. adui18.dll             ??0CAdUiTab@@QAE@XZ
  11.  

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


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

Создано: 29 декабря 2015 13:52 · Поправил: 29 декабря 2015 13:57 Tolkin New!
Цитата · Личное сообщение · #11

dosprog
эта длл просто как пример.
Часто такое попадается, хочется как-то автоматизировать, получить первичные необходимые данные из протектных файлов(также часто один конверт имеет в импорте кучу других файлов с конвертами, и пока все до не замулить этот не запустить).
Да, как вариант возможно на лету генерить пустые длл с нужным импортом (там по 1 апи зачасчтую в длл), но тоже надо проверять захавает ли такое (подтянет ли олька без ошибок например).


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

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

Tolkin пишет:
Ибо длл из импорта то нету, как там системный загрузчик ее проверяет или сразу пытается подгрузить.

нет dll - напишите сами

Ранг: 271.6 (наставник)
Статус: Модератор
CrackLab

Создано: 29 декабря 2015 17:42 New!
Цитата · Личное сообщение · #13

Tolkin я думаю можно замапить файл и потереть "невалидный" либы/импорт, что проще хз.
DenCoder пишет:
LoadLibraryEx с флагом DONT_RESOLVE_DLL_REFERENCES может сой

либо CreateFileMapping + SEC_IMAGE

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

Создано: 29 декабря 2015 23:46 New!
Цитата · Личное сообщение · #14

Вообщем пока один рабочий вариант найден - это ручная загрузка dll(exe) и настройка импорта.
Причем если длл из импорта нету - то просто настраиваем дальше(не обязательно даже забивать какими либо другими значениями или вырезать)(системный загрузчик и отладчики в этом месте прекращают загрузку целевой длл).
Единственный пока недостаток, при передаче управления в ехе или длл со временем она безвозвратно падает и вместе с ним и сам лоадер, по try except ничего не ловит(может VEH стоит использовать), т.е для перебора всех файлов сразу не идет, надо запускать по экземпляру на каждый файл.
 eXeL@B —› Протекторы —› Загрузка dll(exe) без сопутствующих dll

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS