Возвращение старого режима расположения кода ВМ

Issues related to VMProtect
Post Reply
00p$
Posts: 27
Joined: Thu May 09, 2019 8:20 am

Возвращение старого режима расположения кода ВМ

Post by 00p$ »

В старой версии (сужу по v3.5.1, не знаю когда это поведение поменялось) весь код ВМ располагался в секциях VMProtect, куда управление из защищаемых функций попадало через простые джампы. То есть есть весь код ВМ ссылался лишь сам на себя и на свои секции.

В последней версии (v3.8.4.1798) некоторая часть ВМ располагается прямо на месте защищаемых функций. На бумаге все хорошо, оптимизируется используемое пространство, но есть одно но в текущем положении дел: код ВМ из одной секции может бесконтрольно ссылаться на код ВМ из другой секции.

У меня это вылилось в то, что программа теперь крашится при доступе к секциям, которые были зачищены случайными байтами + помечены как NX, в те моменты когда таких доступов уже быть не должно. Я так понимаю, ВМ переиспользует различный код, чтоб не плодить копии по программе, что опять же хорошо, но лучше бы эту оптимизацию сделать только в рамках одной секции, либо же хотя бы учитывать discardable-флаг на секциях и не ссылаться на них из других секций.

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

Re: Возвращение старого режима расположения кода ВМ

Post by Admin »

Если честно, то совершенно непонятно зачем вы что-то зачищаете случайными байтами?
00p$
Posts: 27
Joined: Thu May 09, 2019 8:20 am

Re: Возвращение старого режима расположения кода ВМ

Post by 00p$ »

Чтоб не оставлять лишний код в памяти. В целом, просто уборка за собой.
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Возвращение старого режима расположения кода ВМ

Post by Admin »

Простой пример прислать можете?
00p$
Posts: 27
Joined: Thu May 09, 2019 8:20 am

Re: Возвращение старого режима расположения кода ВМ

Post by 00p$ »

vmp-protection-test.zip
(2.08 MiB) Downloaded 277 times
пароль отправил в ЛС
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Возвращение старого режима расположения кода ВМ

Post by Admin »

По поводу discardable секций - они должны быть все в конце файла (вместе с .rsrc), а не в середине.
00p$
Posts: 27
Joined: Thu May 09, 2019 8:20 am

Re: Возвращение старого режима расположения кода ВМ

Post by 00p$ »

необязательно, посмотрите на ntoskrnl.exe с Win11 22H2.
но в любом случае, опять же, можно и обойтись чекбоксом, для использования старого режима, если так проще будет
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Возвращение старого режима расположения кода ВМ

Post by Admin »

В вашем примере ВМ генерируется для функции из ".text" (без discardable флага) и из "init.p" (с disсardable флагом), поэтому секция ВМ не имеет disacrdable флага и вмпротект снимает disacrdable флаг у всех секции, которые идут раньше в том числе и у "init.p".

P.S. Там еще и Exception Directory перезаписывается в новое место, для которой discardable тоже снимается.
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Возвращение старого режима расположения кода ВМ

Post by Admin »

У меня это вылилось в то, что программа теперь крашится при доступе к секциям, которые были зачищены случайными байтами + помечены как NX, в те моменты когда таких доступов уже быть не должно.
Проверяйте 1805 билд.
00p$
Posts: 27
Joined: Thu May 09, 2019 8:20 am

Re: Возвращение старого режима расположения кода ВМ

Post by 00p$ »

супер, с 1805-м билдом крашей нет, спасибо!
Post Reply