StranikS_Scan 4,210 #291582 Posted September 10, 2015 PS Не используй в качестве префикса двойное нижнее подчеркивание - это приводит к проблемам внутри классов. PPS Вот такая штука приводит к неправильной работе обфускатора: Подправил и то и другое. Тест перезалил. ЗЫ: Ссылка на тест есть в первом посте. Теперь столкнулся с проблемой распухания скрипта после обфускации текста )))))) Скрипт на 800 строк, а буфер на 5000 строк. Фиг дождешься когда Орион скомпилит защищенный файл. Придутся выносить функцию(ии) расшифровки строк из массива и вызывать её в начале скрипта. По другому раздутую кодовую части не уменьшить. 2 Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #291590 Posted September 10, 2015 (edited) Если я ставлю протектор на код игры (cameranode) то вылетНа кой в загрузчике протектор?! Его там в принципе не должно быть. Это публичный модуль, используемый для загрузки модов, и писать в нем свой код инициализации недопустимо по соображениям совместимости. А открытым его делают для того, чтобы для каждого автора было видно, под каким именем грузится его скрипт в модули игры и каким образом, что происходит при ошибке и т.д. И не является ли загрузчик причиной багов в твоем моде. Класс в этом модуле вряд ли кому в принципе нужен, да и чтобы его пропатчить, не обязательно лезть в сам файл. Я еще не сказал то, что почти в каждом скриптовом моде есть в комплекте загрузчик, и целевая аудитория как-то не парится и кидает все файлы с заменой, поскольку не в теме, что и для чего надо. И твой супер-индусский скрипт просто затрут ко всем **** и забудут про него. Если тебе прям нужен специальный код загрузки - кидаешь его отдельным файлом как мод в папку скриптов-модов. А то вот такие товарищи понапатчат загрузчики, понакидают протекторов сверху, и сиди разбирайся потом, что за хрень происходит... И так уже разнообразных скриптов вагон... Теперь столкнулся с проблемой распухания скрипта после обфускации текста )))))) Скрипт на 800 строк, а буфер на 5000 строк. Фиг дождешься когда Орион скомпилит защищенный файл. Придутся выносить функцию(ии) расшифровки строк из массива и вызывать её в начале скрипта. По другому раздутую кодовую части не уменьшить.А если все данные сохранить компактным кортежем и потом просто грамотно применить for/(map + lambda) для расшифровки, на входе кортеж кортежей, на выходе кортеж строк, обращение в коде по индексам. Насколько я понял, у тебя шифровка каждого символа идет двумя числами? Размер одной большой структуры в памяти значительно меньше ведь, чем кучи мелких. Не думаю что дополнительный запрос по индексу много съест производительности, зато в globals() будет поменьше элементов и этот словарь, ИМХО, будет работать быстрее. И еще. Если идет сложение больших количеств символов, а насколько я понял, это именно так, то возможно, нехилое повышение производительности вычислений даст использование bytearray, с последующим конвертированием в строку, т.к. строка является неизменяемым объектом, питон выполняет операции поэтапно, и каждый раз перевыделяет память под новый объект. ИМХО. Edited September 10, 2015 by GPCracker Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #291813 Posted September 11, 2015 Странник, в какую сторону копать если оюфускация ломает рантайм? На реальном проекте не получится, ибо охулиард строк, но сама обфускация если есть, то должна содежрать инструкции. Странник, в какую сторону копать если оюфускация ломает рантайм? На реальном проекте не получится, ибо охулиард строк, но сама обфускация если есть, то должна содежрать инструкции. Написал коряво, но чуть проще это звучит так - если наложить обфускацию на код, который выполнятся минимум в 2 шага - то в итоге получается херня. А то вот такие товарищи понапатчат загрузчики, понакидают протекторов сверху, ................... и получат в 70% безлоговый вылет по рандомному поводу)) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291815 Posted September 11, 2015 (edited) Написал коряво, но чуть проще это звучит так - если наложить обфускацию на код, который выполнятся минимум в 2 шага - то в итоге получается херня. Еще раз. Речь идет об обфускации текста из 1.3.1TEST или об обфускации байт-кода или о протекторе байткода? ЗЫ: Не знаю по теме или нет, но моды вида a=123;print с обфускацией байткода в игре как правило не работают и приводят к вылету игры, причины я не знаю, лечиться юзанием какого-либо импорта в начале, например import BigWorld Edited September 11, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #291818 Posted September 11, 2015 (edited) Еще раз. Речь идет об обфускации текста из 1.3.1TEST или об обфускации байт-кода или о протекторе байткода? Где у тебя там в текстах история версий? Писать надо для не местных. Сейчас перепроверю,. Edited September 11, 2015 by Polar Fox Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291820 Posted September 11, 2015 Где у тебя там в текстах история версий? Писать надо для не местных. Сейчас перепроверю,. Опять не понял тебя. В первом посте есть история версий Ориона. Но при чем тут она? Там же ссылка на тест есть, крупным шрифтом. Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #291821 Posted September 11, 2015 ЗЫ: Не знаю по теме или нет, но моды вида a=123;print с обфускацией байткода в игре как правило не работают и приводят к вылету игры, причины я не знаю, лечиться юзанием какого-либо импорта в начале, например import BigWorld А ещё от вылетов и фризов помогает импорт/делете шрифта (конкретную работу и нюансы могу в лс написать, тут не хочу). Я много на это времени убил пока не понял что надо сделать((( Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291822 Posted September 11, 2015 А ещё от вылетов и фризов помогает импорт/делете шрифта (конкретную работу и нюансы могу в лс написать, тут не хочу). Я много на это времени убил пока не понял что надо сделать((( Ну напиши в лс. Погляжу о чем речь. Хотя не думаю что это общий случай, скорее частный. Вся ботва началась с патча, в котором они BW обновили, после чего у них пропала куча перехватчиков и обработчиков эксепшенов в движке питона, краши клиента можно было ловить просто на ошибках в питоне, причем тех, которые раньше стабильно локализовывались его движком. Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #291823 Posted September 11, 2015 Опять не понял тебя. В первом посте есть история версий Ориона. Но при чем тут она? Т.е. по основной ссылке я получу версию которая ничего не ломает? Даладно)) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291824 Posted September 11, 2015 (edited) Т.е. по основной ссылке я получу версию которая ничего не ломает? Даладно)) Ты можешь порусски написать, о какой версии ты говоришь и о какой функции Ориона ты пишешь? Какая версия? 1.3.0 или 1.3.1TEST? О какой обфускации ты говоришь? Обфускация текста? Обфускация байткода? Или о протекторе байткода? Edited September 11, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #291825 Posted September 11, 2015 (edited) Ну напиши в лс. Погляжу о чем речь. Хотя не думаю что это общий случай, скорее частный. Вся ботва началась с патча, в котором они BW обновили, после чего у них пропала куча перехватчиков и обработчиков эксепшенов в движке питона, краши клиента можно было ловить просто на ошибках в питоне, причем тех, которые раньше стабильно локализовывались его движком. Ты не понял(( Я не собираюсь кого-то убеждать. Там не частный случай, а отдача на откуп глобальных функций, которые в итоге хоть и немного, но сказываются на производительности) Я могу рассказать что знаю, а как это применить это уже история каждого. Ты можешь порусски написать, о какой версии ты говоришь и о какой функции Ориона ты пишешь? Какая версия? 1.3.0 или 1.3.1TEST? О какой обфускации ты говоришь? Обфускация текста? Обфускация байткода? Или о протекторе байткода? Блин, там с байткодом проблемы. Особенно в плане передачи ссылок Причем большие проблемы. Завтра как протрезвею напишу более четко)) Edited September 11, 2015 by Polar Fox Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291826 Posted September 11, 2015 Блин, на с байткодом проблемы. Особенно в плане передачи ссылок Причем большие проблемы. Завтра как протрезвею напишу более четко)) Иди трезвей, так как я ни фига не могу врубиться в твою писанину. "на" - это "не" или "да"??? Что касается ссылок, то я не знаю что ты сейчас по этим словом подразумеваешь, но если ты решил юзать из вне обфусцированный модуль после его импорта, то в протектора перед его наложением надо убрать галочку "Lock attr review...". Иначе извне ты доступа к атрибутам запротектированного модуля не получишь. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #291838 Posted September 11, 2015 ЗЫ: Не знаю по теме или нет, но моды вида a=123;print с обфускацией байткода в игре как правило не работают и приводят к вылету игры, причины я не знаю, лечиться юзанием какого-либо импорта в начале, например import BigWorldИз серии "запилить запилил, как работает не знаю". Quote Share this post Link to post Short link Share on other sites
Polar Fox 16 #291842 Posted September 11, 2015 (edited) Иди трезвей, так как я ни фига не могу врубиться в твою писанину. "на" - это "не" или "да"??? Что касается ссылок, то я не знаю что ты сейчас по этим словом подразумеваешь, но если ты решил юзать из вне обфусцированный модуль после его импорта, то в протектора перед его наложением надо убрать галочку "Lock attr review...". Иначе извне ты доступа к атрибутам запротектированного модуля не получишь. Короче вот, у меня в ближайшие 2-3 дня времени будет мало, но на неделе доделаю свою маленькую статью про орион (респект, кстати, за такой огромный труд) и питон картошки (в основном про способы передачи матриц, или почему говнорентген вылетает у каждого)) ). Я немало угробил шишек на своем хребту набивая этот опыт, мб, кому-то будет полезно. И там же впендюрю то, о чем мы выше с тобой говорили.. Может для тебе тебя это будет частично (а тои вдруг полнстью) копетанством, но часть авось пригодится) НЯЗ тема шейдеров не поднималась в последнее время, а зря, там можно очень многое сделать... До конца след.недели допишу. Извинямс за простыню и сумбур, ещё не отошел) Из серии "запилить запилил, как работает не знаю". Вылетает потому что картошкин эдж, это текстурирование, но не на уровне флеша, где оно рисуется нативными средствами Scaleform (что, кстати, не так уж плохо, и может быть очень быстро), а на уровне С, где это рисуется координатами в пересечении матриц вида(камеры) и абсолютных(начиная с какого то патча это условно-абсолютные) значений (причем координаты для рисования передаюится в виде транспонированной (sic!) матрицы) Edited September 12, 2015 by Polar Fox Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291845 Posted September 12, 2015 говнорентген вылетает у каждого)) Эээ, у нас рентегены не вылетают, мы их еще в запрошлом патче починили чтоб не вылетали, и да там косяк с матрицами был. а зря, там можно очень многое сделать.. Ни чего там нельзя сделать... тем, кто программировать шейдеры не умеет, я например не в зуб ногой чем, что и куда там. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #291860 Posted September 12, 2015 где это рисуется координатами в пересечении матриц вида(камеры) и абсолютных(начиная с какого то патча это условно-абсолютные) значений (причем координаты для рисования передаюится в виде транспонированной (sic!) матрицы)Клиент дизассемблировал? Просто ЕМНИП интерфейс управления EdgeDetect'ом это две функции-метода модуля BigWorld. BigWorld.wgDelEdgeDetectEntity BigWorld.wgAddEdgeDetectEntityИ матрицы тут никак не передаются. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291865 Posted September 12, 2015 Клиент дизассемблировал? Он про механизм отрисовки. Внутри в движке, там по матрицам считается. Их не надо ни куда передавать, entity - это же и есть уровень движка. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #291915 Posted September 12, 2015 (edited) Внутри в движке, там по матрицам считается.Ну так в BW наверное почти все считается матрицами. А что есть настолько крутые декомпиляторы, что прям так неплохо разбирают? Или сорцы картохи невзначай просочились? Edited September 12, 2015 by GPCracker Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #291917 Posted September 12, 2015 Почему антивирус ругается на exe-injector? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #291920 Posted September 12, 2015 Ну так в BW наверное почти все считается матрицами. А что есть настолько крутые декомпиляторы, что прям так неплохо разбирают? Или сорцы картохи невзначай просочились? Сишный код чего там разбирать-то? Вон даже плагин есть X-ray вроде к Аиде чтоб реверс делать. Почему антивирус ругается на exe-injector? Потому что нубоантивирус, кэп. Quote Share this post Link to post Short link Share on other sites