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

 

 

PS Не используй в качестве префикса двойное нижнее подчеркивание - это приводит к проблемам внутри классов. PPS Вот такая штука приводит к неправильной работе обфускатора:

 

Подправил и то и другое. Тест перезалил.

 

ЗЫ: Ссылка на тест есть в первом посте.


Теперь столкнулся с проблемой распухания скрипта после обфускации текста )))))) Скрипт на 800 строк, а буфер на 5000 строк. Фиг дождешься когда Орион скомпилит защищенный файл. Придутся выносить функцию(ии) расшифровки строк из массива и вызывать её в начале скрипта. По другому раздутую кодовую части не уменьшить.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Если я ставлю протектор на код игры (cameranode) то вылет

На кой в загрузчике протектор?! Его там в принципе не должно быть. Это публичный модуль, используемый для загрузки модов, и писать в нем свой код инициализации недопустимо по соображениям совместимости. А открытым его делают для того, чтобы для каждого автора было видно, под каким именем грузится его скрипт в модули игры и каким образом, что происходит при ошибке и т.д. И не является ли загрузчик причиной багов в твоем моде. Класс в этом модуле вряд ли кому в принципе нужен, да и чтобы его пропатчить, не обязательно лезть в сам файл. Я еще не сказал то, что почти в каждом скриптовом моде есть в комплекте загрузчик, и целевая аудитория как-то не парится и кидает все файлы с заменой, поскольку не в теме, что и для чего надо. И твой супер-индусский скрипт просто затрут ко всем **** и забудут про него. Если тебе прям нужен специальный код загрузки - кидаешь его отдельным файлом как мод в папку скриптов-модов.

А то вот такие товарищи понапатчат загрузчики, понакидают протекторов сверху, и сиди разбирайся потом, что за хрень происходит... И так уже разнообразных скриптов вагон...

Теперь столкнулся с проблемой распухания скрипта после обфускации текста )))))) Скрипт на 800 строк, а буфер на 5000 строк. Фиг дождешься когда Орион скомпилит защищенный файл. Придутся выносить функцию(ии) расшифровки строк из массива и вызывать её в начале скрипта. По другому раздутую кодовую части не уменьшить.

А если все данные сохранить компактным кортежем и потом просто грамотно применить for/(map + lambda) для расшифровки, на входе кортеж кортежей, на выходе кортеж строк, обращение в коде по индексам. Насколько я понял, у тебя шифровка каждого символа идет двумя числами? Размер одной большой структуры в памяти значительно меньше ведь, чем кучи мелких. Не думаю что дополнительный запрос по индексу много съест производительности, зато в globals() будет поменьше элементов и этот словарь, ИМХО, будет работать быстрее.

И еще. Если идет сложение больших количеств символов, а насколько я понял, это именно так, то возможно, нехилое повышение производительности вычислений даст использование bytearray, с последующим конвертированием в строку, т.к. строка является неизменяемым объектом, питон выполняет операции поэтапно, и каждый раз перевыделяет память под новый объект. ИМХО.

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Странник, в какую сторону копать если оюфускация ломает рантайм? На реальном проекте не получится, ибо охулиард строк, но сама обфускация если есть, то должна содежрать инструкции. 


Странник, в какую сторону копать если оюфускация ломает рантайм? На реальном проекте не получится, ибо охулиард строк, но сама обфускация если есть, то должна содежрать инструкции. 

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


А то вот такие товарищи понапатчат загрузчики, понакидают протекторов сверху, ...................

и получат в 70% безлоговый вылет по рандомному поводу))

Share this post


Link to post

Short link
Share on other sites
Написал коряво, но чуть проще это звучит так - если наложить обфускацию на код, который выполнятся минимум в 2 шага - то в итоге получается херня.

 

Еще раз. Речь идет об обфускации текста из 1.3.1TEST или об обфускации байт-кода или о протекторе байткода? 

ЗЫ: Не знаю по теме или нет, но моды вида a=123;print с обфускацией байткода в игре как правило не работают и приводят к вылету игры, причины я не знаю, лечиться юзанием какого-либо импорта в начале, например import BigWorld

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Еще раз. Речь идет об обфускации текста из 1.3.1TEST или об обфускации байт-кода или о протекторе байткода? 

Где у тебя там в текстах история версий? Писать надо для не местных. Сейчас перепроверю,.

Edited by Polar Fox

Share this post


Link to post

Short link
Share on other sites

Где у тебя там в текстах история версий? Писать надо для не местных. Сейчас перепроверю,.

 

Опять не понял тебя. В первом посте есть история версий Ориона. Но при чем тут она?

Там же ссылка на тест есть, крупным шрифтом.

Share this post


Link to post

Short link
Share on other sites

ЗЫ: Не знаю по теме или нет, но моды вида a=123;print с обфускацией байткода в игре как правило не работают и приводят к вылету игры, причины я не знаю, лечиться юзанием какого-либо импорта в начале, например import BigWorld

 

А ещё от вылетов и фризов помогает импорт/делете шрифта (конкретную работу и нюансы могу в лс написать, тут не хочу). Я много на это времени убил пока не понял что надо сделать(((

Share this post


Link to post

Short link
Share on other sites

А ещё от вылетов и фризов помогает импорт/делете шрифта (конкретную работу и нюансы могу в лс написать, тут не хочу). Я много на это времени убил пока не понял что надо сделать(((

 

Ну напиши в лс. Погляжу о чем речь. Хотя не думаю что это общий случай, скорее частный. Вся ботва началась с патча, в котором они BW обновили, после чего у них пропала куча перехватчиков и обработчиков эксепшенов в движке питона, краши клиента можно было ловить просто на ошибках в питоне, причем тех, которые раньше стабильно локализовывались его движком.

Share this post


Link to post

Short link
Share on other sites

Опять не понял тебя. В первом посте есть история версий Ориона. Но при чем тут она?

 

Т.е. по основной ссылке я получу версию которая ничего не ломает? Даладно))

Share this post


Link to post

Short link
Share on other sites

Т.е. по основной ссылке я получу версию которая ничего не ломает? Даладно))

 

Ты можешь порусски написать, о какой версии ты говоришь и о какой функции Ориона ты пишешь?

Какая версия? 1.3.0 или 1.3.1TEST?

О какой обфускации ты говоришь? Обфускация текста? Обфускация байткода? Или о протекторе байткода?

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Ну напиши в лс. Погляжу о чем речь. Хотя не думаю что это общий случай, скорее частный. Вся ботва началась с патча, в котором они BW обновили, после чего у них пропала куча перехватчиков и обработчиков эксепшенов в движке питона, краши клиента можно было ловить просто на ошибках в питоне, причем тех, которые раньше стабильно локализовывались его движком.

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

Ты можешь порусски написать, о какой версии ты говоришь и о какой функции Ориона ты пишешь?

Какая версия? 1.3.0 или 1.3.1TEST?

О какой обфускации ты говоришь? Обфускация текста? Обфускация байткода? Или о протекторе байткода?

Блин, там с байткодом проблемы. Особенно в плане передачи ссылок Причем большие проблемы. Завтра как протрезвею напишу более четко))

Edited by Polar Fox

Share this post


Link to post

Short link
Share on other sites

 

 

Блин, на с байткодом проблемы. Особенно в плане передачи ссылок Причем большие проблемы. Завтра как протрезвею напишу более четко))

 

Иди трезвей, так как я ни фига не могу врубиться в твою писанину. "на" - это "не" или "да"???

 

Что касается ссылок, то я не знаю что ты сейчас по этим словом подразумеваешь, но если ты решил юзать из вне обфусцированный модуль после его импорта, то в протектора перед его наложением надо убрать галочку "Lock attr review...". Иначе извне ты доступа к атрибутам запротектированного модуля не получишь. 

Share this post


Link to post

Short link
Share on other sites

ЗЫ: Не знаю по теме или нет, но моды вида a=123;print с обфускацией байткода в игре как правило не работают и приводят к вылету игры, причины я не знаю, лечиться юзанием какого-либо импорта в начале, например import BigWorld

Из серии "запилить запилил, как работает не знаю".

Share this post


Link to post

Short link
Share on other sites

Иди трезвей, так как я ни фига не могу врубиться в твою писанину. "на" - это "не" или "да"???

 

Что касается ссылок, то я не знаю что ты сейчас по этим словом подразумеваешь, но если ты решил юзать из вне обфусцированный модуль после его импорта, то в протектора перед его наложением надо убрать галочку "Lock attr review...". Иначе извне ты доступа к атрибутам запротектированного модуля не получишь. 

 Короче вот, у меня в ближайшие 2-3 дня времени будет мало, но на неделе доделаю свою маленькую статью про орион (респект, кстати, за такой огромный труд) и питон картошки (в основном про способы передачи матриц, или почему говнорентген вылетает у каждого)) ). Я немало угробил шишек на своем хребту набивая этот опыт, мб, кому-то будет полезно. И там же впендюрю то, о чем мы выше с тобой говорили.. Может для тебе тебя это будет частично (а тои вдруг полнстью) копетанством, но часть авось пригодится) НЯЗ тема шейдеров не поднималась в последнее время, а зря, там можно очень многое сделать...

До конца след.недели допишу.

Извинямс за простыню и сумбур, ещё не отошел)

Из серии "запилить запилил, как работает не знаю".

Вылетает потому что картошкин эдж, это текстурирование, но не на уровне флеша, где оно рисуется нативными средствами Scaleform (что, кстати, не так уж плохо, и может быть очень быстро), а на уровне С, где это рисуется координатами в пересечении матриц вида(камеры) и абсолютных(начиная с какого то патча это условно-абсолютные) значений (причем координаты для рисования передаюится в виде транспонированной (sic!) матрицы)

Edited by Polar Fox

Share this post


Link to post

Short link
Share on other sites

 

 

говнорентген вылетает у каждого))

 

Эээ, у нас рентегены не вылетают, мы их еще в запрошлом патче починили чтоб не вылетали, и да там косяк с матрицами был.

 

 

 

а зря, там можно очень многое сделать..

 

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

Share this post


Link to post

Short link
Share on other sites

где это рисуется координатами в пересечении матриц вида(камеры) и абсолютных(начиная с какого то патча это условно-абсолютные) значений (причем координаты для рисования передаюится в виде транспонированной (sic!) матрицы)

Клиент дизассемблировал? Просто ЕМНИП интерфейс управления EdgeDetect'ом это две функции-метода модуля BigWorld.

BigWorld.wgDelEdgeDetectEntity
BigWorld.wgAddEdgeDetectEntity
И матрицы тут никак не передаются.

Share this post


Link to post

Short link
Share on other sites

 

 

Клиент дизассемблировал?

 

Он про механизм отрисовки. Внутри в движке, там по матрицам считается. Их не надо ни куда передавать, entity - это же и есть уровень движка.

Share this post


Link to post

Short link
Share on other sites

Внутри в движке, там по матрицам считается.

Ну так в BW наверное почти все считается матрицами. А что есть настолько крутые декомпиляторы, что прям так неплохо разбирают? Или сорцы картохи невзначай просочились? Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Ну так в BW наверное почти все считается матрицами. А что есть настолько крутые декомпиляторы, что прям так неплохо разбирают? Или сорцы картохи невзначай просочились?

 

Сишный код чего там разбирать-то? Вон даже плагин есть X-ray вроде к Аиде чтоб реверс делать.

Почему антивирус ругается на exe-injector?

 

Потому что нубоантивирус, кэп.

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