Azbuka 278 #242251 Posted January 7, 2015 (edited) Если у вас остался шеллскрипт оттуда, а ещё лучше сам репозиторий, то восстановить не проблема. Ничего не осталось. Я начал писать свой скрипт, но есть пара проблем: 1. bwxml очень много пишет в консоль... Слишком много... Решено добавлением опции в программу. 2. uncompyle2 как-то странно декомпилирует: файл client/account_helpers/init.pyc он декомпилирует в client/account_helpers_init.py. Возможно, стоит поискать форк. #!/usr/bin/env bash if [[ $1 ]]; then #Первый аргумент может содержать директорию с файлами INPUTDIR=$1 if [[ $2 ]]; then #А второй - выходную директорию OUTPUTDIR=$2 else OUTPUTDIR="$INPUTDIR.output" fi else INPUTDIR="$PWD/scripts" OUTPUTDIR="$INPUTDIR.output" fi # Создаём выходную директорию, если её нет. if [[ ! -d $OUTPUTDIR ]]; then mkdir $OUTPUTDIR fi # Декомпилируем Python for i in $(find $INPUTDIR -name '*.pyc'); do if [[ ! -d $OUTPUTDIR$(dirname ${i#$INPUTDIR}) ]]; then mkdir $OUTPUTDIR$(dirname ${i#$INPUTDIR}) fi uncompyle2 --py -o $OUTPUTDIR$(dirname ${i#$INPUTDIR})$(basename $i '.pyc').py $i done # Расшифровываем xml for i in $(find $INPUTDIR -name '*.xml'); do bwxml --output $OUTPUTDIR$(dirname ${i#$INPUTDIR}) $i done Edited January 7, 2015 by Azbuka_slovensko Quote Share this post Link to post Short link Share on other sites
poget 3 #243139 Posted January 10, 2015 (edited) Уважаемый StranikS_Scan, не понял баг это или фича. Открыт .py-файл в орионе. Редактирую файл во внешнем редакторе, открываю орион - он сообщает что файл изменен и предлагает переоткрыть (спасибо кстати за эту фичу, которую я просил), после чего выполняю <compile script> и орион ПОВТОРНО выдает сообщение что файл изменен и предлагает переоткрытие. PjOrion Версия: 1.2.1 upd: Странное дело, вышеописанное происходит когда редактирую файл с помощью notepad++ или akelpad, если же редактирую файл в PyCharm то Орион, как и положено, выдает только один запрос на переоткрытие, но при этом, после нескольких редактирований/компиляций файла, Орион вообще перестает реагировать на обновление исходного файла и не предлагает переоткрытие. Лечится перезапуском Ориона. Непонятно. Edited January 10, 2015 by poget Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #243260 Posted January 11, 2015 (edited) Всех с наступившим! Вышла новая версия Ориона 1.2.2 ------------------------------------------------------------------------------------- Выложил тестовую версию программы с новыми фичами для защиты скриптов: Обфускатор байт-кода Bytecode - Obfuscate Протектор pyc-файлов Bytecode - Protect Простенький обфускатор имён переменных, процедур и классов в питон-скрипте Script - Obfuscate Как это работает и как этим пользоваться: 1. Сначала нуно отладить свой мод и убедиться что он не косячный, т.к. после обфускации вы уже не сможете понять в какой части вашего кода возникла ошибка, обфускатор вырежет системную информацию о строках 2. Компилим py-файл нашего мода через обфускатор Bytecode - Obfuscate - Compile and obfuscate py-file... и получаем на выходе обфусцированный pyc-файл. Технически ваш мод уже защищен и без долгих танцев с бубном и тяжелой артиллерии его ни как не декомпилировать 3. Однако для того чтобы его нельзя было так просто начать расковыривать накладываем сверху протектор. Для чего обрабатываем наш pyc-файл функцией Bytecode - Protect - Protect obfuscated pyc-file... В результате код исходного pyc-файла шифруется и прячется в протекторе, который его тем сам и защищает. Фактически протектор можно наложить на любой pyc-файл. Кроме этого перед компиляцией можно сделать замену имен переменных в скрипте на всякие путанные буквы и абракадабру, для этого юзаем опцию Script - Obfuscate - Names... Также в первом посте под спойлером "Как защитить свой код" добавил подробную статья по основам защиты модов. Можно почитать. Еще кое-какие фичи будут добавлены чуть позже. Посты с замечаниями я выше все прочитал, в список себе записал, в следующей версии буду делать. Edited January 12, 2015 by StranikS_Scan 8 Quote Share this post Link to post Short link Share on other sites
BossBox 14 #243274 Posted January 11, 2015 (edited) . . . . Да наступит новая эра :) . . . . Edited January 11, 2015 by BossBox 1 Quote Share this post Link to post Short link Share on other sites
KACTET 317 #243346 Posted January 11, 2015 (edited) Да наступит новая эра :)Ага, новая эра с обфускацией, Странник спасибо ещё раз за отличнейшую программу! Edited January 11, 2015 by KACTET 1 1 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #243389 Posted January 12, 2015 Ага, новая эра с обфускацией, Странник спасибо ещё раз за отличнейшую программу!Эра, когда лагает, а что, где и почему - хз. Когда в логах творится полная ***** и там даже автор не разберет что к чему. И будет гулять по свету куча обфуцированной, никому не нужной лагающей несовместимой *****. И куча брошенных обфуцированных модов, которые никто не в состоянии поднять. Просто меня уже не первый раз просят посмотреть логи. Потому что когда у тебя вместо имен файлов, методов и т.д. рандомные строки, невозможно даже понять какой мод вызывает ошибки и где, только перебором искать если, а это уже неуважение к юзерам. По крайней мере лагающий на хуке файл и метод, на который этот хук поставлен, должен быть определяем по логам. 1 1 Quote Share this post Link to post Short link Share on other sites
KACTET 317 #243393 Posted January 12, 2015 (edited) Оффтоп Кто знает питон и в нём разбирается сможет сделать всё, что вы написали. На данный момент именно, что многие авторы не могут сделать свою достойную защиту в модах и гуляют кучи модов которые бьют ошибки. Edited January 12, 2015 by KACTET 1 5 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #243405 Posted January 12, 2015 Эра, когда лагает, а что, где и почему - хз. Когда в логах творится полная ***** и там даже автор не разберет что к чему. И будет гулять по свету куча обфуцированной, никому не нужной лагающей несовместимой *****. И куча брошенных обфуцированных модов, которые никто не в состоянии поднять. Просто меня уже не первый раз просят посмотреть логи. Потому что когда у тебя вместо имен файлов, методов и т.д. рандомные строки, невозможно даже понять какой мод вызывает ошибки и где, только перебором искать если, а это уже неуважение к юзерам. По крайней мере лагающий на хуке файл и метод, на который этот хук поставлен, должен быть определяем по логам. АполЭтично рассуждаЭшь, дорогой! ))))) Слово "должен" нужно как раз применять к юзверам, типа "юзвер должен...." А вот слово "уважение" следует в первую очередь применять к авторам модов, типа "нужно уважать авторов и не...". А у тебя судя по контексту поста всё наоборот ))) 1 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #243433 Posted January 12, 2015 Слово "должен" нужно как раз применять к юзверам, типа "юзвер должен...." А вот слово "уважение" следует в первую очередь применять к авторам модов, типа "нужно уважать авторов и не...". А у тебя судя по контексту поста всё наоборот )))Это само собой разумеется, я говорю о том, что моды должны создаваться таким образом, чтобы минимизировать возможные конфликты, или по крайней мере ошибки должны нормально определяться и отлаживаться. Наверное, тебе наверняка не понравятся непонятные лаги со срачем в логе типа: Traceback (most recent call last): File "", line 372, in <lambda> File "", line 349, in directionRepeat BigWorld.EntityIsDestroyedException: Avatar 22510902 has been destroyed #или Traceback (most recent call last): File "mHXJ", line 15, in __onResourcesLoaded File "twbJk", line 3, in __setupModel File "TMSxG", line 55, in __assembleModel File "OCrJaW", line 24, in __setupEmblems AttributeError: 'PlayerAvatar' object has no attribute 'stats' Определи лагающий объект. Я про имя файла - его нет (или оно бессмысленное). Как будешь искать лагающий мод, если у тебя их много? Вот об этом я и говорю. То что в модах лаги - это бывает, а вот когда защита мешает определить источник и причину помех - вот это уже хреново. А то ни моды нормально написать не могут, ни защиту делать по-нормальному. А пользователи потом страдают. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #243437 Posted January 12, 2015 (edited) То что в модах лаги - это бывает, а вот когда защита мешает определить источник и причину помех - вот это уже хреново. А то ни моды нормально написать не могут, ни защиту делать по-нормальному. А пользователи потом страдают. Чего-то я тебя не понял. Ты говоришь что юзверы суют пальцы в розетки, их бьёт током, а виноваты во всем энергетики? Нееее, так не бывает. "Вышел новый клиент? Ищи новые версии модов или ставь по одному старому моду и смори будут ли косяки" - вот золотое правило, которому должен следовать каждый юзвер, юзающий моды, а иначе его будет бить током и он будет страдать. А вместе с ним будут страдать... фигней... и те самаритянины, которые в порыве своего альтруизма бросятся разгребать чужие косяки. Что касается разработки и обфускации мода - то ты как разработчик сам принимаешь решение, либо выкладывать как есть и кушать кактус, видя как его бесцеремонно ковыряют и переделывают всякие бюргеры ;) без твоего участия, либо ставить защиту и... перестать уже писать моды ногами ;) ЗЫ: directionRepeat - привет от ProstoNoob-а )))) Edited January 12, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
KACTET 317 #243442 Posted January 12, 2015 (edited) Edited January 12, 2015 by KACTET 2 2 Quote Share this post Link to post Short link Share on other sites
BossBox 14 #243462 Posted January 12, 2015 ... Debug кода ни кто не отменял, если "шифруем" то и на отладочной информации не скупай. Спасение программиста, дело рук самих программистов. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #243486 Posted January 12, 2015 Чего-то я тебя не понял. Ты говоришь что юзверы суют пальцы в розетки, их бьёт током, а виноваты во всем энергетики? Нееее, так не бывает.В том то и смысл, что не понял. Если что-то где-то работает не так / конфликтует это можно поправить / решить конфликт, на основе отладочной информации, а вот когда она ***** настолько, что непонятно, откуда и где оно сыпется, как на примере, даже непонятно в сторону какого мода копать, вот это хреново. Автор то может быть и поймет что-то в таких логах (хотя маловероятно), но даже опытный пользователь определить причину такого "выброса" не в состоянии, и соответственно конфликт если и будет решаться, то методом "тыка", но никак не нормальным образом. Debug кода ни кто не отменял, если "шифруем" то и на отладочной информации не скупай.А вот кто-то этим правилом пренебрегает, вот в чем проблема. А потом ищи причину лагов, вылетов, перегрузок по процессору и памяти, просадок фпс. С нешифрованными модами проще - они нормально декомпилируются и трассировка у них нормальная. Обфускатор имен уничтожает трассировку, косой пакер тоже, обфускатор байт-кода может сбивать номера строк в трейсе (последнее имеет значение только для автора). А зашифровать так, чтобы и дебаг был нормальным, и защита была нормальной - это скилл. Защита - это такая вещь, что ее нужно либо делать по-нормальному (с нормальным дебагом), либо не делать вообще. Иначе в итоге получается то, что я постил. 1 1 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #243488 Posted January 12, 2015 Если что-то где-то работает не так / конфликтует это можно поправить / решить конфликт, на основе отладочной информации, а вот когда она ***** настолько, что непонятно, откуда и где оно сыпется, как на примере, даже непонятно в сторону какого мода копать, вот это хреново. Автор то может быть и поймет что-то в таких логах (хотя маловероятно), но даже опытный пользователь определить причину такого "выброса" не в состоянии, и соответственно конфликт если и будет решаться, то методом "тыка", но никак не нормальным образом. Ну ты уж какую-то идилию развёл. Прям социализм в действии - всё вокруг советское, все вокруг моё. Не это явно не нормально, чтоб каждый кому не лень мог чужие моды ковырять и делать с ними всё что ему заблагорассудиться. А вот кто-то этим правилом пренебрегает, вот в чем проблема. Вообще-то он имел ввиду, что либо-либо. Если хочется максимум доп. инфы, то попрощайтесь с защитой. А если хотите контролировать доступ, то не обессудитьте что ни какой доп. инфы вам доступно не будет. Это две противоположности. С нешифрованными модами проще - они нормально декомпилируются и трассировка у них нормальная. Вот тут ты прав, нельзя не согласиться... "Дома без охраны и сигнализации обносить гораздо проще..." сказал с умным видом гопарь-норкоша. И ведь он тоже прав! Не поспоришь. Только вот какая-то черная правда получается. А зашифровать так, чтобы и дебаг был нормальным, и защита была нормальной - это скилл. Защита - это такая вещь, что ее нужно либо делать по-нормальному (с нормальным дебагом), либо не делать вообще. Иначе в итоге получается то, что я постил. Ты сам-то понял что написал? Сделать сейф и раздать всем желающим его чертежи и описание - это не скилл - это наивная глупость и явное не понимание сути вопроса. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #243511 Posted January 12, 2015 Ну ты уж какую-то идилию развёл. Прям социализм в действии - всё вокруг советское, все вокруг моё. Не это явно не нормально, чтоб каждый кому не лень мог чужие моды ковырять и делать с ними всё что ему заблагорассудиться.Речь идет об определении что и с чем конфликтует и решении проблемы через конфиги / удаление менее нужного. Тем более Вообще-то он имел ввиду, что либо-либо. Если хочется максимум доп. инфы, то попрощайтесь с защитой. А если хотите контролировать доступ, то не обессудитьте что ни какой доп. инфы вам доступно не будет. Это две противоположности.Можно сделать и защиту норм, и отладку более-менее нормальную. Просто нужно обфускацию прогонять только по локальным переменным, глобальным давать специальные имена, и в пакерах codeObject создавать с нормальным именем файла. Там всего три параметра - файл, строка, метод. Строкой и методом можно пренебречь. Но файл должен указываться (имя файла-мода), чтоб был виден источник ошибки. Ты сам-то понял что написал? Сделать сейф и раздать всем желающим его чертежи и описание - это не скилл - это наивная глупость и явное не понимание сути вопроса.Суть вопроса я как раз понимаю. В отладке пишется файл, метод и строка. Для пользователя важно по сути только имя файла (узнать в каком моде лаги). Остальное нужно автору для устранения ошибки, когда ему лог скинут. Из этих соображений можно грамотно изменять lnotab с учетом изменения кода, а глобальным именам давать названия, понятные только автору (как в СССР с секретными хим. соединениями) (грамотно подменять по списку соответствия varnames или просто изначально давать им не понятные посторонним названия). Ибо самая мощная защита - это не крипто-алгоритм, а грамотный человек. Хотя индусы тоже криптовать умеют) Quote Share this post Link to post Short link Share on other sites
BossBox 14 #243514 Posted January 12, 2015 (edited) А вот кто-то этим правилом пренебрегает, вот в чем проблема. А потом ищи причину лагов, вылетов, перегрузок по процессору и памяти, просадок фпс. С нешифрованными модами проще - они нормально декомпилируются и трассировка у них нормальная. Обфускатор имен уничтожает трассировку, косой пакер тоже, обфускатор байт-кода может сбивать номера строк в трейсе (последнее имеет значение только для автора). А зашифровать так, чтобы и дебаг был нормальным, и защита была нормальной - это скилл. Защита - это такая вещь, что ее нужно либо делать по-нормальному (с нормальным дебагом), либо не делать вообще. Иначе в итоге получается то, что я постил. Try и Except, никто не отменял с дополнительными выходными параметрами на определенный вид ошибок (если сложно без них). Достаточно вставить в 1 место и обработать под разные распространены ошибки, дальше уже твой код, если ты в нем не ориентируешься. Edited January 12, 2015 by BossBox Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #243516 Posted January 12, 2015 Try и Except, никто не отменял с дополнительными выходными параметрами на определенный вид ошибок (если сложно без них). Достаточно вставить в 1 место и обработать под разные распространены ошибки, дальше уже твой код, если ты в нем не ориентируешься.Не совсем понял, к чему тут о try-except-finally. Про это мне кажется все знают). Речь идет о том, что некоторые защиты "портят" логи и идентифицировать лагающий мод невозможно. 2 2 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #243519 Posted January 12, 2015 (edited) Тем более Про лицензионное соглашение забыл. Сначала идет оно и то что в нем определено, а потом уже выдержка из статьи, которая и определяет все вопросы не оглашенные и не урегулированные в соглашении. Можно сделать и защиту норм, и отладку более-менее нормальную. Просто нужно обфускацию прогонять только по локальным переменным, глобальным давать специальные имена, и в пакерах codeObject создавать с нормальным именем файла. Там всего три параметра - файл, строка, метод. Строкой и методом можно пренебречь. Но файл должен указываться (имя файла-мода), чтоб был виден источник ошибки. Вот ты опять пишешь о том с чем не сталкивался. Обфускацию нуно делать так чтоб вообще ни черта извлечь нельзя было ни каких читабельных имен и ни какой дебаг-инфы. Это и есть один из признаков качества сокрытия. А иначе её тогда вообще нет смысла делать. Только время впустую тратить. Если ты попытаешься что-то оставить в скрипте, то это сразу даст минус защите, она станет уязвимой. Ибо любая полезная инфа, оставленная обфускатором - это уязвимость. Думаю нуно тебе копать не в сторону - "ребята делайте обфускаторы более уязвимыми", а в сторону - "надо бы доработать дебаггер чтоб и с защищенными скриптами можно было маломальски комфортно работать". Из этих соображений можно грамотно изменять lnotab с учетом изменения кода Старый список будет не валиден из-за изменения байт-кода, а сделать новый список с учетом нового положения оп-кодов - это убить свою защиту на повал из ружья своими же руками. а глобальным именам давать названия, понятные только автору Ну опять же ты просишь ослабить защиту. Ну это же противоречит самим принципам защиты - максимально все скрыть. Ибо самая мощная защита - это не крипто-алгоритм, а грамотный человек. Хотя индусы тоже криптовать умеют) Завязывай эти Гоголевские чтения )))) Может реально стоит нормальный дебаггер поискать или доработать. Нуно отследить кашу малу в логе. Кидаем его и запускаем. Дальше он отмониторит. Кстати видел статью вроде на хабре про снифер выполняющегося кода? Там какие-то преподы делали в познавательных целях. Выложили исходники. Нашёл. Edited January 12, 2015 by StranikS_Scan 1 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #243521 Posted January 12, 2015 Про лицензионное соглашение забыл. Сначала идет оно и то что в нем определено, а потом уже выдержка из статьи, которая и определяет все вопросы не оглашенные и не урегулированные в соглашении.Сначала идет закон. По крайней мере в РФ. И никакое соглашение не может ему противоречить. А это статья из ГК. Думаю нуно тебе копать не в сторону - "ребята делайте обфускаторы более уязвимыми", а в сторону - "надо бы доработать дебаггер чтоб и с защищенными скриптами можно было маломальски комфортно работать".Ага. Обучать дебаггер качественно форматировать рандомный текст в имени файла.) Дебаггер и так качественно сделан. Ну опять же ты просишь ослабить защиту. Ну это же противоречит самим принципам защиты - максимально все скрыть.Я говорю не о том, чтобы оставить глобальные имена незашифрованными, а шифровать их по-особому, то есть обратимо для автора. Список или старый советский метод) Чтобы можно было нормально парсить логи. Завязывай эти Гоголевские чтения ))))Я тут Гоголя не цитировал) Кстати видел статью вроде на хабре про снифер выполняющегося кода? Там какие-то преподы делали в познавательных целях. Выложили исходники. Нашёл.Хук на __import__ и возвращать враппер на объект. В обертке перехватывать всю внешку. Так половину модов можно и не ломать защиту - по внешней активности все понятно будет) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #243524 Posted January 12, 2015 (edited) Сначала идет закон. Вот и найди в законе статью о лиц. соглашениях. Ага. Обучать дебаггер качественно форматировать рандомный текст в имени файла.) Дебаггер и так качественно сделан. Ну как я понимаю кактус сейчас у тебя в огороде растет, у меня проблем таких нет. Так что мне как бы оно чисто разговор поддержать. Может тебе полегчает ))) то есть обратимо для автора. Ключевое слово подчеркнул. Хук на __import__ Жалко не прокатит. Протекторы присекают такие вещи. Edited January 12, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites