Сейчас на форуме: rtsgreg1989, zds, _MBK_ (+5 невидимых) |
![]() |
eXeL@B —› Основной форум —› Протектор дружащий с MinGW |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 09 сентября 2007 12:14 · Поправил: p0n4ik · Личное сообщение · #1 Пользуюсь MinGW в составе IDE - Dev-C++. Пишу на чистом C. Интересует есть ли защита наподобие VMProtect (или не наподобие), здорово если не навесная, т.к. софт пишется собственноручно, любые модификации для обработки протектором сделать можно. Понятно что такие продукты врятли могут быть бесплатными, но вдруг ![]() И вообще кто как защищает свои самописные проекты на C? ![]() |
|
Создано: 10 сентября 2007 14:35 · Личное сообщение · #2 |
|
Создано: 11 сентября 2007 07:17 · Личное сообщение · #3 |
|
Создано: 11 сентября 2007 10:58 · Личное сообщение · #4 |
|
Создано: 12 сентября 2007 20:03 · Личное сообщение · #5 |
|
Создано: 14 сентября 2007 16:58 · Личное сообщение · #6 |
|
Создано: 15 сентября 2007 19:46 · Личное сообщение · #7 dermatolog Пробовал вашу древнюю full-версию (1.1), кажется с wasm.ru. main-функцию защитить удаётся. (Проверял на простейшем примере - переменная содержит ключ, с ключём идёт сравнение того что ввели, и в зависимости от этого выводится результат). Брал адрес функции из map-файла, выбирал максимальную опцию защиты. Переводил десятичное значение константы в шестнадцатеричное и менял местами двухразрядные числа. Искал это значение в незащищённой и защищённой VMProtect'ом версиях. Во втором случае всё шифровалось благополучно. Потом пробовал тот же вариант программы, только с самописной функцией, куда были перенесены сам ключ, его проверка и установка значения другой переменной некоего значения, в зависимости от которого, при вызове этой функции из main, выводился результат. Опять же по map-файлу указывал VMProtect'у адрес функции. Но в этот раз граница была на 3 (!) еденицы раньше, чем начинается следущая функция (main). В этом случае (в случае защиты самописной функции) защита никакого эффекта не возымела, значение переменной так и осталось в открытом виде. Опосля взял demo-версию VMProtect 1.55, переключил её в режим эксперта, поигрался как и в случае ранее, но насколько понял, для demo-версии смысла этого делать не было, ибо можно защитить только EntryPoint. Кстати, насчёт маркеров. А разве будет значительная разница: то что я обработаю VMProtect'ом всю функцию, или с помощью ассемблерных вставок-маркеров укажу конкретные места для защиты? ![]() |
|
Создано: 15 сентября 2007 21:50 · Личное сообщение · #8 |
|
Создано: 16 сентября 2007 16:12 · Личное сообщение · #9 |
|
Создано: 18 сентября 2007 14:51 · Личное сообщение · #10 GPcH Вполне хорошо конечно, только вот в чём проблемы: 1) Нельзя указать MAP-файл, впринципе это глупость конечно, разные компиляторы разный формат могут генерировать, но тогда должна быть предусмотрена возможность добавления адресов функций вручную ![]() 2) niceprotect.h для C++, можно конечно переделать, чтобы его компилятор C кушал, но я сомневаюсь в том, что NiceProtect заметит. Тут не знаю, может я не прав; 3) При включении опции Use anti-debug protection всё время его обнаруживает и срабатывает защита. Либо тут компилятор имеет какое-то значение, либо у меня в системе что-то запущено, хотя софтайсов у меня нет, да и в процессах ничего угрожающего. Заранее спасибо за ответы. ![]() |
|
Создано: 18 сентября 2007 16:48 · Личное сообщение · #11 |
|
Создано: 18 сентября 2007 18:43 · Личное сообщение · #12 |
|
Создано: 18 сентября 2007 22:49 · Личное сообщение · #13 p0n4ik пишет: 1) Нельзя указать MAP-файл MAP файл должен иметь имя EXE файла только с расширением MAP p0n4ik пишет: разные компиляторы разный формат могут генерировать Присылайте мне пример MAP файла MinGW - посмотрю что там нестандартного, сделаю поддержку. p0n4ik пишет: должна быть предусмотрена возможность добавления адресов функций вручную Это бесполезная опция так как после перекомпиляции EXE файла эти адреса изменятся. Лучше рекомендую использовать маркеры. p0n4ik пишет: niceprotect.h для C++, можно конечно переделать Там универсально для всех версий сделано, достаточно его заинклюдить в cpp файл и все. p0n4ik пишет: но я сомневаюсь в том, что NiceProtect заметит Для протектора главное сигнатура которая в маркере а не его имя. p0n4ik пишет: При включении опции Use anti-debug protection всё время его обнаруживает и срабатывает защита. Присылайте незащищенный EXE файл на мой Email ( admin {@} niceprotect.com ) - буду смотреть ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 19 сентября 2007 18:05 · Личное сообщение · #14 GPcH пишет: MAP файл должен иметь имя EXE файла только с расширением MAP Так и делал. GPcH пишет: Это бесполезная опция так как после перекомпиляции EXE файла эти адреса изменятся. Лучше рекомендую использовать маркеры. Простите ступил. GPcH пишет: Там универсально для всех версий сделано, достаточно его заинклюдить в cpp файл и все. Попозже разберу что там не так, но компилировать отказался. Файлы как смогу, сразу пришлю. ![]() |
|
Создано: 20 сентября 2007 18:11 · Личное сообщение · #15 p0n4ik: Выложи куда-нить в обменник скомпиленный сэмпл, аж интересно стало посмотреть... Кстати - 29.09.07 Version 2.6 is released - New powerful interface - MAP markers changed to protect_start, protect_end please update headers from new SDK - If Dubug Directory have an errors it would be deleted now - If Import Directory is not have spaces at end block it normally processed now - Added screensavers protection А теперь вопрос - что курил автор ? ![]() ----- От многой мудрости много скорби, и умножающий знание умножает печаль ![]() |
|
Создано: 20 сентября 2007 21:12 · Личное сообщение · #16 |
|
Создано: 21 сентября 2007 09:38 · Личное сообщение · #17 |
|
Создано: 21 сентября 2007 18:54 · Личное сообщение · #18 |
|
Создано: 21 сентября 2007 19:49 · Личное сообщение · #19 p0n4ik пишет: Веселись, правда секций там целых 5 штук Обработал NiceProtect'ом (правда без виртуализации кода но с виртуализацией точки входа) - все прекрасно работает. Жду MAP файл для дальнейшего тестирования. ![]() ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 23 сентября 2007 11:56 · Личное сообщение · #20 GPcH пишет: Обработал NiceProtect'ом (правда без виртуализации кода но с виртуализацией точки входа) - все прекрасно работает. Это последней версией? Вроде как побольше кода тырит unpacked ![]() ![]() |
|
Создано: 23 сентября 2007 12:40 · Личное сообщение · #21 VMProtectSDK для MinGW: #ifndef _VMPROTECTSDK_H_
![]() |
|
Создано: 23 сентября 2007 13:38 · Личное сообщение · #22 pavka пишет: Это последней версией? Вроде как побольше кода тырит unpacked Там не использовалась виртуализация кода (за отсутвтвием MAP файла или меток) - потому протектилось в режиме простой паковки и мутации точки входа метаморфом. Потому unpacked вариант можно было и не выкладывать. dermatolog Тогда для NiceProtect'а SDK примет вид: #ifndef _NICEPROTECTSDK_H_ #define _NICEPROTECTSDK_H_ #define protect_start __asm__ (" .byte\t0x60; 0xe9; 0x11; 0x00; 0x00; 0x00; 0x24; 0x24; 0x70; 0x72; 0x6F; 0x74; 0x65; 0x63; 0x74; 0x5F; 0x73; 0x74; 0x61; 0x72; 0x74; 0x24; 0x24; 0x61"); #define protect_end __asm__ (" .byte\t0x60; 0xe9; 0x0f; 0x00; 0x00; 0x00; 0x24; 0x24; 0x70; 0x72; 0x6F; 0x74; 0x65; 0x63; 0x74; 0x5F; 0x65; 0x6E; 0x64; 0x24; 0x24; 0x61"); #endif /*_NICEPROTECTSDK_H_*/ ![]() ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 23 сентября 2007 18:55 · Личное сообщение · #23 |
|
Создано: 23 сентября 2007 19:06 · Личное сообщение · #24 |
|
Создано: 23 сентября 2007 19:16 · Поправил: p0n4ik · Личное сообщение · #25 |
|
Создано: 23 сентября 2007 19:22 · Личное сообщение · #26 flair пишет: Дерматолог хвалит свой протектор инстинктивно.Самолюбие Никто ничего не хвалит если ты не заметил. В любом случае о качестве протектора вообще никак нельзя судить по конкретной реализации защиты в конкретной программе, т.к. встречаются реализации, которые "ломаются" правкой всего одного бита в секции с глобальными переменными независимо какой протектор висит на секции кода ![]() ![]() |
|
Создано: 23 сентября 2007 19:40 · Поправил: p0n4ik · Личное сообщение · #27 GPcH пишет: Тогда для NiceProtect'а SDK примет вид: #ifndef _NICEPROTECTSDK_H_ #define _NICEPROTECTSDK_H_ #define protect_start __asm__ (" .byte\t0x60; 0xe9; 0x11; 0x00; 0x00; 0x00; 0x24; 0x24; 0x70; 0x72; 0x6F; 0x74; 0x65; 0x63; 0x74; 0x5F; 0x73; 0x74; 0x61; 0x72; 0x74; 0x24; 0x24; 0x61"); #define protect_end __asm__ (" .byte\t0x60; 0xe9; 0x0f; 0x00; 0x00; 0x00; 0x24; 0x24; 0x70; 0x72; 0x6F; 0x74; 0x65; 0x63; 0x74; 0x5F; 0x65; 0x6E; 0x64; 0x24; 0x24; 0x61"); #endif /*_NICEPROTECTSDK_H_*/ Ошибки. Запятая а не точка с запятой, а то не скомпилирует ![]() #ifndef _NICEPROTECTSDK_H_ #define _NICEPROTECTSDK_H_ #define protect_start __asm__ (".byte 0x60,0xe9,0x11,0x00,0x00,0x00,0x6E,0x69,0x63,0x65,0x70,0x72,0x6F,0x74, 0x65,0x63,0x74,0x5F,0x73,0x74,0x61,0x72,0x74,0x61"); #define protect_end __asm__ (".byte 0x60,0xe9,0x0f,0x00,0x00,0x00,0x6E,0x69,0x63,0x65,0x70,0x72,0x6F,0x74, 0x65,0x63,0x74,0x5F,0x65,0x6e,0x64,0x61"); #endif /*_NICEPROTECTSDK_H_*/ Вот так всё в порядке. Попробуйте теперь обработать вашей программой мишуру в аттаче (просто глупость для примера работоспособности), используя Stolen Bytes Protection. Результаты в студию ![]() dermatolog Маркеры есть только в версии 1.2 (и выше)? ![]() |
|
Создано: 23 сентября 2007 19:51 · Личное сообщение · #28 |
|
Создано: 23 сентября 2007 20:40 · Личное сообщение · #29 |
|
Создано: 23 сентября 2007 21:42 · Личное сообщение · #30 p0n4ik пишет: Ошибки. Запятая а не точка с запятой, а то не скомпилирует Ошибка в том что вы неверно записали сигнатуры. Сравните что написано у меня: GPcH пишет: 0x60; 0xe9; 0x11; 0x00; 0x00; 0x00; 0x24; 0x24; 0x70; 0x72; 0x6F; 0x74; 0x65; 0x63; 0x74; 0x5F; 0x73; 0x74; 0x61; 0x72; 0x74; 0x24; 0x24; 0x61 И что у Вас: p0n4ik пишет: 0x60,0xe9,0x11,0x00,0x00,0x00,0x6E,0x69,0x63,0x65,0x70,0x72,0x6F,0x74, 0x65,0x63,0x74,0x5F,0x73,0x74,0x61,0x72,0x74,0x61 Потому NiceProtect маркер и не видит (в EXE должно быть $$protect_start$$ в начале и $$protect_end$$ в конце чтобы маркер воспринимался). PS: в версиях 2.5 и 2.6 маркеры разные. SDK нужно брать из версии 2.6 dermatolog пишет: Патамушта товарисч даже не удосужился скачать MinGW и проверить что он там понаписал ) Потому что товарисчу как ты выражаешься работ и с другими компиляторами хватает. Это ты три года на рынке и уже на всем остальном все отладил как часы (что касается VB Native не без моего участия). Моя же цель пока чтобы продукт стабильно виртуализовал общеизвестные компиляторы (VC++ и Delphi/CppBuilder). ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Основной форум —› Протектор дружащий с MinGW |