GPCracker 2,088 #257838 Posted March 13, 2015 @ahwa, за такой информативный и короткий пост можно получить благодарность от админа) @StranikS_Scan, как там с трансмиттером? У кого до сих пор не бомбило по поводу трансмиттера, запустите import Keys for key in dir(Keys): if not key.startswith('__') and not key.endswith('__'): print key, ';', getattr(Keys, key) З.Ы. Скрипт выводит имена и код клавиш. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #257845 Posted March 13, 2015 (edited) как там с трансмиттером? Уточни? @fecell, я правильно понял - он спрашивал как такое можно сделать? Edited March 13, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #257846 Posted March 13, 2015 Уточни?Попробуй выполнить скрипт (через трансмиттер в клиенте), поймешь) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #257847 Posted March 13, 2015 (edited) Попробуй выполнить скрипт (через трансмиттер в клиенте), поймешь) У конечно со всем уважением, но делается это так: 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 March 13, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #257852 Posted March 13, 2015 У конечно со всем уважением, но делается это так:Я так тоже могу (и даже делал примерно так), но это называется "костыли-велосипеды". Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #257854 Posted March 13, 2015 Я так тоже могу (и даже делал примерно так), но это называется "костыли-велосипеды". Нет, это называется - правильный подход, когда поддон с кирпичами во двор выгружают, а не на улицу чтоб потом через ворота по одному кирпичу таскать. Quote Share this post Link to post Short link Share on other sites
fecell 125 #257917 Posted March 14, 2015 (edited) я правильно понял - он спрашивал как такое можно сделать? не, как из листинга собрать обратно 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 March 14, 2015 by fecell Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #257924 Posted March 14, 2015 (edited) не, как из листинга собрать обратно pyc-файл. А зачем обратно дамп собирать в pyc? Или это такая извращенная форма редактирования: pyc -> дамп -> edit -> new_дамп -> new_pyc Edited March 14, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
fecell 125 #257928 Posted March 14, 2015 А зачем обратно дамп собирать в pyc? Или это такая извращенная форма редактирования: pyc -> дамп -> edit -> new_дамп -> new_pyc да хз.. вероятно в тексте пропатчил что-то и есть желание собрать обратно.. а может защиту так делает - в исходник вставил "print" раз 10 и все последовательности \x48 * 10 в листинге изменил рандомно.. теперь обратно собрать хочет, в принципе логично так создавать защиту от декомпила "на коленке" ;) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #257931 Posted March 14, 2015 (edited) да хз.. вероятно в тексте пропатчил что-то и есть желание собрать обратно.. а может защиту так делает - в исходник вставил "print" раз 10 и все последовательности \x48 * 10 в листинге изменил рандомно.. теперь обратно собрать хочет, в принципе логично так создавать защиту от декомпила "на коленке" ;) Я от такого варианта работы с кодом отказался сразу, проще оказалось виртуальную машину написать байт-код -> виртуальный код -> новый байт-код. Edited March 14, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
MakcT40 331 #257938 Posted March 14, 2015 тоже где-то в инете находил скрипт который один в один дампит. Где-то здесь, полагаю. Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #257964 Posted March 14, 2015 Сорри за оффтоп, а скрипты от WoWS уже ковыряли? А то там чем-то запаковано всё. Quote Share this post Link to post Short link Share on other sites
woole 5 #257969 Posted March 14, 2015 Сорри за оффтоп, а скрипты от WoWS уже ковыряли? А то там чем-то запаковано всё.Расстроился, когда увидел, что все обфусцировано( Так и не смог расковырять. Интересно, они так и останутся? Мне кажется, в релизе будут чистые скрипты, иначе как моды будут делать :) Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #257972 Posted March 14, 2015 Расстроился, когда увидел, что все обфусцировано( Так и не смог расковырять. Интересно, они так и останутся? Мне кажется, в релизе будут чистые скрипты, иначе как моды будут делать :)Обфуцировано или зашифровано? Quote Share this post Link to post Short link Share on other sites
woole 5 #257975 Posted March 14, 2015 Обфуцировано или зашифровано?Зашифровано, конечно. Однако никто не отрицает первого :) Quote Share this post Link to post Short link Share on other sites
DrWebber 5 #257976 Posted March 14, 2015 Зашифровано, конечно. Однако никто не отрицает первого :) Скинь пример скрипта. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #257977 Posted March 14, 2015 (edited) Скинь пример скрипта. Там импорт они свой сделали, он и расшифровывает. Типа обычный импорт -> хук_импорт -> расшифровка -> продолжение обычного импорта. Чтобы подглядеть надо весь клиент качнуть. Мне тупо лень. Примеры шыфрованых файлов.zip Edited March 14, 2015 by StranikS_Scan 1 Quote Share this post Link to post Short link Share on other sites
fecell 125 #258174 Posted March 15, 2015 Скинь пример скрипта. там в экзешнике лоадер.. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #258184 Posted March 15, 2015 (edited) Сорри за оффтоп, а скрипты от WoWS уже ковыряли? А то там чем-то запаковано всё. все закрыто( на стадии бета) в релизе обещали открыть Edited March 15, 2015 by ♫♫♫Dark_Knight_MiX♫♫♫ Quote Share this post Link to post Short link Share on other sites
spoter 1,402 #258296 Posted March 15, 2015 https://yadi.sk/d/l1ejd0ANfGrbE вот загрузчик питон модов для корабликов. Quote Share this post Link to post Short link Share on other sites