Jump to content
Korean Random

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


Пользуетесь ли вы Орионом?  

322 members have voted

You do not have permission to vote in this poll, or see the poll results. Please sign in or register to vote in this poll.

Recommended Posts

:flag:  :flag:  :flag: Релиз PjOrion 1.0.8 :flag:  :flag:  :flag: 



Что нового:
  • Исправлена ошибка в работе функции отступов, табуляция не всегда заменялась пробелами.
  • Исправлена ошибка в работе парсера кода, не правильно распознавались пустые строки, что иногда приводило к неверной работе функции Minimize.
  • Реализованы поиск и замена текста в редакторе.
  • Убрано ограничение на формат файлов, открываемых через drag-and-drop.
  • Добавлена опция групповой отмены действий в редакторе.
  • Добавлена опция на запоминание размера и позиции Экспресс-редактора, горячая клавиша F11 заменена на Esc.
  • Размеры верхнего окна вывода данных теперь запоминаются.
  • Добавлены функции:
    • вывод списка загруженных модулей <sys.modules>;
    • функции импорта, перезагрузки и удаления модулей с обновлением внешних ссылок;
    • функции дизассемблирования и декомпиляции загруженного в среде объекта по его имени;
    • функции перекодировки выделенного текста из ANSI в UTF-8 и обратно в самом редакторе;
    • функции перекодировки выделенного текста в коды символов и из кодов символов в текст.
  • Вместо отдельных функций библиотеки UnPyc 0.8.1 полностью задействован модуль pyREtic.
  • Добавлен новый функционал:
    • пакет WOT-Transmission (wottransmission.zip) для запуска и обмена данными с клиентом игры (выполнение скриптов, импорт, удаление и перезагрузка модулей с обновлением ссылок, дизассемблирование по имени, декомпиляция в памяти через PyRetic и т.д.);
    • пакет Disasseble (dispack.zip) для дизассеблирования и анализа байт-кода.
  • Обновлены python27.dll и python27.zip до версии 2.7.8.

 

 

Сел оформлять тему и писать FAQ.... после этого следующая остановка - обфускация и протектор для модов.

 

PS: Последнее из нововведений это дизассемблер, он переоформлен и допилен, выводит байт-код вместе с инструкциями, не крашится на мусорных кодах, детектит их и подсвечивает.... всем кто работает с мусорными кодами мой дизасм будет полезен.

Edited by StranikS_Scan
  • Upvote 5
Link to comment
Short link
Share on other sites

...

 

Привет, если есть время можешь показать на примерах, как можно наглядно использовать:

  • функции дизассемблирования и декомпиляции загруженного в среде объекта по его имени;
  • пакет Disasseble для дизассеблирования и анализа байт-кода;

А то хоть я знаком с питоном, но вот по части, декодинга слабо.

Link to comment
Short link
Share on other sites

Декомпиляция всех скриптов в подпапках встроена в uncompyle2. Нужно лишь вызвать с нужными параметрами.

например "uncompyle2 --py -s -o decompiled source" обработает все скрипты и воссоздаст исходную структуру папок..

зы: я вместо source указываю World_Of_Tanks как новый патч выходит ;)

Link to comment
Short link
Share on other sites

декомпиляция в памяти через PyRetic и т.д.

 

Вопрос, а не получится ли применить это к функциям BigWorld, выполняем в игре какой нибудь код, например: BigWorld.time() (простой пример) и получить исходник?

Edited by ProstoNoob
Link to comment
Short link
Share on other sites

Вопрос, а не получится ли применить это к функциям BigWorld, выполняем в игре какой нибудь код, например: BigWorld.time() (простой пример) и получить исходник?

Нет. Движок BigWorld ведь на С++ написан, эта функция, как и все остальные 407 (import BigWorld; print dir(BigWorld)), тоже на С.. в этих функциях, могу немного ошибиться в точности названия, нет вообще атрибута co_code (или func_code), т.е. атрибута в котором хранится питоновский байткод.

Link to comment
Short link
Share on other sites

 

 

а mercger не будет против ?

 

Против чего? Пока что я ни как и не в чём не пересекаюсь я ним.

 

 

 

Декомпиляция всех скриптов в подпапках встроена в uncompyle2. Нужно лишь вызвать с нужными параметрами.

 

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

 

 

 

Вопрос, а не получится ли применить это к функциям BigWorld, выполняем в игре какой нибудь код, например: BigWorld.time() (простой пример) и получить исходник?

 

А кто вам мешает попробовать. Запускайте Орион, затем через WOT-Transmission - Run - Game запускайте игру, после этого в Орионе пишем:

import BigWorld
aaa = BigWorld.time

затем жмём CTRL+F5, после этого выделяем мышкой слово aaa и в меню WOT-Transmission - Other  выбираем что нам нужно. Затем смотрим что будет дальше.

 

По своему опыту скажу, что PyRetic 5.1 хреново декомпилит из памяти, а функции может вовсе не декомпилить. А вот дизассемблер работает гораздо устойчивее и может дизассеблировать как модуль BigWorld так и любую его функцию. Правда опять же только те из них, которые написаны на питоне, код написанный не напитоне дизасс. не будет.

 

Пробуйте, это интересно :))))

 

 

 

Нет. Движок BigWorld ведь на С++ написан, эта функция, как и все остальные 407 (import BigWorld; print dir(BigWorld)), тоже на С.. в этих функциях, могу немного ошибиться в точности названия, нет вообще атрибута co_code (или func_code), т.е. атрибута в котором хранится питоновский байткод.

 

Да именно так, всё что имеет не питоновскую природу, не будет дизасс. как стандартным так и переделанным мной дизассемблером. 

 

 

ЗЫ: Над темой я работаю, ждите описания и видео.

  • Upvote 2
Link to comment
Short link
Share on other sites

...

 

Можно сделать такую функцию, запускаем игру, включаем режим, и программа показывает нам какой именно код выполняется со ссылкой на файл и строчку?

Link to comment
Short link
Share on other sites

Можно сделать такую функцию, запускаем игру, включаем режим, и программа показывает нам какой именно код выполняется со ссылкой на файл и строчку?

 

Не в курсе, думаю надо поискать что-то типа трассировки исполняемого кода в реальном времени для питона. Если такое найду с примерами реализации, то занесу в кттс.

 

 

предыдущие версии стартовали в окне, а релиз во весь экран (( неудобно

 

 

Опции смотрели? Terminal - Settings - Load in fullscreen

 

Видео будет на новые функции ?

 

Конечно.

  • Upvote 1
Link to comment
Short link
Share on other sites

...

 

1. Вот такой код можно перекодировать и посмотреть?

 

\x03\xF3\x0D\x0A

 

2. После того как нам покажет FAKE код, программа может его убрать и декомпилировать сама?

Edited by ProstoNoob
Link to comment
Short link
Share on other sites

1. Вот такой код можно перекодировать и посмотреть?

 

\x03\xF3\x0D\x0A

 

2. После того как нам покажет FAKE код, программа может его убрать и декомпилировать сама?

 

1. Хотите узнать какой набор инструкций получается ;)?

Без проблем, делайте так, пишите в редакторе текстовую строку '\x03\xF3\x0D\x0A', затем выделяйте её и в выпадающем меню жмякаем на Disassemble Selected Object. И смотрим на результат :))))

<<< Object: str ''?
<<< ''
<<< ------------------------------------------------------------------
<<< ******************** code beginning (level 0) ********************
<<< discode[hexcode]:
<<< |          0 ROT_THREE            [03 -- --]
<<< |          1 <243> FAKE!          [F3 -- --]
<<< |          2 UNARY_CONVERT        [0D -- --]
<<< |          3 UNARY_POSITIVE       [0A -- --]
<<< ********************** code ending (level 0) *********************

Получить тоже самое можно также если занести строку в переменную и диссануть эту переменную :)))

 

2. Такого функционала в программе не будет. Инструменты для исследования кода, это есть/будет, инструменты для защиты будут, а для автоматизации снятия защит - такого не будет.

Edited by StranikS_Scan
  • Upvote 1
Link to comment
Short link
Share on other sites

Прикольная тема, главное время на отладке вычислительных функций нехило экономит... (не надо сто раз перезапускать клиент)
Правда через полчаса после использования раскопал исходники трансмиттера и поменял

print str(E)

на

import traceback #В начало файла
print traceback.format_exc()

Иными словами, вернул трассировщик ошибок на место) Не ну без него никак) 

Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...