1

Я создаю программу в python (2.7), и я хочу защитить ее от обратного проектирования.защитить код python от обратного проектирования

Я составил его с помощью cx_freeze (поставки базового SECURITY- запутывания и анти-отладки)

Как я могу добавить больше защиты, такие как запутывания, упаковки, анти-отладки, зашифровать код признать VM.

Я подумал, что, может быть, зашифровать в полезную нагрузку и расшифровать его во время выполнения, но я понятия не имею, как это сделать.

+1

У каждого замка на компьютере есть отверстие где-то, так зачем беспокоиться о том, чтобы реализовать вещь безопасности, которая будет дорогостоящей и в конечном итоге сломана позже. – user2740652

+0

Что именно вы пытаетесь достичь? – fuz

+2

И если вы хотите добиться какой-то обфускации, я рекомендую вам использовать язык программирования, который не должен знать имена символов во время выполнения (что делает Python). – fuz

ответ

4

Вообще говоря, для вас невозможно сделать вашу программу нерушимой, если есть достаточный мотив для хакеров.

Но все же вы можете сделать это труднее быть обратной инженерии, попробуйте использовать cython для компиляции ядра коды в pyd или so файлов.

+0

Зачем это усложнять? Используя cython, вы получаете машинный код, который, я бы сказал, упрощает *, нет? –

+2

Ну, я бы сказал, что относительно понятный код python относительно машинного кода. – Shane

+0

Это относится только к степени, когда дело доходит до скомпилированного байт-кода python, на который я надеюсь, что он распространяет вместо простого исходного кода. Смотрите, когда все это простой машинный код, я считаю, что это становится проще, потому что между ними нет cpython. Otoh python отладчики существуют также, но, скорее всего, их можно обмануть намного проще, чем отладчики машинного кода. –

3

Время разработки: Я был программистом на Python в течение длительного времени. Недавно я присоединился к компании как программист на Python. Думаю, мой менеджер был программистом на Java за десятилетие. Он дал мне проект и при первоначальном рассмотрении он спросил меня, что мы запутываем код? и я сказал: мы не делаем этого в Python. Он сказал, что мы делаем такие вещи на Java, и мы хотим, чтобы одно и то же было реализовано в python. В конце концов мне удалось обфускать код, просто удалив комментарии и пробелы и переименовав локальные переменные), но весь процесс отладки python перепутался.

Затем он спросил меня: можно ли использовать ProGuard? Я не знал, какого черта это было. После некоторого googling я сказал, что это для Java и не может использоваться в Python. Я также сказал, что мы строим развертывание на наших собственных серверах, поэтому нам не нужно действительно защищать код. Но он был неохотно и сказал: у нас есть набор процедур, и они должны соблюдаться перед развертыванием.

В конце концов я ушел с работы после года, устав от борьбы, чтобы убедить их, что Python - это не Java. У меня также не было никакого интереса заставить их думать по-другому в этот момент времени.

TLDR; Из-за природы Python с открытым исходным кодом нет доступных инструментов для обфускации или шифрования вашего кода. Я также не думаю, что это не проблема, если вы развертываете код на своем собственном сервере (предоставляя программное обеспечение как услугу). Но если вы действительно предоставляете продукт клиенту, есть некоторые инструменты, доступные для завершения вашего кода или байтового кода и предоставления его как исполняемого файла. Но всегда можно просмотреть свой код, если они захотят. Или вы выбираете какой-то другой язык, который обеспечивает лучшую защиту, если абсолютно необходимо защитить ваш код. Опять же имейте в виду, что всегда можно делать обратную разработку кода.

0

В настоящее время нет никакого способа сделать цифровой сейф.

Что вы МОЖЕТЕ сделать, так это затруднить ситуацию, когда это сложно сделать, но я признаю, что я не знаю конкретных способов достижения этой цели. Объем безопасности вашей программы на самом деле не является функцией защиты программ, а от психологии.

Да, психология.

Учитывая тот факт, что это гонка вооружений между крекеры и анти-крекеры, где оба непрерывно пытаются навредить друг другу, единственное, что можно сделать, это попытаться сделать это как можно более расстраивающим. Как мы это достигаем?

Будучи болью в тылу!

Каждый дополнительный шаг, который вы предпринимаете, чтобы убедиться, что ваш код трудно расшифровать, является хорошим.

Например, вы могли бы превратить свою программу в один скомпилированный блок байт-кода, который вы вызываете из своей программы. Используйте внешнюю библиотеку, чтобы зашифровать ее заранее и впоследствии расшифровать. Сделайте то же самое с дополнительными шагами для кодовых блоков функций. Или, функции в предварительно скомпилированных блоков готовы, но сломаны. Во время выполнения, используя byteplay, отредактируйте байт-код с байтами в зависимости от других байтов различных функций, который затем остановит вашу программу от работы при изменении.

Есть много способов возиться с головами людей, и, хотя я не могу сказать вам какие-либо конкретные способы для python, если вы думаете в контексте «Как быть сукой», вы найдете самые странные способы сделать это беспорядок для работы с вашим кодом.

Как ни странно, это намного проще в сборке, чем на python, поэтому, возможно, вам стоит изучить исполняемый код с помощью ctypes или что-то еще.

Призыв вашего внутреннего тролля!

+1

Вниз, почему? Когда-либо бросали вызов кому-то взломать ваш код? Я сделал. Это игра разума. –

+0

Возможно: «Сегодня невозможно сделать что-нибудь цифровое безопасное» является преувеличением? – zaph

+0

Вы считаете компьютеры, которые никогда не подключаются нигде, никогда не используйте USB, CD, DVD? Там есть программное обеспечение, нацеленное на * airgap * успешно! Марк Цукерберг закрывает камеру своего ПК. Ничего цифрового не безопасно. Конечно, вы можете поместить жесткий диск в сейф, но в чем смысл? :) –

Смежные вопросы