Jump to content
Korean Random
StranikS_Scan

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

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

314 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

format() ИМХО мощнее в разы.

 

Он медленнее, а вот процент нативный же, из си взят. 

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Он медленнее, а вот процент нативный же, из си взят.

Ну смотря что в данный момент важнее - скорость или функциональность. Не просто так этот формат добавили, от нечего делать. Видимо, было нужно. Значит, есть существенный смысл.

Share this post


Link to post

Short link
Share on other sites

Ну смотря что в данный момент важнее - скорость или функциональность. Не просто так этот формат добавили, от нечего делать. Видимо, было нужно. Значит, есть существенный смысл.

 

Вот ты загнул, в питоне всё просто так сделано, 50% питона это вариация одних и тех же велосипедов во всевозможных формах. Всегда среди сотни велосипедов одного и того же по сути назначения в питоне есть самый быстрый и есть самый удобный. И они всегда в противоположных углах, так как сахар антипод скорости.

Share this post


Link to post

Short link
Share on other sites

 

 

import ast ast.parse()   и   import compiler compiler.parse()

попробуй предварительно конвертировать исходный код (.decode('utf-8'))

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Foo(object):
    def __init__(self, name):
        self.name = name
     def __str__(self):
        return 'str: %s' % self.name
     def __unicode__(self):
        return 'uni: %s' % self.name.decode('utf-8')
    def __repr__(self):
        return 'repr: %s' % self.name
a = 'Елена S'
b = Foo(a)
print(str(b))
print(unicode(b))
print(repr(b))
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

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

 

Вообщем, полистав статейки, я восполнил пробелы в моём представлении всех тех махинаций, что проводит питон с кодировками. В делфи с эти вопросам я разобрался давным давно, а вот с питоном были проблемы. Опять таки начну издалека, как я писал раньше беда компонентов, которые я юзаю в делфи - это их не понимание юникода и работа исключительно в той локали, которая выставлена в системе как текущая (стандарт ANSI). Фактически в этом нет ни чего страшного, если только вы не тот, кто открывает файлики с символами на других языках и не редактирует их в система, где локаль ни чего не знает про эти языки. Например, в системе стоил локаль ANSI: 1251 (кириллица), а нам вдруг очень захотелось почитать и поредактировать скрипт с доками на японском (ANSI: 932). Логично, что открыв его в Орионе ни чего кроме вопросиков мы не увидим, а вот если мы предварительно сменим локаль в системе на японскую, то ни каких проблем не будет - Орион покажет нам японские символы, правда с оговоркой, что шрифт мы в Орионе выберем с поддержкой японских иероглифов.

 

Так вот, описание велосипеда я решил начать именно с того, что делает Орион при открытии в нем скрипта. Первоначально, анализируя преамбулы, если таковые имеются в документе он определяет кодировку файла. Если это UTF-8 или UTF-16, известный как Unicode, то перед загрузкой файла Орион конвертирует байты в кодировку текущей локали системы. После чего текст помещается в редактор (не в смысле приложение, а в компонент редактирования текста TSynEditor), где и отображается в соответствии с текущей локалью системы и выбранным в настройках шрифтом. При сохранении текста в файл выполняется обратная операция. Для того чтобы клиент игры мог правильно отобразить не ASCII символы, то бишь нашу кириллицу, необходимо текст из редактора сохранить в файл в кодировки UTF-8. И в дальнейшем ни каких особых проблем с таким файлом нет.

 

Теперь рассмотрим эту же ситуацию, но с учетом ранее добавленной мной функции, обфусцирующей строковые константы в тексте скрипта. Анализ скрипта и кодирование констант осуществляются в питоне, так как в нём есть предусмотренные для этого механизмы - это в первую очередь парсеры питон-кода и удобные функции для написания компактного кода посимвольной работы с текстом. Однако, Питон 2.7 не лишен сюрпризов, оказывается парсеры типа import ast; ast.parse() или import copiler; compiler.parse() работают исключительно с кодом в кодировке ASCII. Выходит, что текст в UTF-8 кодировке нужно предварительно перекодировать. И вот мы натыкаемся на еще одну проблему. Как только мы раскодируем символы с кодами больше 255, они станут многобайтными и, следовательно, полностью нарушат структура кода скрипта - все элементы в скрипте, названия, определения, атрибуты, идущие после таких текстовых констант сместятся и их положение будет отличаться от их позиции в первоначальном скрипте. Как результат, парсить такой скрипт уже бессмысленно. Выходит, что подавать на вход парсера нужно текст именно в том формате, в каком он представлен в редакторе Ориона, где все не ASCII символы однобайтные с кодами в диапазоне 128-255. Но и это еще не всё - есть и третья проблема. Распарсив такой скрипт, нельзя текстовые константы из его веток использовать напрямую для обфускации текста, ведь они же не в UTF-8 формате будут. Значит их нужно будет налету перекодировывать обратно в UTF-8 формат...

 

Вот такие пироги, вкратце. Осталось продемонстрировать алгоритм работы моего велосипеда ))))) Вот как выглядит цепочка трансформаций, если мы вздумаем взять уже готовый скрипт с кириллицей внутри в UTF-8 формате и обфусцировать все его строки с помощью Ориона в винде с русской локалью:

 

example.py (текст в UTF-8) --->

редактор в Орионе (текст в ANSI: 1251) --->

кэш-файл Ориона (текст в UTF-8) --->

text=codecs.open(,'utf-8').read() в обфускаторе (текст в Unicode) --->

text.encode(locale.getdefaultlocale()[1]) перекодировка в текущую локаль (текст в ANSI: 1251) --->

ast.parse(text) парсинг кода (текст в ANSI: 1251) --->

node.s.decode(locale.getdefaultlocale()[1]).encode('utf-8') перекодировка в оригинал (текст в UTF-8) --->

шифрование s-строки (массив кодов 0-255) --->

     кэш-файл Ориона (текст в ANSI: 1251) --->

замена строк в редакторе Ориона на коды (текст в ANSI: 1251) --->

new_example.py (текст в UTF-8)

Edited by StranikS_Scan
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Победил я в очередной раз проблему и приделал еще пару квадратных шестеренок в свой эллиптический велосипед.

Как показывает практика, если кодер задействует квадратную шестеренку, значит оно наверняка стыкуется с каким-то квадратным компонентом. И наоборот. Если компонент квадратный, то без квадратных шестеренок никак. Вывод весьма простой - если не хотите квадратных шестеренок - не используйте квадратные компоненты. Правда, увы, не всегда получается(((
  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Тебя поза поза поза прошлом патче спрашивали - дырявый Орион или нет? Отмалчивался как девочка, и сделал крайнего что типа внёс в маршал сведения до всех протекторов и обфускаторов - ну типо прошло.

Сейчас, что скажешь? Если полный декомпил идёт а ты сука молчишь и лошком себя делаешь...

Вводи штоли инжект в игру против декомпила.

На[мат] ты людей дрянь подводишь что твою [мат]ню декомпелируют за раз...

Урод... Урод 1 раз - было, урод 2 раз - было. Урод сука признай нах и пошёл нах.. столько сука с тобой скриптов проебал.. Урод конченный. И заметь урод что я твои скрипты так и не спустил из интрудера.

Нах ты вводишь людей в чайф. Ты сука тот кому за молчание головешку отбивать!

Edited by Stealthz
  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

Ду*ачок тут только один - это ты ЛСД, который за два года, КАРЛ! Так и не смог выучить азы питона, и до сих пор думает, что можно на питоне сделать какую-то мифическую "не взламываемую" защиту! Её даже в пентагоне нет, КАРЛ! Это каким недалеким надо быть, чтобы писать моды на питоне и ни капли не понимать как он работает. Я много раз писал, что есть только одна дырка - это дырка от кирпича в твоей голове, ЛСД. Ты читать не умеешь? Или тебе врачи читать запрещают и осмысливать? Если нет - то потрать таки каплю своего время, что ты тратить на глупое безделье, и загугли слово обфускация. Может почитав, до тебя наконец-то дойдет, что нет никаких защит в Питоне, КАРЛ! Есть только запутывание кода, который всегда можно "распутать".

 

В этой теме все это знают, даже новички, кто только вчера начал писать на Питоне, даже они, КАРЛ! сходу схватывают что именно делает программа с кодом и почему в Питоне нельзя создать "нераспутываемый" код, но..... увы почему только ЛСД с дыркой от кирпича в голове до сих пор, КАРЛ!, не в курсе дела.... наверно утечка мозга идёт.... ты бы заткнул дырку какой тряпкой, глядишь и умнеть начнёшь.... а так бесполезно тебе что-то объяснять, у тебя в ухо вошло через дырку в голове вышло.

Edited by StranikS_Scan
  • Upvote 6

Share this post


Link to post

Short link
Share on other sites

Форматы *.visual_processed и *.font добавлены в список распаковываемых программой

нужно также добавить формат *.track

Share this post


Link to post

Short link
Share on other sites

Вопрос. Можно как то через трансмитер логировать действие мода?

Share this post


Link to post

Short link
Share on other sites

Вопрос. Можно как то через трансмитер логировать действие мода?

 

Нет.

Share this post


Link to post

Short link
Share on other sites

Вопрос. Можно как то через трансмитер логировать действие мода?

Мод может писать сообщения в лог с префиксом. Потом берешь что-то типа grep... и получаешь свои логи.

Share this post


Link to post

Short link
Share on other sites
Потом берешь что-то типа grep... и получаешь свои логи.
c:\games\world of tanks>find python.log "MY_MOD_NAME" >res.txt

это имелось ввиду, наверное..

при условии что мод вывод в лог будет делать по типу

print '[MY_MOD_NAME] %s' % logString
Edited by fecell
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

это имелось ввиду, наверное.. при условии что мод вывод в лог будет делать по типу

Абсолютно верно)

Share this post


Link to post

Short link
Share on other sites

Выложил новый exe-файл для второго теста - тыц. Промотайте пост по ссылке. Просьба проверить работу Minimize и проверить правильно ли будут обфусцироваться моды, содержащие строки с русским текстом.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

@StranikS_Scan, давно хотел попросить галочку в Орионе, чтобы при старте программы он не линковался с питоном.

Очень тормознуто стартует. А среда питона в Орионе мне редко нужна.

 

 

 

Просьба проверить работу Minimize

Шикарно.

Просто шикарно.

Как удалось это исправить? Заюзал питоновый минимайзер? Улучшил логику RegExp'ов?

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

ZorroJan нашел еще ошибку, когда комментарии в конце строк дописаны, я исправил, exe-файл перезалил, качайте - тыц.

 

 

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


Шикарно.
Просто шикарно.
Как удалось это исправить? Заюзал питоновый минимайзер? Улучшил логику RegExp'ов?

 

Добавлю.

 

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

 

ЗЫ: Очень нужен какой-то пример питонового файла, чтоб в нем ну хотя бы 99 случаев из 100 всякого вида кода было, для теста минимайзера. А то замучился, как внесу исправление в одно место приходиться перепроверять другие. А был бы тестовый файл я бы мог меньше косячить и сразу видеть результат.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Строки с русским текстом при обфускации выводятся, но перестали выводиться при обычной компиляции. Изменение кодировки не помогает.

Share this post


Link to post

Short link
Share on other sites

Строки с русским текстом при обфускации выводятся, но перестали выводиться при обычной компиляции. Изменение кодировки не помогает.

 

Нашел, косяк, подправлю.

Еще раз перезалил exe-файл, исправил косяк с компиляцией - Тест #2с

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

ЗЫ: Очень нужен какой-то пример питонового файла, чтоб в нем ну хотя бы 99 случаев из 100 всякого вида кода было, для теста минимайзера. А то замучился, как внесу исправление в одно место приходиться перепроверять другие. А был бы тестовый файл я бы мог меньше косячить и сразу видеть результат.

Вот. После обфускации мод ломается, если просто протектор, то работает. Если всё вместе, соответственно, не пашет. Программа по стандарту, из "коробки так сказать", ни чего не меняю, просто открыл, обфускация, протект.

RontgenBlur-master.zip

 

P.S. Или объясните, пожалуйста, как проблему избежать? Спасибо.

Edited by akey

Share this post


Link to post

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...