Добрый день, господа.
Разрабатываю приложение, которое в настоящий момент защищается при помощи USB ключей. Для работы с ключом используются набор документированных C функций, и библиотека (lib файл), которые поставляются производителем ключей. Передо мной была поставлена задача проверить надежность защиты.
Я создал файл сигнатур функций библиотек и, воспользовавшись IDA, обнаружил все библиотечные функции и места их вызова. После чего удалось активировать часть функций приложения без ключа. Процесс переписывания простейших библиотечных функций защиты приводит к желаемому результату – IDA не находит их вызовы и их код. Тем самым, взлом усложняется, однако переписывание защиты полностью не приемлемо.
Подскажите, пожалуйста, как лучше всего спрятать функции защиты от IDA и других дизассемблеров. Пробовал найти обфускатор для obj/lib файла, а не исходного кода, но ничего не нашел. Если они существуют – поделитесь ссылками.
Re: Как спрятать библиотечные функции защиты от IDA.
Здравствуйте, marmysh, Вы писали:
M>Подскажите, пожалуйста, как лучше всего спрятать функции защиты от IDA и других дизассемблеров.
Зависит от того что вы хотите получить в результате — если только изменить сигнатуры, то будет достаточно метаморфа. Если защитить — то виртуализация.
M>Пробовал найти обфускатор для obj/lib файла, а не исходного кода, но ничего не нашел. Если они существуют – поделитесь ссылками.
Для obj/lib ИМХО ничего не найдете. Смотрите в сторону протекторов, работающих с готовыми EXE/DLL etc.
Re: Как спрятать библиотечные функции защиты от IDA.
Здравствуйте, marmysh.
M>Разрабатываю приложение, которое в настоящий момент защищается при помощи USB ключей. Для работы с ключом используются набор документированных C функций, и библиотека (lib файл), которые поставляются производителем ключей. Передо мной была поставлена задача проверить надежность защиты. M>Я создал файл сигнатур функций библиотек и, воспользовавшись IDA, обнаружил все библиотечные функции и места их вызова. После чего удалось активировать часть функций приложения без ключа.
В большинстве случаев это значи что интеграция защиты спроектирована и реализована криво.
M>Подскажите, пожалуйста, как лучше всего спрятать функции защиты от IDA и других дизассемблеров. Пробовал найти обфускатор для obj/lib файла, а не исходного кода, но ничего не нашел. Если они существуют – поделитесь ссылками.
Как уже выше сказали, для lib/obj ничего нет. Обфусцируй готовый билд VMProtect'ом, например.
Кстати, а что это за защита при помощи USB ключей? Может и обфусцировать будет бестолку, если это какой-нибудь хасп или гвардант, например.
newbie
Re[2]: Как спрятать библиотечные функции защиты от IDA.
Здравствуйте, PolyTech, Вы писали:
PT>Здравствуйте, marmysh, Вы писали: M>>Подскажите, пожалуйста, как лучше всего спрятать функции защиты от IDA и других дизассемблеров. PT>Зависит от того что вы хотите получить в результате — если только изменить сигнатуры, то будет достаточно метаморфа. Если защитить — то виртуализация.
M>>Пробовал найти обфускатор для obj/lib файла, а не исходного кода, но ничего не нашел. Если они существуют – поделитесь ссылками.
PT>Для obj/lib ИМХО ничего не найдете. Смотрите в сторону протекторов, работающих с готовыми EXE/DLL etc.
Большое спасибо, за ответ и ссылку. Главное чего хотелось бы, это что бы инструкцию по взлому нельзя было бы скачать из интернета, а в данный момент это возможно . Количество продаж продукта очень ограничено, и даже если кто-нибудь из пользователей взломает продукт, то взломанная версия скорее всего не появится в интернете. То есть покупателем придется ломать продукт по отдельности.
Re[2]: Как спрятать библиотечные функции защиты от IDA.
Здравствуйте, pva, Вы писали:
pva>Здравствуйте, marmysh.
M>>Разрабатываю приложение, которое в настоящий момент защищается при помощи USB ключей. Для работы с ключом используются набор документированных C функций, и библиотека (lib файл), которые поставляются производителем ключей. Передо мной была поставлена задача проверить надежность защиты. M>>Я создал файл сигнатур функций библиотек и, воспользовавшись IDA, обнаружил все библиотечные функции и места их вызова. После чего удалось активировать часть функций приложения без ключа. pva>В большинстве случаев это значи что интеграция защиты спроектирована и реализована криво.
Полностью с Вами согласен. Просто имею то, что осталось от предыдущих коллег, а сам защитой никогда не занимался и на лучшее пока не способен
M>>Подскажите, пожалуйста, как лучше всего спрятать функции защиты от IDA и других дизассемблеров. Пробовал найти обфускатор для obj/lib файла, а не исходного кода, но ничего не нашел. Если они существуют – поделитесь ссылками. pva>Как уже выше сказали, для lib/obj ничего нет. Обфусцируй готовый билд VMProtect'ом, например.
Большое спасибо за ссылку.
pva>Кстати, а что это за защита при помощи USB ключей? Может и обфусцировать будет бестолку, если это какой-нибудь хасп или гвардант, например.
В данный момент используются ключи Sentinel . На самом деле может быть обфускация и не сильно поможет. Но из найденных мною инструкций по взлому обфускация спасла бы хотя бы от простейшего способа.