Сейчас на форуме: tyns777, zds, JustLife (+3 невидимых)

 eXeL@B —› Программирование —› Идентификация "своей" DLL, и загрузка DLL из памяти.
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 129.7 (ветеран), 2thx
Активность: 0.070
Статус: Участник

Создано: 20 декабря 2009 23:12
· Личное сообщение · #1

Приветствую!
У меня есть два странных вопроса:
1. Есль некий софт, который использует плагины в DLL. Нужно как-то отличать "свои" плагины от "чужих". Если ли какие-нибудь варианты, но так, чтобы эту проверку нельзя было обойти?
Мне в голову приходит только один: шифровать библиотеку по алгоритму RSA и в проге расшифровывать и загружать из памяти. Тогда никто левый не сможет зашифровать DLL, потому что не будет знать ключ.
В связи с этим второй вопрос:
2. Киньте плиз в меня статьей или тутором как загрузить DLL из образа в памяти.

Пояснение (знаю что тут не любят такие темы:s5:
- Это НЕ троян, и НЕ малварь.
- Это НЕ прот или что-то подобное.
- Прога совершенно бесплатна для конечного пользователя.

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



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

Создано: 21 декабря 2009 13:14
· Личное сообщение · #2

В общем да, дискуссия давно бессмысленна, т.к. непонятно чего хочет автор, наверно он сам это толком не знает.

-----
PGP key <0x1B6A24550F33E44A>





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

Создано: 21 декабря 2009 13:53
· Личное сообщение · #3

Может всем будет проще если ТС даст ссылку на этот бесплатный для конечного пользователя софт?
Желающие помочь смогут посмотреть как устроено сейчас и дадут конкретные рекомендации...
А так с самого начало не понятно и как то противоречиво, то хранить защищенную длл в памяти, то не дать доступ к пользовательским данным. О каких данных речь? Вы их в длл компилируете?



Ранг: 129.7 (ветеран), 2thx
Активность: 0.070
Статус: Участник

Создано: 22 декабря 2009 03:32
· Личное сообщение · #4

Я бы дал ссылку на софт, так вы же смеяться будете) Он на делфи написан)



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

Создано: 22 декабря 2009 08:17
· Личное сообщение · #5

Что-то никто над тотал коммандером не смеётся.




Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 22 декабря 2009 08:28
· Личное сообщение · #6

Единственное что можно посоветовать автору это:
1. Проверять целостность своей программы, плагинов, поставляемых автором с программой, и настроек, сохраняемых программой.
2. При добавлении новых (не идущих в комплекте с программой) плагинов активировать их (с сохранением факта активации в защищаемых настройках) только по запросу пользователя с предупреждением о всём отсюда вытекающем.

По второго пункта. Можно генерировать для каждой машины рандомный ключ и шифровать активированые плагины этим ключом (только секции), отмечая факт активации в файле плагина. Соответственно не зашифрованные плагины не грузим, а неправильно зашифрованные не грузяться сами.

-----
DREAMS CALL US




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 декабря 2009 18:04
· Личное сообщение · #7

ntldr пишет:
... ваш секретный ключ легко вычисляется по публичному ключу и шифртексту.

Можно подробнее, что тут имелось ввиду?



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 27 декабря 2009 18:20 · Поправил: Clerk
· Личное сообщение · #8

Загрузить можно по разному. Зависит от требований к совместимости. Можно просто промапить и настроить релоки, в таком случае совместимости нет никакой, загрузчик не сможет этот какбэ модуль юзать. Если нужна полная совместимость, то следует эмулить. Либо файлы, либо секции. Первое лучше. Нубьё мапит и выполняет нужные настройки вручную.



Ранг: 2.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 декабря 2009 21:38
· Личное сообщение · #9

Clerk пишет:
Нубьё мапит и выполняет нужные настройки вручную.

а как делают профессионалы?



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 27 декабря 2009 22:33
· Личное сообщение · #10

JohnFive
Эмулируем секции или файлы. Работа загрузчика направляется в нужное русло



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 27 декабря 2009 22:48
· Личное сообщение · #11

Вот старый паблик код скомпиленный(не пермутирующий, эмулит секции и кривоват в отличае от приватной версии) openfile.ru/486089/
Выводит имена файловых мапов после лоада, перечисляя их в памяти.



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

Создано: 28 декабря 2009 01:52
· Личное сообщение · #12

only пишет:
Можно подробнее, что тут имелось ввиду?

Допустим вы шифруете секретным RSA ключом исполнимый файл поблочно, вычисляя C=M^D mod N для каждого блока. Пусть нам попадется такой блок, что 1 < M^D < N, тогда D = логарифму C с показателем M. Такой логарифм легко вычисляется, в отличии от случая, когда выполняется взятие по модулю N. Так как исполнимый файл содержит неслучайные числа, то среди них обязательно найдутся удовлетворяющие неравенству.
Другой пример этой атаки: допустим мы шифруем публичным RSA ключом, вычисляя C=M^E mod N. Пусть нам попался блок удовлетворяющий неравенству M^E < N, тогда M = корню степени E из C.

-----
PGP key <0x1B6A24550F33E44A>



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


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