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

 eXeL@B —› Вопросы новичков —› Как засунуть DLL в исполняемый файл?
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 14 апреля 2011 17:48
· Личное сообщение · #1

Есть файл (.EXE) с ним идёт одна DLLка можно ли какнибудь засунуть эту DLL в .EXE чтобы файл работал?



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

Создано: 14 апреля 2011 17:56
· Личное сообщение · #2

ThugboyZ
Просто запиши DLL в конец EXE-файла и это будет оверлеем EXE-файла. Или тебе потом еще и сбрасывать на диск этот DLL-файл нужно?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 14 апреля 2011 18:05
· Личное сообщение · #3

http://www.rsdn.ru/article/baseserv/peloader.xml

-----
Yann Tiersen best and do not fuck




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 14 апреля 2011 18:31
· Личное сообщение · #4

ThugboyZ, тебе, я так понимаю, нужно извлекать DLL из тела своего EXE, а затем подгружать её и с ней работать.

Пример кода на плюсах:
Code:
  1. hInstance=hInst;
  2. TCHAR* dllFileNameFull;
  3.  
  4.                         dllFileNameFull=(TCHAR*)malloc(MAX_PATH*sizeof(TCHAR));
  5.                         memset(dllFileNameFull,0,MAX_PATH*sizeof(TCHAR));
  6.  
  7.                         GetTempPath(MAX_PATH,dllFileNameFull);
  8.                         GetTempFileName(dllFileNameFull,TEXT("tmd"),NULL,dllFileNameFull);
  9.  
  10.                         hResource=FindResource(hInstance,MAKEINTRESOURCE(101),TEXT("DLL"));
  11.                         globalResource=LoadResource(hInstance,hResource);
  12.                         SizeOfResource=SizeofResource(hInstance,hResource);
  13.  
  14.                         hFile=CreateFile(dllFileNameFull,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  15.                         if(hFile!=INVALID_HANDLE_VALUE)
  16.                         {
  17.                               WriteFile(hFile,globalResource,SizeOfResource,&BytesWritten,NULL);
  18.                               CloseHandle(hFile);
  19.                         }


Для его использования необходимо в секцию ресурсов(у меня - с названием "DLL") твоего EXE засунуть твою DLL. В моём случае ресурс DLL имел идентификатор 101. А на диск он будет извлекаться в каталог %temp% с всегда разными именами файла. но начинающегося на "tmd", если это не нужно - надеюсь сами сможете упразднить эту фичу. Полный путь к файлу хранится, как можно заметить, в переменной dllFileNameFull. Надеюсь LoadLibrary вызвать труда не составит ;)

-----
все багрепорты - в личные сообщения


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

Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 14 апреля 2011 18:39
· Личное сообщение · #5

Если exe не твоя, то можно использовать molebox

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

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

Создано: 14 апреля 2011 20:17
· Личное сообщение · #6

Vovan666 пишет:
Если exe не твоя, то можно использовать molebox


Можно Enigma Virtual Box бесплатно и приятно
http://enigmaprotector.com/ru/aboutvb.html

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

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 14 апреля 2011 20:33 · Поправил: ELF_7719116
· Личное сообщение · #7

ThugboyZ
Ну а самый неочевидный вариант - перенести исходный код из длл в ехе
Зы: если дллка не ваша-асм вставками или декомпиляцией



Ранг: 20.3 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 14 апреля 2011 21:39 · Поправил: [c4]
· Личное сообщение · #8

Как писали выше, таскать в ресурсах с последующим извлечением на диск..
Так же думаю, можно сделать по аналогии с - --> Link <--



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 14 апреля 2011 21:41 · Поправил: Hexxx
· Личное сообщение · #9

Если есть сорцы этого exe то через вот эту прогу:
http://www.binary-soft.com/dll2lib/dll2lib.htm
делаем lib файл из dll. Линкуем.

Если нет сорцов - vmware thinapp

-----
Реверсивная инженерия - написание кода идентичного натуральному


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


Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 15 апреля 2011 09:57
· Личное сообщение · #10

Представить DLL в виде хекс-дампа, а когда DLL'ка понадобится записывать ее в темп файл и подгружать

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 15 апреля 2011 10:40
· Личное сообщение · #11

Hexxx пишет:
делаем из lib файл из dll. Линкуем.

т.е. если в своём проекте используем тот же bass.dll например, то этим способом прокатит?
или в таких случаях можно проще сделать?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 145.8 (ветеран), 190thx
Активность: 0.140.36
Статус: Участник

Создано: 15 апреля 2011 11:00
· Личное сообщение · #12

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




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 15 апреля 2011 11:08
· Личное сообщение · #13

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

И ни хрена не будет работать механизм CallBack'ов. Самый простой и правильный способ описал HandMill.

-----
Stuck to the plan, always think that we would stand up, never ran.


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


Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 15 апреля 2011 11:40
· Личное сообщение · #14

Самый простой хранитьв рессурсах с последующей распаковкой
пример с драйвером в рессурсах
KmdKit\examples\basic\HiddenDriver\

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 15 апреля 2011 12:11
· Личное сообщение · #15

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

Еще не забыть обработать манифест если он есть в ресурсе dll
Но самый безгоморный способ -> извлекать dll в temp директорию и грузить в память обычной LoadLibrary

-----
aLL rIGHTS rEVERSED!




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 16 апреля 2011 00:40 · Поправил: Hexxx
· Личное сообщение · #16

Isaev пишет:
т.е. если в своём проекте используем тот же bass.dll например, то этим способом прокатит?

да. Придется только в своем коде сделать вызов DllEntryPoint(он будет доступен как функция полученой из dll2lib либы) чтобы проимитировать загрузку: DLL_ATTACH и т.п. Код же ложится один в один.

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 27.8 (посетитель), 51thx
Активность: 0.030
Статус: Участник

Создано: 16 апреля 2011 20:20 · Поправил: ADMIN-CRACK
· Личное сообщение · #17

Isaev
Isaev пишет:
т.е. если в своём проекте используем тот же bass.dll например, то этим способом прокатит?


Вот пример из комплекта примеров библиотеки bass.dll, как то делал это.
Правда под jwasm-masm и переведено в проект RadASM 3.

aeb7_16.04.2011_EXELAB.rU.tgz - spectrum.7z

Не ту либу кинул, ну да ладно эта под линкер polink 5.0.0.0 из состава пакета masm32 нормально проходит.



Ранг: 12.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 13 марта 2012 23:07
· Личное сообщение · #18

А если при запуске основной проги dll-ка извлекается из ресурсов, распаковывается в памяти и начинает работу? Как отловить, кто ее вызывает, место в программе?. На диск ничего не пишется.



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 15 марта 2012 02:04
· Личное сообщение · #19

дампить надо, когда она уже лежит где надо, и потом искать ссылки на нужный регион памяти. idc скрипт в общем поможет.

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 12.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 16 марта 2012 13:36
· Личное сообщение · #20

Так зачем дампить, прогу и так можно извлечь из ресурсов. Даже распаковал утилиткой, только от этого пользы мало.

Ее бы пропатчить, когда она в памяти развернется..

Код, который грузит dll из ресурсов, довольно запутанный, видимо обфусифицирован. Вызов из одной точки, возврат уже в другую. Кто вызывает, не получается найти, адресация косвенная.



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 16 марта 2012 15:36 · Поправил: Hexxx
· Личное сообщение · #21

Enclave пишет:
Так зачем дампить, прогу и так можно извлечь из ресурсов. Даже распаковал утилиткой, только от этого пользы мало.

Забейте весь код в этой dll символом CC. Как только оно на следующем старте попытается дернуть DLL - попадете в дебагер. Ну или отключите памяти, где лежит DLL, атрибут EXECUTE, получите сразу exception как только будет попытка перехода.

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 12.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 17 марта 2012 01:02
· Личное сообщение · #22

Попробовал.))

CC забиваешь - прога вываливается с Access Violation, олька не реагирует.
Что-то тут не то..
Еще атрибут Execute пробовал убирать, либо не реагирует, либо валится с Access Violation. Менял в Ольке. Может неправильно? Хотя, если там просто поставить бряк на доступ к сегменту c этой dll, то вполне срабатывает, только это немного не то, что надо. Место вызова этой dll таким способом не получается узнать..там еще далеко до этой точки кода.

Куда ни ткнусь, везде мордой об стенку..так и зубы можно сломать, суровая защита.(((



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 17 марта 2012 12:51
· Личное сообщение · #23

Enclave пишет:
Access Violation, олька не реагирует.

a windbg?

-----
Реверсивная инженерия - написание кода идентичного натуральному





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 17 марта 2012 13:54
· Личное сообщение · #24

Enclave пишет:
CC забиваешь - прога вываливается с Access Violation, олька не реагирует.

Смотри какие плагины в олле.
И в настройках олли, не установлено ли игнор исключений.
А лучше возьми "чистую" оллю, без плагинов типа advancedolly и StrongOD.

-----
aLL rIGHTS rEVERSED!




Ранг: 12.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 17 марта 2012 22:25 · Поправил: Enclave
· Личное сообщение · #25

windbg еще не попробовал.
Взял чистую ольку.

В общем, если убирать только атрибут Execute, то что-то не реагирует, все равно выполняется. Если убрать полностью доступ/или поставить "брейк он эксес", то выпадает на попытке чтения некоторых данных из заголовка PE этой dll-ки.

Вот я не пойму, можно ли подменить в ресурсах эту dll, на другую, распакованную? Она размер имеет больший, чем исходная и не влезает. Надо как то может секции менять? Плохо понимаю, а секция ресурсов лежит там не последняя, после нее еще импорт и экспорт есть..




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

Создано: 17 марта 2012 23:01
· Личное сообщение · #26

Execute не работает, потому что DEP не работает, видимо, ибо ос не х64.
Как вариант-для ольки был плагин с драйвером OllyBOnE (Break On Execution), я его не особо смотрел, но вдруг поможет. Либо скрипт навалять при желании можно.
Готовых редакторов ресурсов же овер 9000, не работает ни один, что ли? Ресурсы и целиком можно перенести всю секцию на последнее место.



Ранг: 12.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 17 марта 2012 23:21 · Поправил: Enclave
· Личное сообщение · #27

Конечно, это XP обычная. В семерке как то не очень идет отладка.

Ну все, я нашел адрес, откуда идет вызов этой dll-ки. Трассировка помогла, теперь имею полный лог от и до.
Спасибо за советы с доступом, очень помогли) Я еще посмотрю этот плагин, пригодится.

Archer, так редакторов полно, например тот же CFF, да и еще есть отдельные редакторы именно ресурсов. Наверное я слабо знаком с ними/не успел еще все посмотреть, т.к. не понял, как можно перенести секцию ресурсов и что нужно при этом править.



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 18 марта 2012 15:56
· Личное сообщение · #28

Если можно несколько другой вопрос:
Пожалуйста, скажите программа PE Tools (или LordPE) сама пишет в таблицу импорта exe-файла параметры присоединяемой dll ? Если да, то как тогда к ней обратиться?
Спасибо




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 18 марта 2012 16:10
· Личное сообщение · #29

ksol пишет:
Пожалуйста, скажите программа PE Tools (или LordPE) сама пишет в таблицу импорта exe-файла параметры присоединяемой dll ? Если да, то как тогда к ней обратиться?

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

-----
aLL rIGHTS rEVERSED!




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

Создано: 18 марта 2012 17:05
· Личное сообщение · #30

__declspec(dllimport)

-----
Shalom ebanats!



. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Как засунуть DLL в исполняемый файл?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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