Jump to content
Korean Random
StranikS_Scan

PjOrion - редактирование, компиляция, декомпиляция, обфускация модов (Версия: 1.3.5 Дата: 11.08.2019)

Пользуетесь ли вы Орионом?  

310 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

Вот. После обфускации мод ломается, если просто протектор, то работает. Если всё вместе, соответственно, не пашет. Программа по стандарту, из "коробки так сказать", ни чего не меняю, просто открыл, обфускация, протект.

attachicon.gifRontgenBlur-master.zip

 

P.S. Или объясните, пожалуйста, как проблему избежать? Спасибо.

По-моему, дело не в обфускации, а в неудачном способе запуска скрипта.

Если в конце вместо:

def init():
	BigWorld.callback(2, delayInit)

Сделать:

ВigWorld.callback(2, delayInit)

Тогда обфускация не мешает ему запуститься.

Edited by sae

Share this post


Link to post

Short link
Share on other sites

Тогда обфускация не мешает ему запуститься.

 

То есть:

	BigWorld.callback(2, ModCallBack)

	return

	BigWorld.callback(2, delayInit)

	return

?

Edited by akey

Share this post


Link to post

Short link
Share on other sites
	BigWorld.callback(2, ModCallBack)

	return

ВigWorld.callback(2, delayInit)

В том посте специально написал так, чтобы были видны, где есть отступы, а где их нет (если вдруг, вы не очень хорошо в питоне).

В данном моде запуск производится через функцию init(), но при обфускации имена функций меняются и "волшебный" способ запуска перестаёт работать.

 

ЗЫ. Надеюсь, понимаете, что самый последний (самый нижний) return уже не нужен.

Edited by sae

Share this post


Link to post

Short link
Share on other sites

Да всё верно, если сделать обфускацию текста, то имя def init() будет заменено на другое. И тогда загрузчик не сможет вызвать <модуль>.init()

 

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

 

Так что стоит забить на init() и не пользоваться им, если планируется обфускация мода.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

@StranikS_Scan, давно хотел попросить галочку в Орионе, чтобы при старте программы он не линковался с питоном.

Очень тормознуто стартует. А среда питона в Орионе мне редко нужна.

 

 

Вопрос вот возник, а какая подсветка синтаксиса должна быть при отключенном подключении, сейчас она вырубается. И нужна вообще какая-то если подключения нет?

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Столкнулся с еще одной интересной ситуацией. О ней первоначально писал spoter. Короче многие наверно обратили внимание что название модулей в коде игры, могут иметь заглавные буквы, однако при этом файлы всех модулей в игре не содержат заглавных букв.

Например:

res\scripts\client\account.py и видим в нём

from account_helpers import AccountSyncData

идем по адресу и видим:

account_helpers\accountsyncdata.pyc

при этом в файле __init__.pyc ни чего про AccountSyncData нет.

Однако если глянуть что прописано в co_filename модуля accountsyncdata.pyc в любом редакторе можно увидеть искомую запись "scripts/client/account_helpers/AccountSyncData.py".

И вот вопрос - как питон в тынках считывает файл accountsyncdata.pyc при импорте модуля AccountSyncData?

 

Я попытался воспроизвести это вручную:

Запилил модуль a1.py с содержимым

from aaa import bBb

создал файлы

aaa\__init__.py
aaa\bBb.py

Содержащие: __init__.pyc слово pass, а bBb.py команду print 123

Затем скомпилил их, удалил все py, а bBb.pyc переименовал в bbb.pyc

Ну, а после этого сделал import a1 в Орионе, однако как и ожидалось словил ошибку, мол модуль bBb не существует (((

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

....

Регистронезависимость? Не?

Попробуй импортить accountsyncdata и AccountSyncData - результат будет одинаковый.

Edited by IzeBerg

Share this post


Link to post

Short link
Share on other sites
Регистронезависимость? Не? Попробуй импортить accountsyncdata и AccountSyncData - результат будет одинаковый.

 

У меня два подозрения, либо регистронезависимость включена в игре, либо юзается co_filename вместо имени фала. У меня в Орионе и как я понимаю в стандартном питоне ни чего такого нет. Как это включить и где?

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

У меня два подозрения, либо регистронезависимость включена в игре, либо юзается co_filename вместо имени фала. У меня в Орионе и как я понимаю в стандартном питоне ни чего такого нет. Как это включить и где?

Имхо. В игре включена. co_filename вообще никакой роли не играет. Можешь там хоть "ВасяПупкин" написать, клиенту пофиг.

Edited by IzeBerg

Share this post


Link to post

Short link
Share on other sites

Сел за ковыряние отрисовки текста в TSynEditor, так как уже самому захотелось начать уже юзать табуляцию в тексте да и велосипедная отрисовка всяких плющек через OnPaint уже дает тормоза. Разобрал по полочкам код отрисовки, в принципе он оказался весьма простым и довольно грамотно написанным.

 

В самых общих чертах выглядит вот так (для себя faq делал)
3. Механизм отрисовки строк
     PaintTextLines (LEVEL-0)
       [ComputeSelectionInfo]
       PaintLines (LEVEL-1)
         AddHighlightToken -----+ (LEVEL-2)
         PaintHighlightToken <--+
           [SetDrawingColors --> fTextDrawer.Color]
           PaintToken (LEVEL-3)
             [fTextDrawer.ExtTextOut]

 

Включил поддержка табуляции, кое-чего пришлось немного подработать, реализовал серую подсветку спец. символом, затем встроил подсветку отступов, сейчас сижу переношу в код компонента подсветку выделенных слов, подчеркивание заголовков def и class, подсветку скобок и т.д. Чтоб всё нативное было.

 

mBBkkaQ.png

Share this post


Link to post

Short link
Share on other sites

самому захотелось начать уже юзать табуляцию в тексте

табуляция не нужна!

через OnPaint уже дает тормоза

ибо нужно канвасом или Direct2D рисовать, хотя наверное канвасом и рисовалось(сам когда-то ICQ писал в Delphi и рисовал смайлы по Memo канвасом)...

Direct2D вроде нет в D7...

Давно пора с неё переезжать...

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

табуляция не нужна!

ибо нужно канвасом или Direct2D рисовать, хотя наверное канвасом и рисовалось...

Direct2D вроде нет в D7...

Давно пора с неё переезжать...

 

Еще как нужна, зацени как прикольно выглядит

YULgTdx.png

 

Там канвас используется, а непосредственно рисование идет через спец модуль SynTextDrawer, в котором есть класс рисовальщика, ему ссылка на канву окна передается. Я в него даже не залазил, оно мне и не надо. А OnPaint тоже самое по сути делает та же отрисовка по конве, но мне там приходиться до кучи лишнего кода писать, вот и тормоза. А когда в нативную часть залазишь, там всё есть под рукой и код в разы меньше становиться и тормоза исчезают. 

Share this post


Link to post

Short link
Share on other sites

Еще как нужна, зацени как прикольно выглядит

Ну не знаю.

Орион меня отучил от неё)

Share this post


Link to post

Short link
Share on other sites

Ну не знаю.

Орион меня отучил от неё)

 

Да у меня также, но вот попробовал табы и понял, что мы просто лишали себя удовольствия )))))) 

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Да у меня также, но вот попробовал табы и понял, что мы просто лишали себя удовольствия ))))))

И не только удовольствия... Берешь такой кусочек кода, где отступы по 2-3 пробела, вставляешь где 4 и ловишь ошибку. Ну или сидишь и добавляешь/удаляешь лишний пробел. А с табами все просто - один отступ - один символ. Нормально работают "стрелочки" (посвящается нелюбителям тянуться после набора на клавиатуре двумя руками ... к мышке для "передвинуть курсор"). Есть на хабре холивар по теме.

Share this post


Link to post

Short link
Share on other sites

И не только удовольствия...

Я уже начал ненавидеть Ваши табуляции

bitbucket их портит совсем(

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

bitbucket их портит совсем(

В плане портит? То что отображаются на сайте криво? Так это хрен бы с ним, я надеюсь ты не через сайт правки заносишь)))

Кстати, не пробовал делать

'Texture': (
    'normalMap',
    'diffuseMap',
    ...
    'crashTileMap'
),
Т.е. как со словарем ниже.

Плюс еще есть моменты касаемо настройки Git на локальном компе. Тут в двух словах не скажешь.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Кстати, не пробовал делать

То что нужно, совсем я что-то тупанул)

https://bitbucket.org/ShadowHunterRUS/tank-viewer-blender-addon/src/f67528c7cbb6ae4bcefbb491802e6890ce3289b1/blender_io_bigworld_model/common.py?at=master&fileviewer=file-view-default

Так это хрен бы с ним, я надеюсь ты не через сайт правки заносишь)))

Нотепэдплюсплюс + SourceTree ессно Edited by ShadowHunterRUS

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