Защита уже скомпилированного ПО...

Issues related to VMProtect
Post Reply
igor_sirotkin
Posts: 5
Joined: Tue Apr 17, 2012 6:01 pm

Защита уже скомпилированного ПО...

Post by igor_sirotkin »

Добрый день.
Наша фирма недавно приобрела достаточно дорогостоящее программное обеспечение,
защита у которого мягко говоря несерьезная и есть опасения, что отдельные сотрудники
могут его просто "вынести".
Скажите пож-та можно ли Вашим продуктом защитить уже скомпилированное ПО.

Допустима ли ассемблерная вставка для получения серийного номера и последующей
защиты отдельных кусков кода по этому серийному номеру?
Спасибо.
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита уже скомпилированного ПО...

Post by Admin »

Если вы хотите привязаться к серийнику уже готовое ПО, то в нем как минимум должны присутствовать вызовы нашего SDK с вызовом системы лицензирования (а также чтение сериника из реестра/файла) - если вы решите эту задачу с помощью ассемблерных вставок, то проблемы с защитой быть не должно.
igor_sirotkin
Posts: 5
Joined: Tue Apr 17, 2012 6:01 pm

Re: Защита уже скомпилированного ПО...

Post by igor_sirotkin »

Admin wrote:Если вы хотите привязаться к серийнику уже готовое ПО, то в нем как минимум должны присутствовать вызовы нашего SDK с вызовом системы лицензирования (а также чтение сериника из реестра/файла) - если вы решите эту задачу с помощью ассемблерных вставок, то проблемы с защитой быть не должно.
спасибо за столь скорый ответ.
планируем сделать следующим образом:
в интернете есть масса утилит для подключения дополнительных библиотек и их апи к объектам (например, LordPE).
Значит при помощи одной из таких утили "прицепим" VMProtectSDK32.dll и две ее апишки ("GetHWID" и "SetSerial").
Сам код кажется будет вообще примитивным:
CreateFileA ('license.key')
ReadFileA
CloseHandle

push 80
push буфер для HWID
call GetHWID
push то что считали из файла серийника
call SetSerial

По идее Ваш продукт должен взять в себя серийник??? И потом, когда
на критически важных участках кода сделаю пометку "Ключ", пользоваться этим серийником?

Сегодня попробую, если сработает буду покупать лицензию.
Только еще маленький вопрос. ВМПротекту нету разницы - библиотека это или ехе?
Просто у программы есть библиотеки в которых собственно и сидят все секреты.
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита уже скомпилированного ПО...

Post by Admin »

Code: Select all

push 80
push буфер для HWID
call GetHWID
А HWID вам здесь зачем? Вы все равно его не будете показывать пользователю.

Code: Select all

push то что считали из файла серийника
call SetSerial
Тут по идее еще нужна проверка результата типа:

Code: Select all

call SetSerial
...
test eax, eax
jz @1
...
call MessageBox
...
call ExitProcess
@1:
...
По идее Ваш продукт должен взять в себя серийник???
По идее - да.
И потом, когда на критически важных участках кода сделаю пометку "Ключ", пользоваться этим серийником?

Да, только при отсуствии маркеров и МАР-а вам придется вбивать адреса этих участков в проект руками. Будете дизасмить IDA?
ВМПротекту нету разницы - библиотека это или ехе?
Да, без разницы.
igor_sirotkin
Posts: 5
Joined: Tue Apr 17, 2012 6:01 pm

Re: Защита уже скомпилированного ПО...

Post by igor_sirotkin »

Admin wrote: А HWID вам здесь зачем? Вы все равно его не будете показывать пользователю.

Да, только при отсуствии маркеров и МАР-а вам придется вбивать адреса этих участков в проект руками. Будете дизасмить IDA?
Я думал привязку сделать к железу (почитав Ваш мануал :oops: ). Или содержания серийника достаточно, чтобы ВМПротект понимал, что он привязан именно к железу и именно такому ИД?

Да, я понимаю, что вручную придется. Я уже открывал библиотеки и софт в ИДЕ - все прекрасно видно,
где основные алгоритмы расчетов.
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита уже скомпилированного ПО...

Post by Admin »

Я думал привязку сделать к железу (почитав Ваш мануал :oops: ). Или содержания серийника достаточно, чтобы ВМПротект понимал, что он привязан именно к железу и именно такому ИД?
К HWID привязывается серийник при его генерации. Саму проверку HWID (если это необходимо) VMprotect делает сам при SetSerialNumber.
igor_sirotkin
Posts: 5
Joined: Tue Apr 17, 2012 6:01 pm

Re: Защита уже скомпилированного ПО...

Post by igor_sirotkin »

процедура успехом не увенчалась :( :cry:

пользовался отладчиком OllyDBG и утилитой LordPE.
Прицепить вашу библиотеку удалось легко (в код программы
вставил jmp dword ptr [vmprotectsdk32.SetSerial]),
она видна в таблице импорта и обращение
к АПИ SetSerialNumber происходило точно также
как в скомпилированном тестовом варианте.
Однако после накрытия протектором VMProtect
отказался что либо делать с jmp dword ptr [vmprotectsdk32.SetSerial]
в то время как в тестовом варианте превратил его
в вызов виртуальной машины :(
Я так полагаю это изза того что ЛордПе по своему создает
секцию импорта и ее вид отличается от оригинального, созданного
компилем... Видимо какие то указатели просто не находятся Вмпротектом.
Видимо не судьба... жаль конечно!

Возможности прота с каждым днем все больше и больше впечатляют.

Уважаемый Админ, спасибо за разъяснения и потраченное время.
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита уже скомпилированного ПО...

Post by Admin »

Может на JMP [XXXX] не хватает релока? :))
Присылайте ЕХЕ-ник после LordPE - посмотрю.

P.S. VMProtect ищет референсы на импорт по кодовым секциям а также использует релоки для обхода ложных ссылок (ессно если у файла есть релоки). Возможно у вас чего-то не хватает у новой секции или у самого JMP.
igor_sirotkin
Posts: 5
Joined: Tue Apr 17, 2012 6:01 pm

Re: Защита уже скомпилированного ПО...

Post by igor_sirotkin »

Admin wrote:Может на JMP [XXXX] не хватает релока? :))
Присылайте ЕХЕ-ник после LordPE - посмотрю.
да, релок я не ставил.
грубо записал физ адрес куда апи укладывается:
примерно так:
jmp dword ptr ds:[00920BE4] ;
у меня длл, а не ехе... завтра с работы отправлю :!:

может подскажете, что бы вы делали дополнительно?
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Защита уже скомпилированного ПО...

Post by Admin »

Если у вас DLL и JMP/CALL/PUSH без релока, то у вас код будет глючить даже до VMProtect, т.к. при загрузке DLL по другой базе JMP/CALL/PUSH будет смотреть в никуда. Т.е. все новые вызовы импорта (не только SDK от VMProtect) как минимум должны быть с релоками.
может подскажете, что бы вы делали дополнительно?
Не понял вопроса.
Post Reply