Защита от подмены dll

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Защита от подмены dll

Сообщение Sergeant » 06.11.2006 (Пн) 17:33

Помогите, кто знает!

Есть программа, которая зашифрована от взлома, и основная ее уязвимость только в использовании внешних функций системных dll.

Одна такая функция является критичной и лежит в kernel32.dll. Нужно помешать взломщикам подсовывать вместо нее свою функцию.

Вопрос: как можно зашить эту функцию внутрь exe самой программы, чтобы программа не лезла за этой функцией в kernel32.dll, а использовала ее внутри себя?

Как вариант, можно ли проверить валидность заданной функции, находящейся внутри dll?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 06.11.2006 (Пн) 17:39

Ресурсы? Побитный скан с текущей?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.11.2006 (Пн) 17:48

Угу.
Ресурсы.
Чтобы в ресурсах были все версии всех kernel32, для всех винд начиная от 95 и заканчивая теми, что выйдут в ближайшие 10 лет хотя бы, причём для всех языков.

Sergeant, страдать фигнёй неполезно. Из фразы "Есть программа, которая зашифрована от взлома, и основная ее уязвимость только в использовании внешних функций системных dll." следует, что сломать программу есть дело двух минут.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Сообщение Sergeant » 06.11.2006 (Пн) 18:18

GSerg писал(а):сломать программу есть дело двух минут.

Сейчас - да.
Но я как раз и пытаюсь найти способ, как это можно исправить.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.11.2006 (Пн) 18:23

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

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 06.11.2006 (Пн) 18:55

Одна такая функция
Не верю (c)
Судя по всему - ты просто не знаешь какие функции используются. Я не понимаю, как программа может не использовать функции HeapAlloc\HeapFree(заметь, это уже(!) две функции)... Но если она такая простая, что не работает с кучами, хочется узнать, а что она делает?

Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Сообщение Sergeant » 06.11.2006 (Пн) 20:25

GSerg писал(а):http://bbs.vbstreets.ru/viewtopic.php?t=20643

Там обсуждается проблема привязки к железу.
Я пишу о другой проблеме - о подмене функции в dll.
Запуск на другом железе и запуск с другой dll - совершенно разные ситуации.

_ae_ писал(а):Не верю (c)
Судя по всему - ты просто не знаешь какие функции используются. Я не понимаю, как программа может не использовать функции HeapAlloc\HeapFree(заметь, это уже(!) две функции)... Но если она такая простая, что не работает с кучами, хочется узнать, а что она делает?

Конечно оттуда используется много функций! Но критичная только одна. Если ее изменить, то программа в результате выдаст другой серийный номер (впрочем это уже отдельная тема).
Нужно просто помешать хакеру подменить заданную функцию в dll, чтобы программа работала так, как предусмотрено ее автором, а не так, как захотел хакер.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.11.2006 (Пн) 20:37

Sergeant, по ссылке не привязка к железу, если ты не понял.
Прочитай ещё раз.
И пойми, сколь глупо выглядит ход твоих мыслей о подмене.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Сообщение Sergeant » 06.11.2006 (Пн) 21:23

GSerg писал(а):Sergeant, по ссылке не привязка к железу, если ты не понял.
Прочитай ещё раз.

В той теме только и говорят, что про привязку к железу.

GSerg писал(а):И пойми, сколь глупо выглядит ход твоих мыслей о подмене.

Я не исключаю, что могу что-то не так понимать, потому что я не программист.
Но отвечай за свои слова! Объясни, что именно глупого у меня и почему.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.11.2006 (Пн) 21:33

Sergeant писал(а):В той теме только и говорят, что про привязку к железу.

Басня про медведя - это будет произведение зоологическое али всё же нет?

Sergeant писал(а):Я не исключаю, что могу что-то не так понимать, потому что я не программист.

И при этом всё равно занимаешься тем, чем занимаешься?

Sergeant писал(а):Но отвечай за свои слова!

Сразу как-то навеяло:
"- Но помни!..
- Не помни, а помни!"

Sergeant писал(а):Объясни, что именно глупого у меня и почему.

Ты всерьёз предполагаешь включение системных функций как часть программы. Одного это уже достаточно для номинации в категории "Глупость года". Ну и, разумеется, ты не понимаешь того факта, что защита одного байта ломается изменением одного байта. Об этом написано в том топике по ссылке, но ты не оценил.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Сообщение Sergeant » 06.11.2006 (Пн) 22:51

GSerg писал(а):
Sergeant писал(а):В той теме только и говорят, что про привязку к железу.

Басня про медведя - это будет произведение зоологическое али всё же нет?

Басни и философствования конечно полезно читать, но ты сам понимаешь, что мне нужны не басни, а конкретное решение проблемы.

GSerg писал(а):Ты всерьёз предполагаешь включение системных функций как часть программы. Одного это уже достаточно для номинации в категории "Глупость года".

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

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 06.11.2006 (Пн) 23:01

Sergeant
Интересно, что там хоть за функция?

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Защита от подмены dll

Сообщение codemaster » 06.11.2006 (Пн) 23:09

Sergeant писал(а):Помогите, кто знает!

Есть программа, которая зашифрована от взлома, и основная ее уязвимость только в использовании внешних функций системных dll.



Один из способов защиты программы
пользовать HASP или что то подобное
Кстати в нем можно разместить часть кода программы "зашифрованной от взлома"
//<-
Mit freundlichen Grüßen
//->

Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Сообщение Sergeant » 07.11.2006 (Вт) 0:10

_ae_ писал(а):Sergeant
Интересно, что там хоть за функция?

ДевайсИоКонтрол

codemaster писал(а):Один из способов защиты программы
пользовать HASP или что то подобное
Кстати в нем можно разместить часть кода программы "зашифрованной от взлома"

Это не подходит. Проект некоммерческий. Сама программа доступна пользователям бесплатно.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.11.2006 (Вт) 5:38

Sergeant писал(а):
_ae_ писал(а):Sergeant
Интересно, что там хоть за функция?

ДевайсИоКонтрол

Ну, конкретно её можно и включить в прогу ;-)

Вот весь код ntdll!NtDeviceIoControlFile:
Код: Выделить всё
mov eax, 38h
lea edx, [esp+4]
int 2Eh
ret 28h


Под Win9x такое, естественно, не заработает. (А надо?)
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.11.2006 (Вт) 6:13

Sergeant писал(а):Басни и философствования конечно полезно читать, но ты сам понимаешь, что мне нужны не басни, а конкретное решение проблемы.

Нды. Гипотеза подтверждена. Способность сделать вывод по аналогу развита плохо, доля буквального восприятия повышена чересчур. :(

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

И снова неверный вывод. Все программы используют готовые функции. И твоя тоже использует, просто пойми, что список используемых функций не исчерпывается Declare. И среди тех программ есть те, которые фиг сломаешь (об этом тоже написано в том топике, который ты не оценил). Потому что защита не определяется этим вот. Я сломаю твою прогу в том месте, где она проверяет то, что ей вернула DeviceIOControl, Sergeant. И мне будет неважно, внешняя это функция или внутренняя, и уж тем более я не буду её подменять.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 07.11.2006 (Вт) 10:11

Проект некоммерческий. Сама программа доступна пользователям бесплатно.
Ну и зачем ее в таком случае защищать?
Лучший способ понять что-то самому — объяснить это другому.

Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Сообщение Sergeant » 07.11.2006 (Вт) 10:41

tyomitch
Поддержка Win9x не нужна.
Можно поподробнее объяснить, как сделать включение функции? А то я в тех строках не разбираюсь. Может софт есть, который это сделает?

GSerg
После того как я криптором зашифрую, эта задача намного усложнится.
Это все равно, что если бы ты сказал: "Зачем менять деревянную дверь на железную, если я ее все равно открою?"

GSerg писал(а):об этом тоже написано в том топике, который ты не оценил

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

Antonariy
Такова особенность задачи, которую выполняет прога. Я к сожалению не могу писать подробности.
Иметь крякнутую версию проги хотят многие.
Последний раз редактировалось Sergeant 07.11.2006 (Вт) 11:01, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.11.2006 (Вт) 10:53

Sergeant писал(а):Это все равно, что если бы ты сказал: "Зачем менять деревянную дверь на железную, если я ее все равно открою?"

Угу.
Зачем менять деревянную дверь на железную, если косяк вокруг неё дряблый?
"Выкраду вместе с забором" (c).
С косяком то есть.

GSerg писал(а):Как-то ты нездорово привязался к тому топику, во всех сообщениях про него вспоминаешь.

А что делать, коли повод даёшь каждый раз.

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

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 07.11.2006 (Вт) 13:02

C самого начала слежу за темой, но так и не понял...
Antonariy писал(а):
Проект некоммерческий. Сама программа доступна пользователям бесплатно.
Ну и зачем ее в таком случае защищать?


Sergeant писал(а):Antonariy
Такова особенность задачи, которую выполняет прога. Я к сожалению не могу писать подробности.
Иметь крякнутую версию проги хотят многие.

Поэтому и спрашиваю: может быть, Вы хотите не программу от взлома защитить, а от декомпиляции?

Sergeant
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 06.11.2006 (Пн) 16:27
Откуда: Москва

Сообщение Sergeant » 07.11.2006 (Вт) 14:46

shady писал(а):Поэтому и спрашиваю: может быть, Вы хотите не программу от взлома защитить, а от декомпиляции?

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

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.11.2006 (Вт) 14:53

Sergeant, ты знаешь, процессор не умеет выполнять зашифрованные команды. Он только расшифрованные выполняет. Их расшифровывают перед подачей в процессор. Ы? Их после этого в отладчике как бы видно.

А ломают программы не хакеры, а крекеры. Это разные категории.

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

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Сообщение NIC » 11.11.2006 (Сб) 2:48

GSerg писал(а):Sergeant, ты знаешь, процессор не умеет выполнять зашифрованные команды. Он только расшифрованные выполняет. Их расшифровывают перед подачей в процессор. Ы? Их после этого в отладчике как бы видно.

А ломают программы не хакеры, а крекеры. Это разные категории.

А защиту от подмены ищи, ищи...


ШАМАН ты МОЛОДЕЦ!!!
если есть замок ... ключ всегда найдёться

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 11.11.2006 (Сб) 12:31

mov eax, 38h
lea edx, [esp+4]
int 2Eh
ret 28h
А это &H38 не поменяется в Windows XP SP N?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.11.2006 (Сб) 12:35

Может, ибо разница в номерах системных функций в ХР и 2000 ощутимо различается.
А я все практикую лечение травами...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 114

    TopList