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

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

Ранг: 64.0 (постоянный), 2thx
Активность: 0.040.01
Статус: Участник

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

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




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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



Ранг: 64.0 (постоянный), 2thx
Активность: 0.040.01
Статус: Участник

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

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

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




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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

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



Ранг: 64.0 (постоянный), 2thx
Активность: 0.040.01
Статус: Участник

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

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




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

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

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

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

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

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

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

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

-----
IZ.RU




Ранг: 64.0 (постоянный), 2thx
Активность: 0.040.01
Статус: Участник

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

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




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

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

Вероятно

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

-----
IZ.RU




Ранг: 64.0 (постоянный), 2thx
Активность: 0.040.01
Статус: Участник

Создано: 29 декабря 2015 13:00
· Личное сообщение · #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
По этому способу я не понял где именно надо тормозить, на вызове какой апи, чтобы поймать. Ибо длл из импорта то нету, как там системный загрузчик ее проверяет или сразу пытается подгрузить.



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

Создано: 29 декабря 2015 13:27
· Личное сообщение · #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

Ранг: 64.0 (постоянный), 2thx
Активность: 0.040.01
Статус: Участник

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

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




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

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

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

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

-----
IZ.RU




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

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

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

либо CreateFileMapping + SEC_IMAGE



Ранг: 64.0 (постоянный), 2thx
Активность: 0.040.01
Статус: Участник

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

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


 eXeL@B —› Протекторы —› Загрузка dll(exe) без сопутствующих dll
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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