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

@ahwa, за такой информативный и короткий пост можно получить благодарность от админа)

 

@StranikS_Scan, как там с трансмиттером?

 

У кого до сих пор не бомбило по поводу трансмиттера, запустите

import Keys
for key in dir(Keys):
    if not key.startswith('__') and not key.endswith('__'):
        print key, ';', getattr(Keys, key)
З.Ы. Скрипт выводит имена и код клавиш.

 

Share this post


Link to post

Short link
Share on other sites
как там с трансмиттером?

 

Уточни? 

 


 

@fecell, я правильно понял - он спрашивал как такое можно сделать?

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

Попробуй выполнить скрипт (через трансмиттер в клиенте), поймешь)

 

У конечно со всем уважением, но делается это так:

import Keys
print '\n'.join([('%s:\t%s') % (key, getattr(Keys, key)) for key in dir(Keys) if not key.startswith('__') and not key.endswith('__')])
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

Я так тоже могу (и даже делал примерно так), но это называется "костыли-велосипеды".

 

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

Share this post


Link to post

Short link
Share on other sites

я правильно понял - он спрашивал как такое можно сделать?

 

не, как из листинга собрать обратно pyc-файл.

по сути дамп скрипта без вывода dis-листинга самого байткода он скинул. я тоже где-то в инете находил скрипт который один в один дампит.

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

'dis_showfile.py'

import dis, marshal, struct, sys, time, types
def show_file(fname):
    f = open(fname, "rb")
    magic = f.read(4)
    moddate = f.read(4)
    modtime = time.asctime(time.localtime(struct.unpack('L', moddate)[0]))
    print "magic %s" % (magic.encode('hex'))
    print "moddate %s (%s)" % (moddate.encode('hex'), modtime)
    code = marshal.load(f)
    show_code(code)
    
def show_code(code, indent=''):
    print "%scode" % indent
    indent += '   '
    print "%sname %r" % (indent, code.co_name)
    print "%sargcount %d" % (indent, code.co_argcount)
    print "%snlocals %d" % (indent, code.co_nlocals)
    print "%sstacksize %d" % (indent, code.co_stacksize)
    print "%sflags %04x" % (indent, code.co_flags)
    show_hex("code", code.co_code, indent=indent)
    try:
        dis.disassemble(code)
    except:
        print '--ERR--'
    print "%sconsts" % indent
    for const in code.co_consts:
        if type(const) == types.CodeType:
            show_code(const, indent+'   ')
        else:
            print "   %s%r" % (indent, const)
    print "%snames %r" % (indent, code.co_names)
    print "%svarnames %r" % (indent, code.co_varnames)
    print "%sfreevars %r" % (indent, code.co_freevars)
    print "%scellvars %r" % (indent, code.co_cellvars)
    print "%sfilename %r" % (indent, code.co_filename)
    print "%sfirstlineno %d" % (indent, code.co_firstlineno)
    show_hex("lnotab", code.co_lnotab, indent=indent)
    
def show_hex(label, h, indent):
    h = h.encode('hex')
    if len(h) < 60:
        print "%s%s %s" % (indent, label, h)
    else:
        print "%s%s" % (indent, label)
        for i in range(0, len(h), 60):
            print "%s   %s" % (indent, h[i:i+60])
if __name__ == '__main__':
    show_file(sys.argv[1])

Edited by fecell

Share this post


Link to post

Short link
Share on other sites
не, как из листинга собрать обратно pyc-файл.

 

А зачем обратно дамп собирать в pyc? Или это такая извращенная форма редактирования: pyc -> дамп -> edit -> new_дамп -> new_pyc

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

А зачем обратно дамп собирать в pyc? Или это такая извращенная форма редактирования: pyc -> дамп -> edit -> new_дамп -> new_pyc

да хз.. вероятно в тексте пропатчил что-то и есть желание собрать обратно.. а может защиту так делает - в исходник вставил "print" раз 10 и все последовательности \x48 * 10 в листинге изменил рандомно.. теперь обратно собрать хочет, в принципе логично так создавать защиту от декомпила "на коленке" ;)

Share this post


Link to post

Short link
Share on other sites

да хз.. вероятно в тексте пропатчил что-то и есть желание собрать обратно.. а может защиту так делает - в исходник вставил "print" раз 10 и все последовательности \x48 * 10 в листинге изменил рандомно.. теперь обратно собрать хочет, в принципе логично так создавать защиту от декомпила "на коленке" ;)

 

Я от такого варианта работы с кодом отказался сразу, проще оказалось виртуальную машину написать байт-код -> виртуальный код -> новый байт-код.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Сорри за оффтоп, а скрипты от WoWS уже ковыряли? А то там чем-то запаковано всё.

Share this post


Link to post

Short link
Share on other sites

Сорри за оффтоп, а скрипты от WoWS уже ковыряли? А то там чем-то запаковано всё.

Расстроился, когда увидел, что все обфусцировано(

Так и не смог расковырять. Интересно, они так и останутся? Мне кажется, в релизе будут чистые скрипты, иначе как моды будут делать :)

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

Зашифровано, конечно. Однако никто не отрицает первого :)

 

Скинь пример скрипта.

Share this post


Link to post

Short link
Share on other sites

Скинь пример скрипта.

 

Там импорт они свой сделали, он и расшифровывает. Типа обычный импорт -> хук_импорт -> расшифровка -> продолжение обычного импорта. Чтобы подглядеть надо весь клиент качнуть. Мне тупо лень.

 

Примеры шыфрованых файлов.zip

Edited by StranikS_Scan
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Сорри за оффтоп, а скрипты от WoWS уже ковыряли? А то там чем-то запаковано всё.

все закрыто( на стадии бета) 

в релизе обещали открыть 

Edited by ♫♫♫Dark_Knight_MiX♫♫♫

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