Работает PjOrion - редактирование, компиляция, декомпиляция, обфускация модов (Версия: 1.3.5 )

Статус
В этой теме нельзя размещать новые ответы.

ReallyFire

 
Команда форума
Administrator
Регистрация
15 Авг 2012
Сообщения
1,686
Решения
3
Репутация
1,321
Спасибо
896
Монет
5,143
Project "ORION"

автор:StranikS_Scan



Версия: 1.3.5 | Дата: 23.08.2017​

Описание:
  • Перед вами универсальный инструмент для компиляции, декомпиляции и обфускации python-модов. Программа использует технологию Python4Delphi и взаимодействует с python-движком через dll-библиотеку. Исходники модулей питона запакованы в zip-архив, который идёт вместе с программой. Для полноценной автономной работы Ориона достаточно иметь dll-библиотеку и zip-архив с модулями питона. При этом вы можете подключиться и к любому python-движку, который уже установлен на вашем компьютере.




Ограничения:

  • ОС Windows XP/Vista/7/8/10
  • поддерживаются Python 2.3-3.4
  • dll-файлы только версии x86
  • тестировалось на Python 2.6.6, 2.7.10, 3.4.2 и их более ранних версиях
  • запуск только из каталогов, не содержащих в путях буквы русского алфавита

Особенности:
  • Реализован интерфейс близкий к классическим средам программирования:
  • команды: выполнить редактируемый скрипт (Exec script), выполнить скрипт с параметрами (Execute script), скомпилировать скрипт (Compile script), выполнить скрипт из отдельного файла с параметрами (Parameters -> Execute) и др.
  • компиляция путем простого сохранения загруженного скрипта в файл pyc-формата (Save as...) и компиляция отдельных файлов (Compile py-file...), групповая компиляция всех файлов в указанной папке (Compile py-folder...)
  • декомпиляция скриптов при открытии pyc-файлов, декомпиляция отдельных файлов (Decompile pyc-file...) и групповая декомпиляция всех файлов в заданной папке (Decompile pyc-folder...), определение версии компилятора по заголовку файла и др.
  • обработка питон-кода в редакторе различными встроенными функциями (меню Script)
  • и др.
  • Расширенные возможности ввода:
  • собственный синтаксис Ориона (@!abc -> print abc; @!!module -> import module)
  • автоматическое удаление префиксов строк ввода/вывода ">>> " и "<<< " при выполнении скрипта
  • различные вспомогательные функции: вывод и добавление пути в окружение <sys.path>, вставка имён файлов (Insert file name), вставка текста из другого файла (Insert text from a file), переход на новую строку (Shift+Enter) и др.
  • окно экспресс-ввода для выполнения отдельных скриптов/команд в текущем сеансе (Express Script)
  • выпадающие списки атрибутов и свойств модулей, классов, объектов, элементов через меню и через символ ".", при этом объект должен быть предварительно идентифицирован средой
  • и др.
  • Формат данных:
  • определение формата py-файла при загрузке по метке в первой строке и преамбуле в тексте
  • в самом редакторе данные отображаются только в формате ANSI
  • обмен данными с компилятором всегда идёт в формате ANSI для Python 2.X и в формате UTF-8 для Python 3.X
  • имеется возможность вставки метки # -*- coding: -*- с описанием формата в начало скрипта через выпадающее меню в строке состояния
  • Декомпиляторы:
  • на данный момент Орион поддерживает 4 декомпилятора: Uncompile2, Decompyle++, Fupy и pyREtic
  • все декомпиляторы "как они есть" вынесены в отдельную библиотеку dcpack.zip
  • любой желающий может изменить, исправить, отредактировать, заменить исходники декомпиляторов в dcpack.zip, и даже сделать свой вариант библиотеки dcpack.zip
  • Работа с запущенным WOT-клиентом напрямую:
  • разработан специальный пакет WOT-Transmission (wottransmission.zip) для обмена данными с клиентом игры через файловые буферы
  • реализованы функции кон****ного обмена данными со средой клиента, импорта, перезагрузки, удаления модулей и др.
  • Обфускация скриптов и защита модов:
  • имеется сервис для обфускации имён пользовательских переменных, классов и процедур
  • обфускатор для модификации и запутывания байт-кода при компиляции py-файлов
  • протектор для pyc-файлов, препятствующий анализу и дизассемблированию кода с целью его реверса
  • также программа дополнена модифицированным дизассемблером dispack.zip на основе стандартного с выводом информации как в отдельный файл так и в самом редакторе в удобной форме

Как защитить свой код:





https://www.virustotal.com/ru/file/...e9a1ec373c8babcc29c307ce/analysis/1481997775/
Не следует!
  • Применять протектор к необфусцированному скрипту, т.к. в этом случае код может быть декомпилирован непосредственно из среды питона
  • Ограничиваться только обфускацией байт-кода скрипта без наложения протектора, т.к. в таком случае байт-код легко доступен для анализа и модификации с последующей декомпиляцией
  • Применять протектор несколько раз к одному скрипту, т.к. на практике это не увеличивает стойкость защиты, но может нарушить работу скрипта
  • Включать опцию "Lock attributes review and double import" если ваш скрипт подменяет реальный модуль клиента игры или у вас несколько модулей и они импортируют друг друга, так как атрибуты модулей из вне доступны не будут
Внимание! Если вы компилируете скрипт с обфускацией, то ни в коем случае предварительно не сжимайте его в строку командой "Move script to ZipBase64-box", так как байт-код вашего скрипта не будет обфусцирован и его можно легко извлечь!

История версий:








Декомпилированные питон-файлы WOT-клиента

Архивы:
0.9.10_Decompile_WOT.zip 2,81 Мб
0.9.9_Decompile_WOT.zip 2,79 Мб

Для работы с файлами:
  • Скачайте архив и извлеките содержимое в любую папку.
  • Откройте Notepad++ и перенесите в него папку scripts\client, затем дождитесь когда он загрузит файлы.
  • Для поиска по всем файлам жмём CTRL+F, вводим строку поиска и жмём "Найти всё во всех Открытых Документах", затем наслаждаемся результатом.
  • Чтобы закрыть все файлы в Notepad++ и при этом он не пытался их все открыть заново при следующем запуске, закрывайте файлы командой из главного меню "Файл - Закрыть все"




FAQ по PjOrion

Общие вопросы:
1. Какие файлы входят в состав Ориона и какого их назначение?
  • PjOrion.exe - оконная графическая оболочка, именуемая далее редактором или терминалом, она позволяет редактировать py-скрипты Питона, выполнять их обработку, компиляцию, обфускацию, затем декомпилировать и дизассемблировать pyc-файлы, а также взаимодействовать с клиентом игры
  • pythonXX.dll - библиотека Питона XX-версии для x86 систем, необходима для эмуляции исполняемой среды Питона, при этом подключение к библиотеке осуществляется через редактор
  • pythonXX.zip - пакет основных скриптов из папки Lib из сборки Питона XX-версии, необходим для работы со стандартными функциями Питона через терминал
  • dcpack.zip - пакет со скриптами и файлами декомпиляторов, можно свободно редактировать и дорабатывать
  • dispack.zip - пакет со скриптами дизассемблера, используемого Орионом, можно свободно редактировать и дорабатывать
  • wottransmission.zip - пакет со скриптами и файлами трансмиттера, обеспечивающего обмен данными с клиентом игры через редактор, можно свободно редактировать и дорабатывать
  • PjOrion.ini - файл с настройками программы, автоматически сохраняется при выходе из программы и автоматически загружается при её запуске

2. Минимальные требования для работы с Орионом
  • ОС Windows XP/Vista/7/8/10
  • графическая оболочка PjOrion.exe
  • Python 2.3-3.4 dll-файл для x86 систем
  • каталог программы не должен содержать в путях буквы русского алфавита

3. Как вернуть все настройки программы по умолчанию?
Для этого достаточно перед запуском программы удалить файл PjOrion.ini.
Среда Питона:

  1. Как Орион взаимодействует с Питоном?

  1. Для эмуляции среды Питона используется pythonXX.dll библиотека. Она поставляется вместе с Питоном и входит в состав его x86 дистрибутива. Все дистрибутивы выкладываются разработчиками Питона здесь. Точно такой же dll-файл идёт в комплекте и с Орионом. Терминал посредством технологии Python4Delphi импортирует функции библиотеки, а затем использует их для эмуляции сеанса, передачи команд и получения результатов их выполнения.



    [*]Как запустить на терминале нужную версию Питона?

    Для этого необходимо подключиться к соответствующей версии dll-библиотеки. От версии библиотеки зависит и версия среды. При первом запуске Ориона он по умолчанию пытается установить связь с python27.dll, лежащей в папке вместе с ним, и инициализировать работу среды. В настройках Главное меню - Terminal - Settings - Paths вы можете самостоятельно указать к какой именно библиотеке ему следует подключаться. При этом можно указать как файл, лежащий в папке с Орионом, так и файл в папке оригинального Питона, например C:\PythonXX\


  • 3. Как перезапустить сеанс работы с Питоном?
  • Иногда необходимо завершить текущий сеанс и начать новый, т.е. сделать рестарт среды, не перезапуская Орион. Для этого в главном меню есть функция Terminal - Restart (Alt+R).
  • >>> ================================ RESTART ================================
  • 4. Как выполнить скрипты при загрузке Ориона?
  • Если при подключении Ориона к dll-библиотеке необходимо каждый раз выполнять какой-то набор скриптов или команд, то для этого можно воспользоваться окном "Execute after connecting" в настройках программы Главное меню - Terminal - Settings. Например, запись в этом окне:
PHP:
print ('Hello user!')
приведет к вот такому результату:
5. Как узнать текущие пути в окружении среды?
Окружение среды - это папки и пути на диске, которые доступны в Питоне. Вывести список путей можно, выполнив в редакторе код:
PHP:
import sys
print sys.path
6. Как добавить папку в список путей окружения среды?
Это довольно просто, если воспользоваться соответствующей командой в главном меню Terminal - Add folder to <sys.path>... Однако следует обратить внимание на то, что при перезагрузке среды или при перезапуске Ориона список путей вернется к первоначальному. Если вы хотите чтобы ваш путь добавлялся в окружение каждый раз при инициализации среды, то в окне Terminal - Settings в поле "Execute after connecting" следует прописать соответствующий скрипт, например такой:
PHP:
import sys
sys.path.insert(0, 'C:\\Developer\\MyScripts')

7. Какие модули импортированы в среду?
Список всех импортирован модулей храниться в системной переменной modules и может быть получен так:
PHP:
import sys
print sys.modules
В Орионе вывести этот же список в более наглядной форме можно командой Terminal - Print <sys.modules> (Alt+M).

Код:
<<< traceback:                    	<module 'traceback' from 'C:\Program Files (x86)\Borland\Delphi6\Projects\PjOrion\python27.zip\traceback.pyc'>
<<< copy_reg:                     	<module 'copy_reg' from 'C:\Program Files (x86)\Borland\Delphi6\Projects\PjOrion\python27.zip\copy_reg.pyc'>
<<< sre_compile:                  	<module 'sre_compile' from 'C:\Program Files (x86)\Borland\Delphi6\Projects\PjOrion\python27.zip\sre_compile.pyc'>
<<< imp:                          	<module 'imp' (built-in)>
...
8. Компилятор не нашел стандартную функцию, что делать?
Если вы используете dll-библиотеку и pythonXX.zip архив из папки с Орионом, то такая ситуация вполне может возникнуть. В zip-архиве нет стандартных pyd-библиотек из папки C:\PythonXX\DDLs\ оригинального Питона, так как обращения к ним из архива в Питоне не возможно. Поэтому использование модулей из таких библиотек по умолчанию будет не доступно. Например, выполнение вот такого кода:
PHP:
import urllib
приведет к ошибке:
Код:
<<< Traceback (most recent call last):
<<<   File "<string>", line 1, in <module>
<<<   File "", line 26, in <module>
<<<   File "", line 47, in <module>
<<< ImportError: No module named _socket
Проблема решается легко одним из способов.
Первый способ:
  • копируем папку DDLs с pyd-файлами из оригинального Питона в папку с Орионом
  • перезапускаем программу или делаем рестарт среды Terminal - Restart (Alt+R)
Второй способ:
  • подключаем терминал к dll-библиотеке в папке с оригинальным Питоном C:\PythonXX\pythonXX.dll, после чего весь его функционал станет доступен Ориону. Однако в этом случае у вас должна стоят x86 версия Питона
Ввод/Вывод
1. Режимы вывода строк и значений в Орионе
Несмотря на свои возможности Орион умеет отображать только печатаемые символы из ANSI, UTF, OEM и др. кодировок. Остальные символы, входящие в состав юникодовой таблицы ему не доступны. Однако любой символ кодировочной таблицы легко может быть представлен своим порядковым номером или кодом. Для вывода символов посредством их замещения на коды в программе реализовано несколько режимов вывода строк.
  • Chars - символы не замещаются кодами, редактор пытается отобразить все символы согласно локальной ANSI кодировке
  • Chars, Hex -
Переключение между режима осуществляется в строке состояния:


2. Как вывести непечатаемые символы в виде кодов?

3. Вместо кириллицы выводятся коды, что делать?

4. Как задать формат py-файла?
Редактирование скриптов:
1. Подсветка кода
В редакторе реализована синтаксическая подсветка кода Питона, отдельно для версий 2.X и 3.X. Подсветка сделана за счет использования компонентов TSynEditor и TSynUniSyn из пакета SynEditStudio 5.8Fix3 под Delphi.

2. Синтаксис Ориона
Для удобства работы кон****ным способом в Орионе добавлены сокращения для вызова некоторых функций и команд.
В Питоне 2.X:
  • @!abc аналогично print abc
  • @!!module тоже что и import module
В Питоне 3.X:
  • @!(abc) аналогично print(abc)
  • @!!module тоже что и import module
Замена сокращений в коде происходит автоматически при выполнении скрипта. Обратите внимание, в оригинальном Питоне такие сокращения отсутствуют и стандартному движку они не известны!

3. Список атрибутов
В Орионе есть возможность вызова и просмотра списка атрибутов у объектов, модулей, переменных, экземпляров классов и т.д. Для вызова списка необходимо чтобы объект был инициализирован в среде, после чего вызвать список можно прописав точку "." после его имени в редакторе. Если необходимо вывести не только публичные атрибуты, а также и приватные, то следует воспользоваться пунктом в выпадающем меню мыши Show attributes (Ctrl+Shift+Space).
При работе с клиентом игры через WOT-Transmission атрибуты для объектов в среде клиента можно получить из трансмиттера, для чего достаточно переключить в выпадающем меню мыши источник атрибутов Select the attributes source с Orion на WOT.

4. Экспресс-редактор
Для удобства работы со средой в Орионе помимо основного редактора также сделан и дополнительный, так называемый, экспресс-редактор. Для его вызова достаточно нажать F10 или зайти в главное меню Run - Express script... (F10). С его помощью можно выполнять скрипты, не закрывая основной файл, копировать и хранить как во временном буфере отдельные отрывки кода, работать со средой в кон****ном режиме. Для временного сокрытия экспресс-редактора используйте клавишу ESC или кнопку Hide(ESC).

5. Ставим отступы
Как и в оригинальном Питоне в редакторе Ориона есть команды для работы с отступами:
  • при переводе каретки клавишей ENTER, после ввода символа ":", в новую строку отступы вставляются автоматически
  • для быстрой вставки и удаления отступов перед строкой или перед блоком текста, достаточно выделить эту строку или целый блок и воспользоваться командами Increase Indent (Ctrl+]) и Decrease Indent (Ctrl+[)
  • также юзверу доступны и альтернативные комбинации клавиш Tab и Shift+Tab
Орион в качестве отступов использует только пробелы, символы табуляции не используются. Кроме того, нажатие клавиши Tab приводит к вставке не символа табуляции, а пробелов. Количество пробелов в отступе по умолчанию (обычно 4) можно задать в настройках Главное меню - Terminal - Settings - Indentation Width.

6. Перенос на новую строку

Для переноса на новую строку в Питоне принято использовать левый слэш "\". Например:
HTML:
message = 'Для переноса на новую строку в Питоне принято \
           использовать левый слэш.'
Вставить такой слэш и перейти на новую строчку в редакторе по быстрому можно командой Continue on a new line (Shift+ENTER).

7. Вставка имени файла
Так как в Питоне имена файлов с путями должны быть записаны с двойными левыми слэшами "\\" (или одним, но правым "/"), то для упрощения этой задачи в Орионе есть функция Script - Insert - File name as text... Она вставит в текст полный путь к выбранному файлу, например вот так:
HTML:
'C:\\Program Files (x86)\\Borland\\Delphi6\\Projects\\PjOrion\\Test\\test1.py'
8. Вставка кода из файла
Если вам необходимо вставить с соблюдением отступа код из какого-либо файла, то для этого можно воспользоваться функцией Script - Insert - Text from a file...

9. Конвертирование текста из ANSI в UTF-8 и наоборот непосредственно в редакторе
Обычно такая необходимость появляется при работе с кириллицей, когда вы либо декомпилируете байт-код, либо хотите вставить строку на кириллице в текст скрипта, не меняя формат py-файла в целом. Для таких преобразований предусмотрены функции Script - Convert - Selected UTF-8 to ANSI (Alt+A) и Selected ANSI to UTF-8 (Alt+U). Чтобы ими воспользоваться достаточно предварительно выделить нужный текст в редакторе, после чего вызвать нужную функцию. Например, декодируем строку из UTF-8:
HTML:
message = 'Привет!'
в читабельный ANSI:
HTML:
message = 'Привет!'
10. Замена текста на hex-коды и наоборот
Довольно часто возникает задача конвертирования символов в последовательность шестнадцатеричных кодов (hex-кодов) и наоборот. Например, получить из ANSI строки:
HTML:
message = 'Привет!'
строку в UTF-8:
HTML:
message = 'Привет!'
а затем представить её hex-кодами:
HTML:
message = '\xD0\x9F\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82\x21'
В этом вам помогут функции Script - Convert - Selected Chars to Hex (Alt+H) и Selected Hex to Chars (Alt+C). В обоих случаях предварительно следует выделить исходный текст в редакторе.

11. Преобразование текста в Base64-кодировку и обратно
Хотите сохранить в скрипте текст из непечатаемыми символов, символов из другого языка или просто закодировать сообщение? Пожалуйста, Base64-кодировка содержит только видимые символы из ASCII-таблицы, что делает их всегда читабельными и печатаемыми. Для кодирования строки в редакторе достаточно выделить текст и воспользоваться функциями Script - Convert - Selected String to Base64 (Alt+B) и Selected Base64 to String (Alt+S). Например, строка:
HTML:
message = '\xD0\x9F\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82\x21'
легко может быть закодирована как:
HTML:
message = 'XHhEMFx4OUZceEQxXHg4MFx4RDBceEI4XHhEMFx4QjJceEQwXHhCNVx4RDFceDgyXHgyMQ=='
print message.decode('base64')

<<< '\xD0\x9F\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82\x21'
Компиляция скриптов:
1. Как получить pyc-файл?
В Орионе есть несколько способов скомпилировать скрипт в pyc-файл. Все они максимально упрощают этот процесс и делают его интуитивно понятым для пользователя.
  • Самый быстрый способ это воспользоваться функцией в главном меню Run - Compile script (Ctrl+F9). В этом случае редактор потребует сохранить загруженный скрипт в py-файл, после чего создаст одноименный pyc-файл в той же папки, но уже с байт-кодом
  • Если вы не хотите сохранять исходный скрипт на диск, то вы можете создать pyc-файл через функцию Terminal - Save as ... В диалоговом окне потребуется выбрать формат выходного файла. В данном случае *.pyc
  • Наконец скомпилировать py-файл можно и не открывая его в редакторе. Для этого есть функция Run - Compile py-file...
Обратите внимание! Версия pyc-файла на выходе определяется версией Питона, к которому подключен ваш Орион в данный момент.

2. Как скомпилировать за раз несколько скриптов в папке?
Для пакетной компиляции скриптов в папке и её подпапках следует использовать функцию Run - Compile py-folder... Скомпилированные файлы сохраняются в тех же папках, в которых лежат исходные скрипты. Если необходимо исходные py-файлы удалить после компиляции достаточно поставить галочку в главном меню Run - Delete py-files after compile.
Выполнение скриптов:
1. Какие способы выполнения скриптов доступны в Орионе?
Орион позволяет исполнять в среде Питона как скрипты, так и скомпилированные pyc-файлы. Если вы хотите выполнить pyc-файл, то для этого необходимо воспользоваться окном запуска скриптов с параметрами Run - Parameters... и кнопкой Execute. В свою очередь py-скрипты могут быть выполнены гораздо большим числом способов:
  • кон****ным способом через функции главного меню Run - Exec script (F5) и Run - Execute script (F9)
  • через окно запуска скриптов с параметрами Run - Parameters..., используя кнопку Execute
  • путем импорта скрипта в качестве модуля через Run - Import/Reload script (F6) или Run - Import/Reload script from file...
2. Как выполнить скрипт в среде кон****ным способом?
Кон****ное выполнение скриптов - самый простой и часто используемый способ работы со средой Питона. Если вы написали в редакторе код или открыли в редакторе py-файл, то для его выполнения в среде достаточно воспользоваться функцией Run - Exec script (F5). Например, записываем в редакторе код:
HTML:
a = 123
выполняем его командой F5. Затем переписываем на
HTML:
print a
и выполняем через F5 уже новый код. В результате получаем:
HTML:
<<< 123
Как видите, выполнение первого кода привело к инициализации в текущем сеансе среды переменной "a" c последующей записью в неё значения 123. В результате этого исполнение второго кода привело к выводу на экран содержимого этой переменной. Для удаления переменной "a" из памяти среды, достаточно выполнить вот такой код
HTML:
del a
Если вы хотите выполнить код из экспресс редактора, то для этого в его окне предусмотрена кнопка Exec (F5).

3. Запуск скриптов и pyc-файлом с передачей входных параметров
Для выполнения скрипта или байт-кода в среде не обязательно открывать файл в редакторе. Сделать это можно и удалённо. Для чего предусмотрено окно запуска скриптов с параметрами Run - Parameters...


Здесь:
  • File to be executed - pyc- или py-файл, который будет выполнен
  • Parameters - список входных параметров
  • <__name__> - значение, передаваемое в атрибут __name__
  • Restart сonnection - опция автоматического перезапуска среды перед выполнением скрипта
Если входных параметров у скрипта нет, то достаточно указать только путь к исходному файлу, а затем нажать Execute. При необходимости ввода входных параметров их следует перечислить в строке Parameters, разделяя пробелом. В случае передачи в качестве параметра текстовой строки с пробелами её следует заключать в двойные кавычки "...".

Как известно в Питоне список входных параметров при выполнении скрипта передается в системную переменную sys.argv в виде строкового массива. При этом нулевая ячейка массива обычно указывает на полное имя исполняемого файла. Данное правило реализовано и в Орионе.

Рассмотрим пример скрипта, выводящего по порядку список входных параметров:
HTML:
import sys
for value in sys.argv:
    print value
Cохраним скрипт как Example.py или Example.pyc, затем в окне Parameters укажем путь к файлу и зададим строку с двумя параметрами, например:
HTML:
Parameters
   "Hello, users!" "It's parameter is the number two"
После чего выполним скрипт, нажав на Execute. Результатом выполнения будет:
HTML:
<<< C:\Program Files (x86)\Borland\Delphi6\Projects\PjOrion\FAQ\Example.pyc
<<< Hello, users!
<<< It's parameter is the number two
>>> PjOrion: External script execution completed!
Обратите внимание, что выполнить с параметрами можно также и скрипт, уже загруженный в редактор. Для этого в главном меню предусмотрена команда Run - Execute script (F9). При выполнении скрипта через эту команду в среду Питона предварительно передается список параметров из окна Parameters и полный путь к файлу скрипта.

По мимо этого пользователь предварительно может задать значение и для атрибута __name__. Данный атрибут обычно инициализируется непосредственно при выполнении или импорте скрипта и указывает на его статус. Если скрипт запущен как самостоятельная программа, то атрибут всегда возвращает значение "__main__", если скрипт импортирован в качестве модуля, то тогда возвращается его имя в иерархии модулей. Задавая параметр <__name__> в Орионе самостоятельно, пользователь может имитировать импорт текущего скрипта. Это может быть полезно, например, при его отладке.

4. Импортируем скрипт как модуль
Импорт модулей в Орионе по сути ни чем не отличается от импорта в оригинальном редакторе Питона. Если у вас на диске есть py- или pyc-файл, то вы можете импортировать его в среду Питона в любой момент. Для этого:
Добавляем папку со скриптом в пути окружения среды Питона (Главное меню - Terminal - Add folder to <sys.path>...)
Записываем в редакторе код
HTML:
import <Имя_скрипта>
и выполняем его командой F5
В случае с Орионом добиться того же можно и более простым путем, если воспользоваться функцией импорта внешних файлов Run - Import/Reload script of file... Для импорта всех модулей из текущей папки предусмотрена функция Run - Import the all scripts from folder...
HTML:
<<< Importing...
<<< C:\Program Files (x86)\Borland\Delphi6\Projects\PjOrion\FAQ\Example.py
<<< Module 'Example' imported!
Наконец импортировать в Орионе можно не только отдельные файлы, но и непосредственно редактируемый скрипт, т.е. открытый в редакторе. Для этого предусмотрена команда Run - Import/Reload script (F6).

5. Перезагрузка модулей в среде
Будучи один раз импортированным в рабочую среду Питона модуль остается в её памяти, и для обращения к его процедурам и классам достаточно получить только соответствующую ссылку. Такой подход логичен с точки зрения экономии ресурсов, но создает проблему для тех кто пытается перезагрузить ранее импортированный модуль.

Суть проблемы в том, что созданный в памяти модуль может вызываться и использоваться многократно в других модулях, подпрограммах и во всех возможных уголках работающей среды. В тоже время перезагрузка модуля стандартной функцией reload() не приводит к уничтожению или замене новым старого кода в памяти Питона. Среда выделит новую память под модуль, не смотря на то, что его имя совпадает со старым. А наличие ссылок на старый модуль не даст сборщику мусора удалить его из памяти среды. Как результат старый экземпляр модуля так и останется в закоулках памяти и другие модули и подпрограммы, использовавшие его ранее, продолжат ссылаться на него.

Очевидно, что решение данной проблемы заключается в поиске всех ссылок на старую версию модуля с последующим их удалением или подменой на новую ссылку. Именно такой подход и реализован в Орионе в функциях Run - Import/Reload script (F6), Run - Import/Reload script of file... и Run - Selected <module> - Delete <module> and references it.

Обратите внимание для работы указанных функций необходим пакет wottransmission.zip. При его отсутствии функции работать не будут.

6. Как узнать, используется ли загруженный модуль другими модулями?
В большинстве случаев узнать об этом можно через поиск внешних ссылок, ссылающихся на интересующий вас модуль. Рассмотрим это на примере модуля math. Импортируем данный модуль и выясним сколько ссылок на него зарегистрировано сейчас в системе:
HTML:
import math, sys
print sys.getrefcount(math)

<<< 3
Полученная цифра 3 включает в себя:
  • Собственно сам модуль math
  • Затем ссылку на него в глобальном списке модулей системы
HTML:
import sys
print sys.modules

<<< ..., math: <module 'math' (built-in)>, ...
  • И временную ссылку, передаваемую в функцию getrefcount()
Следовательно, сейчас нет ни одной внешней ссылки из других модулей, ссылающейся на модуль math. Исправим это, написав скрипт, использующий каким-либо образом математический модуль. Например такой:
HTML:
import math
print math.pi
Сохраним его как Example.py и импортируем командой F6, а затем повторно выведем число ссылок на модуль math. В результате получим:
HTML:
<<< 4
Таким образом, любую ссылку начиная с четвёртой следует считать внешней ссылкой. В данном случае таковой является обращение math.pi.

Для упрощения вывода количества ссылок на модули в Орионе реализована функция Run - Selected <module> - Print <sys.getrefcount>. Чтобы ею воспользоваться потребуется предварительно выделить имя модуля или в верхнем окне Ориона или непосредственно в редакторе. Ниже показан результат работы функции для разных модулей:
HTML:
<<< Count of references to 'math': 4 (external: 1)

import Example

<<< Count of references to 'Example': 3 (external: 0)

import sys

<<< Count of references to 'sys': 17 (external: 14)
7. Как правильно перезагрузить модуль?
Для перезагрузки модуля в Орионе не требуется каких-либо отдельных действий. Достаточно импортировать модуль еще раз встроенными функциями Run - Import/Reload script (F6), Run - Import/Reload script of file... Если обнаружиться что модуль с таким именем уже был импортирован, то будет выполнен поиск всех ссылок на элементы/объекты старого модуля с последующей их заменой на новые.

8. Удаляем модуль из системы и все ссылки на него
Для полноценного удаления импортированного модуля предусмотрена функция Run - Selected <module> - Delete <module> and references it. Данная операция удаляет модуль из окружения среды и пытается затереть все ссылки на него в других модулях. Если какую-либо ссылку удалить не удастся, то программа сообщит вам об этом. Перед вызовом команды следует предварительно выделить имя модуля или в верхнем окне Ориона или непосредственно в редакторе.
HTML:
<<< Removal... 14 external references are detected!
<<< del traceback.sys
<<< del sre_compile.sys
...
<<< del os.sys
<<< Module 'sys' removed!
Обработка скриптов:
1. Как минимизировать исходный код?
2. Что такое упаковка исходного кода?
3. Как упаковать код в ZipBase64-box?
4. Как распаковать ZipBase64-box?
Защита модов:
1. Общие принципы защиты скриптов
Основная задача защиты модов - это препятствовать получению первоначального или исходного питон-кода скрипта сторонними юзверами без разрешения автора. Так как скопилроанный код в питоне может юыьб
Аргументы командной строки:
Горячие клавиши и их комбинации:

Видео:

спасибоспасибо
 
Последнее редактирование:
Ничего не понял но спасибо жамкнул за труды. Для меня это глухая тайга)
 
Автор присутствует у нас на форуме!
Так-что благодарите его!
StranikS
 
рекомендую :)
 
Очень полезная тема спасибо Stealthz!
 
Огромное спасибо.
 
Чтобы мне понять как пользоваться этой прогой какие скрипты туда записывать редактировать и.т.д мне надо будет мозгами дотронуться до кости черепа :) как то так )
 
Тест версии Орион 1.3.1
--------------------------------
Автор: StranikS_Scan
  • В этой версии еще не все исправлено/добавлено, кое-что осталось в кттс, что-то писалось юзверами в данной теме, и будет сделано к релизу, однако так как много всяких исправлений и добавлений, то выкладываю промежуточную версию:

PjOrion 1.3.1 TEST with P2.7.zip 4,96 Мб
P2.6 and P3.4 for PjOrion.zip 7,63 Мб
DLLs.zip 9,11 Мб

Изменения:
  1. Устранена проблема с переполнением аргументов в jrel- и jabs-инструкциях при обфускации скриптов больших размеров, обфускатор обучен правильной работе с EXTENDED_ARG
  2. Внесены улучшения в протектор:
  3. Добавлено шифрование целых чисел в co_consts
  4. Оптимизирован код наложения протектора, а также код шифрования, что позволило многократно снизить время протекции и время запуска скриптов больших размеров с EXE-инжектором и без
  5. Добавлен внешний шифрующий слой с zip-сжатием и компактным загрузчиком, уменьшающий размер модуля и препятствующий экспресс-анализу и расшифровке кода протектора
  6. В механизме File Assoсiation добавил удаление дублирующих ключей в HKCU, мешающих ассоциации файлов с программой
  7. Если файлы *.info.txt и *.dis.txt уже существуют, то создаются файлы *.info1.txt и *.dis1.txt и т.д.
  8. Исправил ошибку в определении пути к файлу при запуске программы из командной строки CMD
  9. Исправил ошибку при исполнении py-файлов в UTF-8 формате из контекстного меню командной Run
  10. Проверил и исправил ошибки в работе некоторых функций и команд в Орионе под Python 3.x
  11. Добавил возможность компиляции файлов с точками в именах, зачем не спрашивайте, так как сам не знаю
  12. Команда Save теперь не затирает Undo- и Redo-списки операций
  13. Зациклил поиск в редакторе, а также добавил вызов поиска и замены в экспресс-окне по горячим клавишам
  14. Улучшил работу алгоритма, формирующего список атрибутов в выпадающем меню после точки
  15. В синтаксис Ориона добавил операцию @!(abc), приводящую к вызову pprint(abc), данный вариант структурирует списки и словари при выводе
  16. На вкладке Settings - Basic setup добавил опцию "Ignore <Exit> in Python"
  17. В функции Minimize script улучшил распознавание docstrings, также исправил ошибки парсинга строковых констант
  18. В обфускаторе имен Script - Obfuscate - Variables добавлена обфускация аргумента "self" в функциях
  19. Добавлен обфускатор строковых констант Script - Obfuscate - Strings...
  20. Добавлен обфускатор кода Script - Obfuscate - Structure..., пока что умеет заменять цепочки атрибутов вида a.b.c... на вложенные вызовы getattr
  21. В WOT-Transmission исправил ошибку при добавлении путей в sys.path и добавил компиляцию скриптов налету перед exec
  22. Обновил python34.dll и архив python34.zip до Python 3.4.3
  23. В WOT-Transmission я в файле \wottransmission\wottransmission\scripts\common\debug_utils.py выставил по умолчанию RELEASE = 5, так как расширенный лог тем кому он не нужен - шибко мешает. Я еще не сделал переключалку в самом Орионе, поэтому кому нужен расширенный лог сами залезьте в файл трансмиттера и замените 5 на 1.
 
Последнее редактирование:
Обновлена тест версия!

Тест версии Орион 1.3.1
--------------------------------
Автор: StranikS_Scan
  • В этой версии еще не все исправлено/добавлено, кое-что осталось в кттс, что-то писалось юзверами в данной теме, и будет сделано к релизу, однако так как много всяких исправлений и добавлений, то выкладываю промежуточную версию:

PjOrion 1.3.1 TEST with P2.7.zip 4,96 Мб
P2.6 and P3.4 for PjOrion.zip 7,63 Мб
DLLs.zip 9,11 Мб
Изменения:
  1. Устранена проблема с переполнением аргументов в jrel- и jabs-инструкциях при обфускации скриптов больших размеров, обфускатор обучен правильной работе с EXTENDED_ARG
    • Внесены улучшения в протектор:
    • Добавлено шифрование целых чисел в co_consts
    • Оптимизирован код наложения протектора, а также код шифрования, что позволило многократно снизить время протекции и время запуска скриптов больших размеров с EXE-инжектором и без
  2. Добавлен внешний шифрующий слой с zip-сжатием и компактным загрузчиком, уменьшающий размер модуля и препятствующий экспресс-анализу и расшифровке кода протектора
  3. В механизме File Assoсiation добавил удаление дублирующих ключей в HKCU, мешающих ассоциации файлов с программой
  4. Если файлы *.info.txt и *.dis.txt уже существуют, то создаются файлы *.info1.txt и *.dis1.txt и т.д.
  5. Исправил ошибку в определении пути к файлу при запуске программы из командной строки CMD
  6. Исправил ошибку при исполнении py-файлов в UTF-8 формате из контекстного меню командной Run
  7. Проверил и исправил ошибки в работе некоторых функций и команд в Орионе под Python 3.x
  8. Добавил возможность компиляции файлов с точками в именах, зачем не спрашивайте, так как сам не знаю
  9. Команда Save теперь не затирает Undo- и Redo-списки операций
  10. Зациклил поиск в редакторе, а также добавил вызов поиска и замены в экспресс-окне по горячим клавишам
  11. Улучшил работу алгоритма, формирующего список атрибутов в выпадающем меню после точки
  12. В синтаксис Ориона добавил операцию @!(abc), приводящую к вызову pprint(abc), данный вариант структурирует списки и словари при выводе
  13. На вкладке Settings - Basic setup добавил опцию "Ignore <Exit> in Python"
  14. В функции Minimize script улучшил распознавание docstrings, также исправил ошибки парсинга строковых констант
  15. В обфускаторе имен Script - Obfuscate - Variables добавлена обфускация аргумента "self" в функциях
  16. Добавлен обфускатор строковых констант Script - Obfuscate - Strings...
  17. Добавлен обфускатор кода Script - Obfuscate - Structure..., пока что умеет заменять цепочки атрибутов вида a.b.c... на вложенные вызовы getattr
  18. В WOT-Transmission исправил ошибку при добавлении путей в sys.path и добавил компиляцию скриптов налету перед exec
  19. Обновил python34.dll и архив python34.zip до Python 3.4.3

В WOT-Transmission я в файле \wottransmission\wottransmission\scripts\common\debug_utils.py выставил по умолчанию RELEASE = 5, так как расширенный лог тем кому он не нужен - шибко мешает. Я еще не сделал переключалку в самом Орионе, поэтому кому нужен расширенный лог сами залезьте в файл трансмиттера и замените 5 на 1.

Изменения (07/09/2015):
  1. Подправил работу обфускатора строк с док-стрингами
  2. Сделал вынос переменных в начало модуля в обфускаторе строк
Изменения (09/09/2015):
  1. Заменил в обфускаторе строк блок переменных на словарь
  2. Сделал кэш-файл для обмена большими массива данных между GUI Ориона и средой питона, что должно существенно снизить задержки при различных обфускациях в программе.
Изменения (10/09/2015):
  1. Исправил ошибки в парсере строк
  2. Убрал подчеркивание в буфере обфускатора строк
Изменения (07/10/2015):
  1. Доработал обфускацию строк, добавил обфускацию всех видом импорта кроме import *
  2. Ввёл операцию Obfuscate - Applay all, выполняющую в автоматическом режиме вызов всех функций обфускации текста
  3. Переработал некоторые системные скрипты
 
Последнее редактирование:
Обновлена основная версия Ориона!
 
Где можно скачать последние версии ?
 
Видео интересное, но как установить его??? скачал архив а там ни инструкции ничего, что куда , так и не могу разобраться, огромная просьба сделайте видео как установить орион на пк, хочится попробывать что то сделать, а я даже поставить его немогу:Smile_sceptic:
 
хороша программа только еще и руки нужны)))
 
Видео интересное, но как установить его??? скачал архив а там ни инструкции ничего, что куда , так и не могу разобраться, огромная просьба сделайте видео как установить орион на пк, хочится попробывать что то сделать, а я даже поставить его немогу:Smile_sceptic:

Нужно для начало выучить язык программирования а потом лезть в эту программу! а установка проста извлекаете из архива программу и запускаете её!
 
пишет что в программе троян. как быть
 
Привет Stealthz! я не могу у тебя скачать


PjOrion 1.3.1 TEST with P2.7.zip 4,96 Мб
P2.6 and P3.4 for PjOrion.zip 7,63 Мб
DLLs.zip 9,11 Мб

Перекидывает на сайт кореанрандом
 
Re: PjOrion - редактирование, компиляция, декомпиляция, обфускация модов (Версия: 1.3

固定在PY-文件的UTF-8格式从上下文菜单命令运行性能的错误
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху