Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2015 00:11:37

Camelot12
Зарегистрирован: 2015-01-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

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

Офлайн

#2 Янв. 7, 2015 01:53:03

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

Есть простенькие обфускаторы, но они не панацея. Используй cython.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Янв. 7, 2015 13:17:49

Camelot12
Зарегистрирован: 2015-01-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

А можно как-то зашифровать содержимое? Ну например по методу цезаря.

Офлайн

#4 Янв. 7, 2015 18:35:42

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

Camelot12
А можно как-то зашифровать содержимое? Ну например по методу цезаря.

Python поддерживает кодировку ROT-13 https://ru.wikipedia.org/wiki/ROT13.

Меняем кодировку у строки print
>>> 'print'.decode('rot-13')
u'cevag'

Делаем файл с указанием кодировки:
#!/usr/bin/env python
# -*- coding: rot-13 -*-
# print 1
cevag 1

Выполняем - работает, печатает 1.


Офлайн

#5 Янв. 7, 2015 20:15:49

Camelot12
Зарегистрирован: 2015-01-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

Alen
Меняем кодировку у строки print
У меня нету в коде строки print.

Насколько я понимаю, то это:
>>> 'print'.decode('rot-13')
u'cevag'
нужно кинуть в мой код, а это:
#!/usr/bin/env python
# -*- coding: rot-13 -*-
# print 1
cevag 1
в отдельный файл?

Или как? Не могу понять…

Офлайн

#6 Янв. 7, 2015 20:39:35

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

Camelot12
Ну например по методу цезаря.
Шутить изволите?! При наличии компьютера в каждом доме шифр простой замены ничем не отличается от открытого текста, Тем более программный текст, где столько ключевых слов.



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

Офлайн

#7 Янв. 7, 2015 20:50:12

Camelot12
Зарегистрирован: 2015-01-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

Ребята, я лишь только учусь. Я просто хочу обезопасить свои работы от декомпиляции…

Офлайн

#8 Янв. 7, 2015 20:59:02

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

Camelot12
Ребята, я лишь только учусь. Я просто хочу обезопасить свои работы от декомпиляции…
Вот сейчас вообще непонятно. Авторы django, flask, sqlalchemy, pyramid открыто держат свой код, а вы “лишь только учусь” и уже “обезопасить свои работы от декомпиляции”. Уже готовлюсь декомпилировать ваш код, я обязательно должен ознакомится с шедеврами!



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

Офлайн

#9 Янв. 7, 2015 21:02:16

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Как усложнить декомпиляцию .pyc скрипта?

Camelot12
Насколько я понимаю, то это:
>>> 'print'.decode('rot-13')
u'cevag'
нужно кинуть в мой код,

Это пример как перекодировать из кодировки latin или utf-8 в кодировку rot-13.

Camelot12
а это:
#!/usr/bin/env python
# -*- coding: rot-13 -*-
# print 1
cevag 1
в отдельный файл?

Это пример как создать исполняемую программу на python в кодировке rot-13. В данном примере 2-я строчка указывает что файл в кодировке rot-13, a строчка cevag 1 эквивалентна строчке print 1 в обычном python-файле, но записанная в кодировке rot-13.

Camelot12
У меня нету в коде строки print.

Ну вы же понимаете что это всего лишь пример. Вот например другой пример, программа которая возвращает текущий каталог (аналог pwd).
#!/usr/bin/env python
# -*- coding: rot-13 -*-
vzcbeg bf
cevag bf.trgpjq()

Это полный эквивалент такой программы:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
print os.getcwd()

PooH
Шутить изволите?! При наличии компьютера в каждом доме шифр простой замены ничем не отличается от открытого текста, Тем более программный текст, где столько ключевых слов.

Воспринимаете это просто как забаву.

Camelot12
Ребята, я лишь только учусь. Я просто хочу обезопасить свои работы от декомпиляции…

Кстати этот метод (с rot-13) от декомпиляции никак не спасет, потому как восстанавливается код из байт-кода, который имеет собственное представление о данных и кодировках.
Это всего лишь забавный факт, который можно использовать разве что для подшучивания над коллегами 1 апреля. Если вам необходимо действительно закрыть код, то самый лучший способ для этого, как вам правильно заметили, – компиляция. Для этого можно использовать пакеты Cython или Nuitka.

Отредактировано Alen (Янв. 7, 2015 21:41:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version