Сейчас на форуме: asfa, bartolomeo (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Как засунуть DLL в исполняемый файл? |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 14 апреля 2011 17:48 · Личное сообщение · #1 |
|
Создано: 14 апреля 2011 17:56 · Личное сообщение · #2 |
|
Создано: 14 апреля 2011 18:05 · Личное сообщение · #3 |
|
Создано: 14 апреля 2011 18:31 · Личное сообщение · #4 ThugboyZ, тебе, я так понимаю, нужно извлекать DLL из тела своего EXE, а затем подгружать её и с ней работать. Пример кода на плюсах: Code:
Для его использования необходимо в секцию ресурсов(у меня - с названием "DLL") твоего EXE засунуть твою DLL. В моём случае ресурс DLL имел идентификатор 101. А на диск он будет извлекаться в каталог %temp% с всегда разными именами файла. но начинающегося на "tmd", если это не нужно - надеюсь сами сможете упразднить эту фичу. Полный путь к файлу хранится, как можно заметить, в переменной dllFileNameFull. Надеюсь LoadLibrary вызвать труда не составит ;) ----- все багрепорты - в личные сообщения ![]() |
|
Создано: 14 апреля 2011 18:39 · Личное сообщение · #5 |
|
Создано: 14 апреля 2011 20:17 · Личное сообщение · #6 Vovan666 пишет: Если exe не твоя, то можно использовать molebox Можно Enigma Virtual Box бесплатно и приятно ![]() http://enigmaprotector.com/ru/aboutvb.html ![]() |
|
Создано: 14 апреля 2011 20:33 · Поправил: ELF_7719116 · Личное сообщение · #7 |
|
Создано: 14 апреля 2011 21:39 · Поправил: [c4] · Личное сообщение · #8 Как писали выше, таскать в ресурсах с последующим извлечением на диск.. Так же думаю, можно сделать по аналогии с - ![]() |
|
Создано: 14 апреля 2011 21:41 · Поправил: Hexxx · Личное сообщение · #9 Если есть сорцы этого exe то через вот эту прогу: http://www.binary-soft.com/dll2lib/dll2lib.htm делаем lib файл из dll. Линкуем. Если нет сорцов - vmware thinapp ----- Реверсивная инженерия - написание кода идентичного натуральному ![]() |
|
Создано: 15 апреля 2011 09:57 · Личное сообщение · #10 |
|
Создано: 15 апреля 2011 10:40 · Личное сообщение · #11 |
|
Создано: 15 апреля 2011 11:00 · Личное сообщение · #12 |
|
Создано: 15 апреля 2011 11:08 · Личное сообщение · #13 Alchemistry пишет: Засунуть длл в ресы приложения, загрузить в память через лоадер настроив релоки и импорт. И ни хрена не будет работать механизм CallBack'ов. Самый простой и правильный способ описал HandMill. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 15 апреля 2011 11:40 · Личное сообщение · #14 |
|
Создано: 15 апреля 2011 12:11 · Личное сообщение · #15 |
|
Создано: 16 апреля 2011 00:40 · Поправил: Hexxx · Личное сообщение · #16 Isaev пишет: т.е. если в своём проекте используем тот же bass.dll например, то этим способом прокатит? да. Придется только в своем коде сделать вызов DllEntryPoint(он будет доступен как функция полученой из dll2lib либы) чтобы проимитировать загрузку: DLL_ATTACH и т.п. Код же ложится один в один. ----- Реверсивная инженерия - написание кода идентичного натуральному ![]() |
|
Создано: 16 апреля 2011 20:20 · Поправил: ADMIN-CRACK · Личное сообщение · #17 Isaev Isaev пишет: т.е. если в своём проекте используем тот же bass.dll например, то этим способом прокатит? Вот пример из комплекта примеров библиотеки bass.dll, как то делал это. Правда под jwasm-masm и переведено в проект RadASM 3. ![]() Не ту либу кинул, ну да ладно эта под линкер polink 5.0.0.0 из состава пакета masm32 нормально проходит. ![]() |
|
Создано: 13 марта 2012 23:07 · Личное сообщение · #18 |
|
Создано: 15 марта 2012 02:04 · Личное сообщение · #19 |
|
Создано: 16 марта 2012 13:36 · Личное сообщение · #20 Так зачем дампить, прогу и так можно извлечь из ресурсов. Даже распаковал утилиткой, только от этого пользы мало. Ее бы пропатчить, когда она в памяти развернется.. Код, который грузит dll из ресурсов, довольно запутанный, видимо обфусифицирован. Вызов из одной точки, возврат уже в другую. Кто вызывает, не получается найти, адресация косвенная. ![]() |
|
Создано: 16 марта 2012 15:36 · Поправил: Hexxx · Личное сообщение · #21 Enclave пишет: Так зачем дампить, прогу и так можно извлечь из ресурсов. Даже распаковал утилиткой, только от этого пользы мало. Забейте весь код в этой dll символом CC. Как только оно на следующем старте попытается дернуть DLL - попадете в дебагер. Ну или отключите памяти, где лежит DLL, атрибут EXECUTE, получите сразу exception как только будет попытка перехода. ----- Реверсивная инженерия - написание кода идентичного натуральному ![]() |
|
Создано: 17 марта 2012 01:02 · Личное сообщение · #22 Попробовал.)) CC забиваешь - прога вываливается с Access Violation, олька не реагирует. Что-то тут не то.. Еще атрибут Execute пробовал убирать, либо не реагирует, либо валится с Access Violation. Менял в Ольке. Может неправильно? Хотя, если там просто поставить бряк на доступ к сегменту c этой dll, то вполне срабатывает, только это немного не то, что надо. Место вызова этой dll таким способом не получается узнать..там еще далеко до этой точки кода. Куда ни ткнусь, везде мордой об стенку..так и зубы можно сломать, суровая защита.((( ![]() |
|
Создано: 17 марта 2012 12:51 · Личное сообщение · #23 |
|
Создано: 17 марта 2012 13:54 · Личное сообщение · #24 |
|
Создано: 17 марта 2012 22:25 · Поправил: Enclave · Личное сообщение · #25 windbg еще не попробовал. Взял чистую ольку. В общем, если убирать только атрибут Execute, то что-то не реагирует, все равно выполняется. Если убрать полностью доступ/или поставить "брейк он эксес", то выпадает на попытке чтения некоторых данных из заголовка PE этой dll-ки. Вот я не пойму, можно ли подменить в ресурсах эту dll, на другую, распакованную? Она размер имеет больший, чем исходная и не влезает. Надо как то может секции менять? Плохо понимаю, а секция ресурсов лежит там не последняя, после нее еще импорт и экспорт есть.. ![]() |
|
Создано: 17 марта 2012 23:01 · Личное сообщение · #26 Execute не работает, потому что DEP не работает, видимо, ибо ос не х64. Как вариант-для ольки был плагин с драйвером OllyBOnE (Break On Execution), я его не особо смотрел, но вдруг поможет. Либо скрипт навалять при желании можно. Готовых редакторов ресурсов же овер 9000, не работает ни один, что ли? Ресурсы и целиком можно перенести всю секцию на последнее место. ![]() |
|
Создано: 17 марта 2012 23:21 · Поправил: Enclave · Личное сообщение · #27 Конечно, это XP обычная. В семерке как то не очень идет отладка. Ну все, я нашел адрес, откуда идет вызов этой dll-ки. Трассировка помогла, теперь имею полный лог от и до. Спасибо за советы с доступом, очень помогли) Я еще посмотрю этот плагин, пригодится. Archer, так редакторов полно, например тот же CFF, да и еще есть отдельные редакторы именно ресурсов. Наверное я слабо знаком с ними/не успел еще все посмотреть, т.к. не понял, как можно перенести секцию ресурсов и что нужно при этом править. ![]() |
|
Создано: 18 марта 2012 15:56 · Личное сообщение · #28 |
|
Создано: 18 марта 2012 16:10 · Личное сообщение · #29 ksol пишет: Пожалуйста, скажите программа PE Tools (или LordPE) сама пишет в таблицу импорта exe-файла параметры присоединяемой dll ? Если да, то как тогда к ней обратиться? А можно еще раз и по русски? Я несколько раз перечитывал, по слогам даже, и ничего не понял из того, о чем вопрос. ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 18 марта 2012 17:05 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Как засунуть DLL в исполняемый файл? |