StranikS_Scan 4,210 #305951 Posted December 19, 2015 (edited) format() ИМХО мощнее в разы. Он медленнее, а вот процент нативный же, из си взят. Edited December 19, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #305952 Posted December 19, 2015 Он медленнее, а вот процент нативный же, из си взят.Ну смотря что в данный момент важнее - скорость или функциональность. Не просто так этот формат добавили, от нечего делать. Видимо, было нужно. Значит, есть существенный смысл. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #305954 Posted December 19, 2015 Ну смотря что в данный момент важнее - скорость или функциональность. Не просто так этот формат добавили, от нечего делать. Видимо, было нужно. Значит, есть существенный смысл. Вот ты загнул, в питоне всё просто так сделано, 50% питона это вариация одних и тех же велосипедов во всевозможных формах. Всегда среди сотни велосипедов одного и того же по сути назначения в питоне есть самый быстрый и есть самый удобный. И они всегда в противоположных углах, так как сахар антипод скорости. Quote Share this post Link to post Short link Share on other sites
fecell 125 #306087 Posted December 20, 2015 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)) 1 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #306429 Posted December 21, 2015 (edited) Победил я в очередной раз проблему и приделал еще пару квадратных шестеренок в свой эллиптический велосипед. Если кто-то думает, что он знает, что такое велосипеды, то таки стоит ему прежде прочесть данный пост до конца.... Вообщем, полистав статейки, я восполнил пробелы в моём представлении всех тех махинаций, что проводит питон с кодировками. В делфи с эти вопросам я разобрался давным давно, а вот с питоном были проблемы. Опять таки начну издалека, как я писал раньше беда компонентов, которые я юзаю в делфи - это их не понимание юникода и работа исключительно в той локали, которая выставлена в системе как текущая (стандарт 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 December 21, 2015 by StranikS_Scan 1 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #306432 Posted December 21, 2015 Победил я в очередной раз проблему и приделал еще пару квадратных шестеренок в свой эллиптический велосипед.Как показывает практика, если кодер задействует квадратную шестеренку, значит оно наверняка стыкуется с каким-то квадратным компонентом. И наоборот. Если компонент квадратный, то без квадратных шестеренок никак. Вывод весьма простой - если не хотите квадратных шестеренок - не используйте квадратные компоненты. Правда, увы, не всегда получается((( 1 1 Quote Share this post Link to post Short link Share on other sites
Stealthz 21 #306475 Posted December 22, 2015 (edited) Тебя поза поза поза прошлом патче спрашивали - дырявый Орион или нет? Отмалчивался как девочка, и сделал крайнего что типа внёс в маршал сведения до всех протекторов и обфускаторов - ну типо прошло. Сейчас, что скажешь? Если полный декомпил идёт а ты сука молчишь и лошком себя делаешь... Вводи штоли инжект в игру против декомпила. На[мат] ты людей дрянь подводишь что твою [мат]ню декомпелируют за раз... Урод... Урод 1 раз - было, урод 2 раз - было. Урод сука признай нах и пошёл нах.. столько сука с тобой скриптов проебал.. Урод конченный. И заметь урод что я твои скрипты так и не спустил из интрудера. Нах ты вводишь людей в чайф. Ты сука тот кому за молчание головешку отбивать! Edited December 22, 2015 by Stealthz 2 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #306496 Posted December 22, 2015 (edited) Ду*ачок тут только один - это ты ЛСД, который за два года, КАРЛ! Так и не смог выучить азы питона, и до сих пор думает, что можно на питоне сделать какую-то мифическую "не взламываемую" защиту! Её даже в пентагоне нет, КАРЛ! Это каким недалеким надо быть, чтобы писать моды на питоне и ни капли не понимать как он работает. Я много раз писал, что есть только одна дырка - это дырка от кирпича в твоей голове, ЛСД. Ты читать не умеешь? Или тебе врачи читать запрещают и осмысливать? Если нет - то потрать таки каплю своего время, что ты тратить на глупое безделье, и загугли слово обфускация. Может почитав, до тебя наконец-то дойдет, что нет никаких защит в Питоне, КАРЛ! Есть только запутывание кода, который всегда можно "распутать". В этой теме все это знают, даже новички, кто только вчера начал писать на Питоне, даже они, КАРЛ! сходу схватывают что именно делает программа с кодом и почему в Питоне нельзя создать "нераспутываемый" код, но..... увы почему только ЛСД с дыркой от кирпича в голове до сих пор, КАРЛ!, не в курсе дела.... наверно утечка мозга идёт.... ты бы заткнул дырку какой тряпкой, глядишь и умнеть начнёшь.... а так бесполезно тебе что-то объяснять, у тебя в ухо вошло через дырку в голове вышло. Edited December 22, 2015 by StranikS_Scan 6 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #306651 Posted December 22, 2015 Форматы *.visual_processed и *.font добавлены в список распаковываемых программойнужно также добавить формат *.track Quote Share this post Link to post Short link Share on other sites
akey 35 #306655 Posted December 22, 2015 Вопрос. Можно как то через трансмитер логировать действие мода? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #306666 Posted December 23, 2015 Вопрос. Можно как то через трансмитер логировать действие мода? Нет. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #306688 Posted December 23, 2015 Вопрос. Можно как то через трансмитер логировать действие мода?Мод может писать сообщения в лог с префиксом. Потом берешь что-то типа grep... и получаешь свои логи. Quote Share this post Link to post Short link Share on other sites
fecell 125 #306832 Posted December 24, 2015 (edited) Потом берешь что-то типа grep... и получаешь свои логи. c:\games\world of tanks>find python.log "MY_MOD_NAME" >res.txt это имелось ввиду, наверное.. при условии что мод вывод в лог будет делать по типу print '[MY_MOD_NAME] %s' % logString Edited December 25, 2015 by fecell 2 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #306834 Posted December 24, 2015 это имелось ввиду, наверное.. при условии что мод вывод в лог будет делать по типуАбсолютно верно) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #307501 Posted December 27, 2015 Выложил новый exe-файл для второго теста - тыц. Промотайте пост по ссылке. Просьба проверить работу Minimize и проверить правильно ли будут обфусцироваться моды, содержащие строки с русским текстом. 2 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #307506 Posted December 27, 2015 (edited) @StranikS_Scan, давно хотел попросить галочку в Орионе, чтобы при старте программы он не линковался с питоном. Очень тормознуто стартует. А среда питона в Орионе мне редко нужна. Просьба проверить работу MinimizeШикарно. Просто шикарно. Как удалось это исправить? Заюзал питоновый минимайзер? Улучшил логику RegExp'ов? Edited December 27, 2015 by ShadowHunterRUS Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #307535 Posted December 28, 2015 (edited) ZorroJan нашел еще ошибку, когда комментарии в конце строк дописаны, я исправил, exe-файл перезалил, качайте - тыц. @StranikS_Scan, давно хотел попросить галочку в Орионе, чтобы при старте программы он не линковался с питоном.Очень тормознуто стартует. А среда питона в Орионе мне редко нужна.Шикарно.Просто шикарно.Как удалось это исправить? Заюзал питоновый минимайзер? Улучшил логику RegExp'ов? Добавлю. Как-как, переписал заново свой код на делфи и добавил туда анализ докстрингов на удаляемость. ЗЫ: Очень нужен какой-то пример питонового файла, чтоб в нем ну хотя бы 99 случаев из 100 всякого вида кода было, для теста минимайзера. А то замучился, как внесу исправление в одно место приходиться перепроверять другие. А был бы тестовый файл я бы мог меньше косячить и сразу видеть результат. Edited December 28, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
sae 2 #307536 Posted December 28, 2015 Строки с русским текстом при обфускации выводятся, но перестали выводиться при обычной компиляции. Изменение кодировки не помогает. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #307538 Posted December 28, 2015 Строки с русским текстом при обфускации выводятся, но перестали выводиться при обычной компиляции. Изменение кодировки не помогает. Нашел, косяк, подправлю. Еще раз перезалил exe-файл, исправил косяк с компиляцией - Тест #2с 1 Quote Share this post Link to post Short link Share on other sites
akey 35 #307540 Posted December 28, 2015 (edited) ЗЫ: Очень нужен какой-то пример питонового файла, чтоб в нем ну хотя бы 99 случаев из 100 всякого вида кода было, для теста минимайзера. А то замучился, как внесу исправление в одно место приходиться перепроверять другие. А был бы тестовый файл я бы мог меньше косячить и сразу видеть результат. Вот. После обфускации мод ломается, если просто протектор, то работает. Если всё вместе, соответственно, не пашет. Программа по стандарту, из "коробки так сказать", ни чего не меняю, просто открыл, обфускация, протект. RontgenBlur-master.zip P.S. Или объясните, пожалуйста, как проблему избежать? Спасибо. Edited December 28, 2015 by akey Quote Share this post Link to post Short link Share on other sites