Использование маркеров в Visual C
Использование маркеров в Visual C
Как в Visual C использовать маркеры начала/конца защищаемого блока ?
(db $EB,$10,'VMProtect begin',0)
(db $EB,$10,'VMProtect begin',0)
В дистрибутиве есть также примеры использования маркеров для различных компиляторов (в том числе и для Visual C).
VMProtectSDK.h лежит в папке с примерами.
Code: Select all
...
#include "VMProtectSDK.h"
...
VMProtectBegin
char buf[100];
GetDlgItemText(hDlg, IDC_EDIT, buf, 100);
if (atoi (buf) >> 1 == 1)
MessageBox(hDlg, "Correct password", "Information", MB_ICONINFORMATION + MB_OK);
else
{
MessageBox(hDlg, "Incorrect password", "Error", MB_ICONERROR + MB_OK);
SetFocus(GetDlgItem(hDlg, IDC_EDIT));
}
VMProtectEnd
...
Использование маркеров в Visual C
Спасибо.
Еще вопрос - в демо-версии каковы ограничение на блок, защищаемый маркерами (размер, ...) ?
Еще вопрос - в демо-версии каковы ограничение на блок, защищаемый маркерами (размер, ...) ?
Использование маркеров в Visual C
Как использовать vmprotect_con (в режиме командной строки) ?
Делаю так:
VMProtect_Con.exe Программа.exe Программа1.exe
Результат - [Ошибка] Нет данных для компиляции
Делаю так:
VMProtect_Con.exe Программа.exe Программа1.exe
Результат - [Ошибка] Нет данных для компиляции
Использование маркеров в Visual C
И с локальным именем, и с полным результат одинаковый:
VMProtect_Con.exe E:\Программа.exe E:\Программа1.exe
VMProtect_Con.exe E:\Программа.exe E:\Программа1.exe
Рядом с "Программа.exe" должен находиться "Программа.vmp" (файл проекта, предварительно подготовленный в GUI версии) и "Программа.map" (если вы используете в проекте имена процедур из MAP файла).
Last edited by Admin on Fri Apr 06, 2007 12:48 pm, edited 1 time in total.
Использование маркеров в Visual C
Благодарю, разобрался !
Добрый день.
Хочу задать еще один вопрос по маркерам.
Какие условия должны быть соблюдены при размещении маркеров в тексте программы?
В частности интересует:
- допустима ли вложенность маркеров. Если да, то как обрабатываются вложенные маркеры;
- возможен ли переход из участка кода, обрамленного маркерами за внешние границы участка?
- возможен ли переход из внешнего (незащищенного) участка кода программы внутрь кода, обрамленного маркерами?
Спасибо.
Хочу задать еще один вопрос по маркерам.
Какие условия должны быть соблюдены при размещении маркеров в тексте программы?
В частности интересует:
- допустима ли вложенность маркеров. Если да, то как обрабатываются вложенные маркеры;
- возможен ли переход из участка кода, обрамленного маркерами за внешние границы участка?
- возможен ли переход из внешнего (незащищенного) участка кода программы внутрь кода, обрамленного маркерами?
Спасибо.
Вложенность маркеров в принципе допустима (т.е. не будет влиять на работоспособность кода). Приведу пример:GMC wrote:- допустима ли вложенность маркеров. Если да, то как обрабатываются вложенные маркеры;
Code: Select all
VMProtectBegin2
...
VMProtectBegin1
...
VMProtectEnd1
...
VMProtectEnd2
Возможен.возможен ли переход из участка кода, обрамленного маркерами за внешние границы участка?
Рассмотрим пример:- возможен ли переход из внешнего (незащищенного) участка кода программы внутрь кода, обрамленного маркерами?
Code: Select all
jmp @1
...
VMProtectBegin
...
@1:
...
VMProtectEnd
Спасибо
Я закрыл участки кода у многих инлайн-функций. В итоге получилось совсем не то что я ожидал - вложенные маркеры и т.д.
Поэтому просто убрал маркеры из тела инлайн-функций и разместил их вокруг вызовов этих функций. В итоге получил отлично компилируемый VMProtect-ором проект (т.е. так как я хотел) .
Кстати, попутно решил проблему нестабильности еще одной моей программы. Оказалось, что прямо из незещищенного участка кода был джамп внутрь защищенного участка кода...
Работа с маркерами требует большой внимательности, но и результат соответствует. Все таки критичные ко времени исполнения и достаточно уязвимые участки кода удобнее обрамлять маркерами, нежели виртуализировать всю функцю посредством map-файла.
Я закрыл участки кода у многих инлайн-функций. В итоге получилось совсем не то что я ожидал - вложенные маркеры и т.д.
Поэтому просто убрал маркеры из тела инлайн-функций и разместил их вокруг вызовов этих функций. В итоге получил отлично компилируемый VMProtect-ором проект (т.е. так как я хотел) .
Кстати, попутно решил проблему нестабильности еще одной моей программы. Оказалось, что прямо из незещищенного участка кода был джамп внутрь защищенного участка кода...
Работа с маркерами требует большой внимательности, но и результат соответствует. Все таки критичные ко времени исполнения и достаточно уязвимые участки кода удобнее обрамлять маркерами, нежели виртуализировать всю функцю посредством map-файла.
Для определения ситуаций перехода из незащищенного кода в защищенный предназначен "Режим отладки" (расположен на закладке "Опции"). В режиме отладки вся область защищаемого кода после обработки заполняется командой INT 03, т.е. при запуске приложения в отладчике отладчик остановится на адресе перехода из незащищенного кода в защищенный (тем самым показывая вам такой переход) и можно будет принять соотвествующие меры - либо пометить этот адрес как внешний, либо переписать часть кода для избежания данной ситуации.
Last edited by Admin on Fri Apr 20, 2007 5:39 pm, edited 1 time in total.
Ух ты!
К сожалению такую подробную информацию о "режиме отладки" не увидел в хелпе. Иначе разобрался бы намного раньше.
Как оказалось, форум все-таки нужен . Много интересного уже узнал, а не прошло и пары суток.
Но, все таки думаю, что описание таких важных вопросов должно располагаться в документации на продукт.
К сожалению такую подробную информацию о "режиме отладки" не увидел в хелпе. Иначе разобрался бы намного раньше.
Как оказалось, форум все-таки нужен . Много интересного уже узнал, а не прошло и пары суток.
Но, все таки думаю, что описание таких важных вопросов должно располагаться в документации на продукт.