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

Понравилось, но сразу вопрос! А как выяснить последовательность цепочки вызовов функций, не роняя последнюю для создания ошибки?

Ну ты конечно в точку спросил, заодно и сам узнал интересную вещь. Мне не жалко, так что лови)

import traceback
def a(x):
    if x >= 10:
        print ''.join(traceback.format_list(traceback.extract_stack()))
    return x if x >= 10 else a(x + 1)

a(1)
Думаю поймешь что откуда, где орион качать знаешь)
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

В общем сделал я так:

 

import sys

f = open('2.pyc','w')

sys.stdout = f

print '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'.decode('base64').decode('zlib')

f.close()

 

Запустил и получил 2.рус.  Первые 8 байт оригинального файла - это 03 F3 0D 0A 1E DE 21 54 - я их дописал в начало полученного 2.рус.

  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

В общем сделал я так:

Принт не самая крутая штука, символы новой строки добавляет, лучше в бинарнике работать...
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Принт не самая крутая штука, символы новой строки добавляет, лучше в бинарнике работать...

 

Мне это ни о чём не говорит. А про print вы же мне сами и посоветовали...

 

Декомпилировал я , значит, после дописки 8 байт 2.рус и получил, что и было:

 

 

_ = () == ()

__ = _ + _

___ = __ + __

____ = ___ + ___

_____ = ____ + ____

______ = _____ + _____

_______ = ______ + ______

exec '%c' * 6572 % (__ + ___ + ______ + _______, __ + и так далее и тому подобное...

 

Всё по инструкции (1. Декомпилим орионом, заменяем exec на print, удаляем marshal.loads, сохраняем в 1.py ), однако, выходит полная хрень.

Edited by Huitaarva

Share this post


Link to post

Short link
Share on other sites

Мне это ни о чём не говорит.

 

Декомпилировал я , значит, после дописки 8 байт 2.рус и получил, что и было:

 

 

_ = () == ()

__ = _ + _

___ = __ + __

____ = ___ + ___

_____ = ____ + ____

______ = _____ + _____

_______ = ______ + ______

exec '%c' * 6572 % (__ + ___ + ______ + _______, __ + и так далее и тому подобное...

 

Всё по инструкции (1. Декомпилим орионом, заменяем exec на print, удаляем marshal.loads, сохраняем в 1.py ), однако, выходит полная хрень.

 

В голове у вас полная ****. Если хотите работать с Питоном, то хотя бы азы то почитайте. А то вы смотрите на код - а видите ****.

 

Выше это самый обычный Питон-скрипт. В качестве переменных используются имена _, __, ____ и т.д. Данный скрипт делает операции с символами и получает строку, которую скармливает операнду exec, а тот в свою очередь её исполняет.

 

Хотите увидеть что за строка передается в exec?

 

Ну дык сделайте так:

_ = () == ()
__ = _ + _
___ = __ + __
____ = ___ + ___
_____ = ____ + ____
______ = _____ + _____
_______ = ______ + ______
print '%c' * 6572 % (__ + ___ + ______ + _______, __ + и так далее и тому подобное...

Выполняйте в Орионе F5. Увидите в логе что за строка там такая прячется.


 

sys.stdout = f

 

А вот этого в Орионе лучше просто так не делать. Орион сам подменяет sys.stdout на свою функцию вывода инфы в окно Ориона. Если обратно не вернете

 

old_stdout = sys.stdou

sys.stdout = f

...

sys.stdout = old_stdout

 

то в лог Ориона ни чего потом писаться не будет. Придётся перезагружать (ALT+R )

Edited by StranikS_Scan
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

В общем вторая часть мануала по хукам. Property.

"Установка хука на Property"

#We have class with property
class cla(object):
    def __init__(self):
        self.x = 0
        pass

    @property
    def param(self):
        print 'getter'
        return self.x

    @param.setter
    def param(self, x):
        print 'setter'
        self.x = x

    @param.deleter
    def param(self):
        print 'deleter'
        del self.x

#we create object
obj = cla()

#defining hook functions now
def new_cla_pg(self):
    print 'hook getter'
    return old_cla_pg(self)

def new_cla_ps(self, x):
    print 'hook setter'
    return old_cla_ps(self, x)

def new_cla_pd(self):
    print 'hook deleter'
    return old_cla_pd(self)

#the most interest part
#we get origin property
old_prop = cla.param
#now we get getter, setter, deleter from it
old_cla_pg = old_prop.fget
old_cla_ps = old_prop.fset
old_cla_pd = old_prop.fdel
#now build new property
new_prop = property(new_cla_pg, new_cla_ps, new_cla_pd)
#inject new property to class
cla.param = new_prop
#You don`t need to hook all getter, setter, deleter you can use one or two others will remain origins

#Let's see what we have got
print '---'
#setting a property
obj.param = 4
print '---'
#getting a property
print obj.param
print '---'
#deleting property
del obj.param
print '---'
#getting property again... but it was deleted... exception expected.
print obj.param
print '---'

'''
---
hook setter
setter
---
hook getter
getter
4
---
hook deleter
deleter
---
hook getter
getter
Traceback (most recent call last):
  File "2.py", line 63, in <module>

    print obj.param
  File "2.py", line 28, in new_cla_
pg
    return old_cla_pg(self)
  File "2.py", line 10, in param
    return self.x
AttributeError: 'cla' object has no attribute 'x'
'''
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites

 

 

А вот этого в Орионе лучше просто так не делать. Орион сам подменяет sys.stdout на свою функцию вывода инфы в окно Ориона. Если обратно не вернете   old_stdout = sys.stdou sys.stdout = f ... sys.stdout = old_stdout   то в лог Ориона ни чего потом писаться не будет. Придётся перезагружать (ALT+R )

 

Я это не в Орионе делал... ))) Просто даблкликнул на 1.ру... )))

Share this post


Link to post

Short link
Share on other sites

 


 

1. В голове у вас полная ****. Если хотите работать с Питоном, то хотя бы азы то почитайте. А то вы смотрите на код - а видите ****.

 

2. Выше это самый обычный Питон-скрипт. В качестве переменных используются имена _, __, ____ и т.д. Данный скрипт делает операции с символами и получает строку, которую скармливает операнду exec, а тот в свою очередь её исполняет.

 

3. Хотите увидеть что за строка передается в exec?   Ну дык сделайте так:

 

 

1. Вы самоутверждаетесь что-ли путём оскорблений других ? Азы я читал. За дал нормальный вопрос - как декомпилировать скрипт. За что меня говном мазать ?

 

2. Это я всё прекрасно понимаю. Вопрос в том, что делать дальше...

 

3. Сделал, как вы сказали. Вот лог:

 

<<<   File "<string>", line 9
<<<     __ + ____ + ______ + _______, __ + ___ + ____ + ______ + _______, _ + _______, __ + _____ + ______ + _______, _ + ___ + ______ + _______, __ + ___ + ____ + ______ + _______, _ + ______ + _______, _____ + _______, _ + ___ + ______ + _______, __ + _____ + и так далее

 

<<< + __
<<<      ^
<<< SyntaxError: invalid syntax

 

Вот и всё... ((((

Share this post


Link to post

Short link
Share on other sites

 

 

Вот и всё... ((((

на 99.99% уверен что ты удалил в строке лишнее, подозреваю скобку.

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites
1. Вы самоутверждаетесь что-ли путём оскорблений других ? Азы я читал. За дал нормальный вопрос - как декомпилировать скрипт. За что меня говном мазать ?

 

А вы действительно такой наивный или просто обмазанный? Эта тема не предназначена для ответов на вопросы как шасшифровать чужой скрипт. Не флудите тут. Создавайте новую тему и там пишите, что вам надо. Я вам уже не раз писал как сделать надо. Если не доходит, то читаем, вникаем курим. А просто так ни кто вам тут чужой скрипт вскрывать не будет. Он для того и зашифрован чтоб всякие кому не положено не могли до него добраться. А кому положено - тот умеет, или сам сообразит по подсказкам.

 

Вам сюда.

Edited by StranikS_Scan
  • Upvote 2
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

на 99.99% уверен что ты удалил в строке лишнее, подозреваю скобку.

 

Нетнетнетнет... ))))

 

Сделал я, крч, спасибо... )))


 

 

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

 

Да ладно ? А вот представьте - вскрыли за "спасибо"... Только я сам хотел разобраться... )))

 

Кому положено, кому не положено... корона жмёт по-ходу некоторым... амбиции так и прут...

 

Вы ж Макса тут все ненавидите, что ж за него вступаетесь тогда ? Всё равно он этот скрипт спёр у кого-то...

 

А про "умеет" - я нисколько не умаляю ваши знания, но вы с ними не родились... тоже учились... как мне учиться - моё дело, предпочитаю брать конкретный пример и работать с ним, попутно разбираясь в деталях...

 

В любом случае - спасибо вам всем. ))))


 

 

Эта тема не предназначена для ответов на вопросы как шасшифровать чужой скрипт.

 

Кстати, а зачем в Орионе Decompyle и Obfuscate ? Не затем ли, чтобы "шасшифровать чужой скрипт" ? ))))))))))))))))))

  • Downvote 6

Share this post


Link to post

Short link
Share on other sites

 

 

Кому положено, кому не положено... корона жмёт по-ходу некоторым... амбиции так и прут...

 

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

 

 

 

Кстати, а зачем в Орионе Decompyle и Obfuscate ? Не затем ли, чтобы "шасшифровать чужой скрипт" ? ))))))))))))))))))

 

Гугл-словарь в помощь. 

  • Upvote 2
  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

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

  • Downvote 10

Share this post


Link to post

Short link
Share on other sites

 

 

В общем вторая часть мануала по хукам.

Потеряется. Да и тема не то, чтобы очень подходила для манов в комментариях. Вы бы отдельной темкой, со спойлерами :-) 

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Ну вы тут и развели...

Объект GUI.Text() через Орион создать не получается, вылетает клиент, через нормальный мод (файлик в папку с модами) все работает нормально. С чем это может быть связано? Остальные скрипты через Орион работают нормально, проблема только с модулем GUI.

Не знаю, чинил это автор или нет, но по крайней мере создать GUI объект в ангаре через орион получилось без вылетов. Может разрабы чего пофиксили (когда сломали colour) Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Ну вы тут и развели...

Не знаю, чинил это автор или нет, но по крайней мере создать GUI объект в ангаре через орион получилось без вылетов. Может разрабы чего пофиксили (когда сломали colour)

 

В ангаре и когда клиент на входе окна авторизации - проблем нет. А вот в реплее "голый" GUI.Text() вызвать не получиться. Можно только в составе подпрограммы. Подозреваю это как-то связано с трансмиттером. Скрипты из Ориона попадают в модуль трасмиттера и там exec-ятся думаю тут косяк и кроется. Но в принципе не критично.

Share this post


Link to post

Short link
Share on other sites

два дня не было :D и тут срачь развели :D я даже подозреваю кто это :D

По делу :

Добавь к программе Орион видимые пробелы , опять из за них ошибки получал , пока 100. строк не просмотрел где пробел лишкий )))))

А так бы подсвечивался , быстрей бы нашёл .

А так то синтаксис кода вроде работает отлично .

Edited by o-0-0-0

Share this post


Link to post

Short link
Share on other sites

 

 

Добавь к программе Орион видимые пробелы , опять из за них ошибки получал , пока 100. строк не просмотрел где пробел лишкий ))))) А так бы подсвечивался , быстрей бы нашёл . А так то синтаксис кода вроде работает отлично .

 

Ты вообще читаешь мои ответы? Уже третий раз тебе пишу, включи в настройках показ непечатаемых символов Terminal - Settings - Show special characters 

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Какова работа пункта "Apply processing to the script" ?

По переводу как бы "Применение обработки в сценария" , но после этого он отказывается компилировать код , то на else выдаст ошибку то ещё на что нибудь . Я так понял что кривовато работает обработчик ?

Edited by o-0-0-0

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