Работа с dll в оперативной памяти
От: Smoke_Jaguar  
Дата: 03.11.06 11:12
Оценка:
Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.



Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?
И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?
Re: Работа с dll в оперативной памяти
От: Аноним  
Дата: 03.11.06 11:22
Оценка:
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.


S_J>Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?

S_J>И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?

Поищи по форуму, уже было.
Помоему сделать это таки возможно, но сложно.
Re: Работа с dll в оперативной памяти
От: SergH Россия  
Дата: 03.11.06 11:24
Оценка:
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.


S_J>Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?

S_J>И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?

LoadLibrary в данном случае неприминима.

http://www.rsdn.ru/article/baseserv/peloader.xml
Автор(ы): Максим М. Гумеров
Дата: 20.03.2003
Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.
Делай что должно, и будь что будет
Re: Работа с dll в оперативной памяти
От: Какая разница Украина  
Дата: 03.11.06 11:29
Оценка:
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.




S_J>Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?

S_J>И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?


здесь
Автор: Виталий
Дата: 09.01.04

Но там глюки и автор текста не отзывается
Если сам займешся и исправишь то весь форум тебе будет благодарен
!0xDEAD
Re[2]: Работа с dll в оперативной памяти
От: Smoke_Jaguar  
Дата: 03.11.06 21:05
Оценка:
Здравствуйте, Вы писали:

КР>здесь
Автор: Виталий
Дата: 09.01.04

КР>Но там глюки и автор текста не отзывается

К сожалению, там ссылка на исходники мёртвая. А то что во втором посте, без нормальных комментариев не могу разобрать...


Пока пойду почитаю про "Загрузчик PE-файлов"... Дальше может понятней станет.

КР>Если сам займешся и исправишь то весь форум тебе будет благодарен


Я не волшебник, я только учусь
Re: Работа с dll в оперативной памяти
От: trophim Россия  
Дата: 04.11.06 22:01
Оценка:
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.


А протекторы не подходят (Armadillo, AsProtect etc)? Они на лету могут дешифровать секции файла. И не надо лисапеда.

S_J>Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?

S_J>И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?

LoadLibraryEx с флагом DONT_RESOLVE_DLL_REFERENCES и LOAD_LIBRARY_AS_DATAFILE не спасет отца русской демократии?
[EOF]
Let it be! — Давайте есть пчелу!
Re[2]: Работа с dll в оперативной памяти
От: IID Россия  
Дата: 04.11.06 22:42
Оценка:
Здравствуйте, Какая разница, Вы писали:

КР>Здравствуйте, Smoke_Jaguar, Вы писали:


S_J>>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.




S_J>>Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?

S_J>>И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?


КР>здесь
Автор: Виталий
Дата: 09.01.04

КР>Но там глюки и автор текста не отзывается
КР>Если сам займешся и исправишь то весь форум тебе будет благодарен

Автор прекрасно отзывается... Возможно его просто зае$%ли мессаги а-ля топикстартер.
kalsarikännit
Re[2]: Работа с dll в оперативной памяти
От: Аноним  
Дата: 05.11.06 04:07
Оценка:
Здравствуйте, trophim, Вы писали:

S_J>>Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?

S_J>>И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?

T>LoadLibraryEx с флагом DONT_RESOLVE_DLL_REFERENCES и LOAD_LIBRARY_AS_DATAFILE не спасет отца русской демократии?


Если бы всё было так просто.

LOAD_LIBRARY_AS_DATAFILE
Use this flag when you want to load a DLL only to extract messages or resources from it.

Re: Работа с dll в оперативной памяти
От: NightBlade Россия  
Дата: 07.11.06 07:31
Оценка:
S_J>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.

а зашифрован весь файл, или только код?
если только код, то проблем загрузить, затем получить указатель на функцию и расшифровать в памяти — нет особых проблем
Все вопросы на nightblade@inbox.ru
Re[2]: Работа с dll в оперативной памяти
От: Smoke_Jaguar  
Дата: 08.11.06 00:11
Оценка:
Здравствуйте, NightBlade, Вы писали:

S_J>>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.


NB>а зашифрован весь файл, или только код?

NB>если только код, то проблем загрузить, затем получить указатель на функцию и расшифровать в памяти — нет особых проблем

Пожалуйста, можно поподробней.

Тоесть сначала подключаем частично зашифрованную библиотеку...

Есть указатель на начало функции и прямо подряд в памяти с этого места дешифровывать? А конец как определить?

Когда файл на диске, как его зашифровать чтобы, потом дешифровать можно было?
Re[3]: Работа с dll в оперативной памяти
От: NightBlade Россия  
Дата: 08.11.06 08:11
Оценка:
S_J>>>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.

NB>>а зашифрован весь файл, или только код?

NB>>если только код, то проблем загрузить, затем получить указатель на функцию и расшифровать в памяти — нет особых проблем

S_J>Пожалуйста, можно поподробней.


S_J>Тоесть сначала подключаем частично зашифрованную библиотеку...


S_J>Есть указатель на начало функции и прямо подряд в памяти с этого места дешифровывать? А конец как определить?


S_J>Когда файл на диске, как его зашифровать чтобы, потом дешифровать можно было?


судя по этим вопросам, ты лезешь в дебри (персональные)
как работать с кодом в памяти есть здесь
Автор(ы): Тихомиров В.А.
Дата: 11.11.2002
и здесь
Автор(ы): Игорь В. Филимонов
Дата: 13.09.2004
Это не единственная статья на тему перехвата API-вызовов. Необходимость в ней возникла вследствие того, что в других широко известных статьях и книгах есть небольшие ошибки, которые порой приводят к тому, что перехват не работает. Эта статья избавлена от указанных недостатков.

ключ — функции WriteProcessMemory и ReadProcessMemory. может понадобится VirtualProtect
и еще одна хорошая статья

"конец определить" можно по указателю на следующую функцию, например (надо очень четко знать, какая функция будет следующей. для скомпилированнной DLL это можно посмотреть через Dependency Walker, входящий в состав SDK, а можно самому проанализировать файл, что лучше)

вопрос про шифрование/дешифрование бесмысслен вне рамок контекста
какая вообще задача стоит? защита кода от дезассемблирования? защита программы от копирования? это задачи непростые даже для высококвалифицированного специалиста
самый простой способ — зашифровать через XOR, но такая "шифровка" взламывается вручную за пару минут
Все вопросы на nightblade@inbox.ru
Re[4]: Работа с dll в оперативной памяти
От: Smoke_Jaguar  
Дата: 08.11.06 10:16
Оценка:
Здравствуйте, NightBlade, Вы писали:

NB>судя по этим вопросам, ты лезешь в дебри (персональные)

NB>как работать с кодом в памяти есть здесь
Автор(ы): Тихомиров В.А.
Дата: 11.11.2002
и здесь
Автор(ы): Игорь В. Филимонов
Дата: 13.09.2004
Это не единственная статья на тему перехвата API-вызовов. Необходимость в ней возникла вследствие того, что в других широко известных статьях и книгах есть небольшие ошибки, которые порой приводят к тому, что перехват не работает. Эта статья избавлена от указанных недостатков.

NB>ключ — функции WriteProcessMemory и ReadProcessMemory. может понадобится VirtualProtect
NB>и еще одна хорошая статья


Спасибо, почитаю.



NB>вопрос про шифрование/дешифрование бесмысслен вне рамок контекста


Имелся ввиду способ определения секций которые надо шифровать.
Re[5]: Работа с dll в оперативной памяти
От: NightBlade Россия  
Дата: 08.11.06 10:24
Оценка:
NB>>вопрос про шифрование/дешифрование бесмысслен вне рамок контекста

S_J>Имелся ввиду способ определения секций которые надо шифровать.


блин...
определить какой кусок файла (кода) нужно шифровавть очень просто. формат exe-файла очень подробно документирован
главный вопрос в том, КАК шифровать и где хранить ключ для дешифровки
Все вопросы на nightblade@inbox.ru
Re[6]: Работа с dll в оперативной памяти
От: Smoke_Jaguar  
Дата: 09.11.06 21:42
Оценка:
Здравствуйте, NightBlade, Вы писали:

NB>главный вопрос в том, КАК шифровать и где хранить ключ для дешифровки


Защита нужна только чтоб лишние люди не могли быстро получить доступ к приложению.

Например, алгоритм RC4 и ключ на внешнем носителе? Чем плохо?
Re: Работа с dll в оперативной памяти
От: Аноним  
Дата: 10.11.06 14:26
Оценка:
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>Есть зашифрованная dll. надо её скопировать в память, там дешифровать и подключить к программе... Копировать на диск дешифрованный вариант нельзя.




S_J>Вопрос: Как её отразить в память, чтоб обращаться к ней как к файлу?

S_J>И что передавать функции LoadLibrary(), или имени будет достаточно, раз библиотека в памяти?


Это вам поможет... что касательно длл все тоже самое только вам придется самому парсить таблицу Експорта длл. что вообщем-то совсем не сложно. Находим смещение нужной функции из таблицы и вызываем ее..
Re[7]: Работа с dll в оперативной памяти
От: NightBlade Россия  
Дата: 13.11.06 14:08
Оценка:
Здравствуйте, Smoke_Jaguar, Вы писали:

S_J>Здравствуйте, NightBlade, Вы писали:


NB>>главный вопрос в том, КАК шифровать и где хранить ключ для дешифровки


S_J>Защита нужна только чтоб лишние люди не могли быстро получить доступ к приложению.


S_J>Например, алгоритм RC4 и ключ на внешнем носителе? Чем плохо?


что значит "лишние люди"?
и что в твоем понятии "быстро"?
если ты будешь давать "лишнему человеку" ключ, то получить доступ к твоему коду можно будет очень быстро

задачи надо ставить конкретнее
Все вопросы на nightblade@inbox.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.