Защита уже скомпилированного ПО...
-
- Posts: 5
- Joined: Tue Apr 17, 2012 6:01 pm
Защита уже скомпилированного ПО...
Добрый день.
Наша фирма недавно приобрела достаточно дорогостоящее программное обеспечение,
защита у которого мягко говоря несерьезная и есть опасения, что отдельные сотрудники
могут его просто "вынести".
Скажите пож-та можно ли Вашим продуктом защитить уже скомпилированное ПО.
Допустима ли ассемблерная вставка для получения серийного номера и последующей
защиты отдельных кусков кода по этому серийному номеру?
Спасибо.
Наша фирма недавно приобрела достаточно дорогостоящее программное обеспечение,
защита у которого мягко говоря несерьезная и есть опасения, что отдельные сотрудники
могут его просто "вынести".
Скажите пож-та можно ли Вашим продуктом защитить уже скомпилированное ПО.
Допустима ли ассемблерная вставка для получения серийного номера и последующей
защиты отдельных кусков кода по этому серийному номеру?
Спасибо.
Re: Защита уже скомпилированного ПО...
Если вы хотите привязаться к серийнику уже готовое ПО, то в нем как минимум должны присутствовать вызовы нашего SDK с вызовом системы лицензирования (а также чтение сериника из реестра/файла) - если вы решите эту задачу с помощью ассемблерных вставок, то проблемы с защитой быть не должно.
-
- Posts: 5
- Joined: Tue Apr 17, 2012 6:01 pm
Re: Защита уже скомпилированного ПО...
спасибо за столь скорый ответ.Admin wrote:Если вы хотите привязаться к серийнику уже готовое ПО, то в нем как минимум должны присутствовать вызовы нашего SDK с вызовом системы лицензирования (а также чтение сериника из реестра/файла) - если вы решите эту задачу с помощью ассемблерных вставок, то проблемы с защитой быть не должно.
планируем сделать следующим образом:
в интернете есть масса утилит для подключения дополнительных библиотек и их апи к объектам (например, LordPE).
Значит при помощи одной из таких утили "прицепим" VMProtectSDK32.dll и две ее апишки ("GetHWID" и "SetSerial").
Сам код кажется будет вообще примитивным:
CreateFileA ('license.key')
ReadFileA
CloseHandle
push 80
push буфер для HWID
call GetHWID
push то что считали из файла серийника
call SetSerial
По идее Ваш продукт должен взять в себя серийник??? И потом, когда
на критически важных участках кода сделаю пометку "Ключ", пользоваться этим серийником?
Сегодня попробую, если сработает буду покупать лицензию.
Только еще маленький вопрос. ВМПротекту нету разницы - библиотека это или ехе?
Просто у программы есть библиотеки в которых собственно и сидят все секреты.
Re: Защита уже скомпилированного ПО...
Code: Select all
push 80
push буфер для HWID
call GetHWID
Code: Select all
push то что считали из файла серийника
call SetSerial
Code: Select all
call SetSerial
...
test eax, eax
jz @1
...
call MessageBox
...
call ExitProcess
@1:
...
По идее - да.По идее Ваш продукт должен взять в себя серийник???
И потом, когда на критически важных участках кода сделаю пометку "Ключ", пользоваться этим серийником?
Да, только при отсуствии маркеров и МАР-а вам придется вбивать адреса этих участков в проект руками. Будете дизасмить IDA?
Да, без разницы.ВМПротекту нету разницы - библиотека это или ехе?
-
- Posts: 5
- Joined: Tue Apr 17, 2012 6:01 pm
Re: Защита уже скомпилированного ПО...
Я думал привязку сделать к железу (почитав Ваш мануал ). Или содержания серийника достаточно, чтобы ВМПротект понимал, что он привязан именно к железу и именно такому ИД?Admin wrote: А HWID вам здесь зачем? Вы все равно его не будете показывать пользователю.
Да, только при отсуствии маркеров и МАР-а вам придется вбивать адреса этих участков в проект руками. Будете дизасмить IDA?
Да, я понимаю, что вручную придется. Я уже открывал библиотеки и софт в ИДЕ - все прекрасно видно,
где основные алгоритмы расчетов.
Re: Защита уже скомпилированного ПО...
К HWID привязывается серийник при его генерации. Саму проверку HWID (если это необходимо) VMprotect делает сам при SetSerialNumber.Я думал привязку сделать к железу (почитав Ваш мануал ). Или содержания серийника достаточно, чтобы ВМПротект понимал, что он привязан именно к железу и именно такому ИД?
-
- Posts: 5
- Joined: Tue Apr 17, 2012 6:01 pm
Re: Защита уже скомпилированного ПО...
процедура успехом не увенчалась
пользовался отладчиком OllyDBG и утилитой LordPE.
Прицепить вашу библиотеку удалось легко (в код программы
вставил jmp dword ptr [vmprotectsdk32.SetSerial]),
она видна в таблице импорта и обращение
к АПИ SetSerialNumber происходило точно также
как в скомпилированном тестовом варианте.
Однако после накрытия протектором VMProtect
отказался что либо делать с jmp dword ptr [vmprotectsdk32.SetSerial]
в то время как в тестовом варианте превратил его
в вызов виртуальной машины
Я так полагаю это изза того что ЛордПе по своему создает
секцию импорта и ее вид отличается от оригинального, созданного
компилем... Видимо какие то указатели просто не находятся Вмпротектом.
Видимо не судьба... жаль конечно!
Возможности прота с каждым днем все больше и больше впечатляют.
Уважаемый Админ, спасибо за разъяснения и потраченное время.
пользовался отладчиком OllyDBG и утилитой LordPE.
Прицепить вашу библиотеку удалось легко (в код программы
вставил jmp dword ptr [vmprotectsdk32.SetSerial]),
она видна в таблице импорта и обращение
к АПИ SetSerialNumber происходило точно также
как в скомпилированном тестовом варианте.
Однако после накрытия протектором VMProtect
отказался что либо делать с jmp dword ptr [vmprotectsdk32.SetSerial]
в то время как в тестовом варианте превратил его
в вызов виртуальной машины
Я так полагаю это изза того что ЛордПе по своему создает
секцию импорта и ее вид отличается от оригинального, созданного
компилем... Видимо какие то указатели просто не находятся Вмпротектом.
Видимо не судьба... жаль конечно!
Возможности прота с каждым днем все больше и больше впечатляют.
Уважаемый Админ, спасибо за разъяснения и потраченное время.
Re: Защита уже скомпилированного ПО...
Может на JMP [XXXX] не хватает релока? )
Присылайте ЕХЕ-ник после LordPE - посмотрю.
P.S. VMProtect ищет референсы на импорт по кодовым секциям а также использует релоки для обхода ложных ссылок (ессно если у файла есть релоки). Возможно у вас чего-то не хватает у новой секции или у самого JMP.
Присылайте ЕХЕ-ник после LordPE - посмотрю.
P.S. VMProtect ищет референсы на импорт по кодовым секциям а также использует релоки для обхода ложных ссылок (ессно если у файла есть релоки). Возможно у вас чего-то не хватает у новой секции или у самого JMP.
-
- Posts: 5
- Joined: Tue Apr 17, 2012 6:01 pm
Re: Защита уже скомпилированного ПО...
да, релок я не ставил.Admin wrote:Может на JMP [XXXX] не хватает релока? )
Присылайте ЕХЕ-ник после LordPE - посмотрю.
грубо записал физ адрес куда апи укладывается:
примерно так:
jmp dword ptr ds:[00920BE4] ;
у меня длл, а не ехе... завтра с работы отправлю
может подскажете, что бы вы делали дополнительно?
Re: Защита уже скомпилированного ПО...
Если у вас DLL и JMP/CALL/PUSH без релока, то у вас код будет глючить даже до VMProtect, т.к. при загрузке DLL по другой базе JMP/CALL/PUSH будет смотреть в никуда. Т.е. все новые вызовы импорта (не только SDK от VMProtect) как минимум должны быть с релоками.
Не понял вопроса.может подскажете, что бы вы делали дополнительно?