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

@Dkmn, а у меня под клиентом он даже и не запускается. Как ты его запустил??? 

 

Нашел причину - опять папка Projects.

Почему нет квери-окна - это хз.

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

Edited by Dkmn

Share this post


Link to post

Short link
Share on other sites

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

 

Ну... это клиент игры... мало ли чего там у них и как.... может там блокировка какая стоит от дебаггеров... а может косяк какой... кто его там знает.

Share this post


Link to post

Short link
Share on other sites

Ну... это клиент игры... мало ли чего там у них и как.... может там блокировка какая стоит от дебаггеров... а может косяк какой... кто его там знает.

 

сделал как описано - получилось так :

 

*** Decompilation started, output buffering is enabled, please wait...

***

*** Decompilation completed, output buffering is disabled!

***

*** name 'AutoExtinguisher' is not defined

 

что бы это значило ?

Share this post


Link to post

Short link
Share on other sites

сделал как описано - получилось так :

 

*** Decompilation started, output buffering is enabled, please wait...

***

*** Decompilation completed, output buffering is disabled!

***

*** name 'AutoExtinguisher' is not defined

 

что бы это значило ?

 

1. Вы пропустили шаг №3.

Вы сейчас находитесь в модуле wottransmission.transmitter, а ваш AutoExtinguisher находиться в модуле-папке mods. Ну дык его надо сначала импортировать в окружение текущего модуля:

 

from mods import AutoExtinguisher

 

а потом уже декомпилировать.

 

2. Есть и второй вариант, если по каким-то причинам делать import нельзя/не_хочется, то надо на декомпиляцию отправлять не имя модуля AutoExtinguisher, которое не существует, а ссылку на него самого из системного списка модулей вот так например:

 

sys.modules["mods.AutoExtinguisher"]

 

Теперь выделяем это предложение полностью и жмякаем WOT-Transmission ->...-> Decompile selected Object (PyRetic)

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Что за беда , НОЛЬ модов , перестал грузить реплеи (((

>>> Start the game...
*** WOT-Transmission initialization completed!
*** You are in the wottransmission.transmitter, use a WOT-Transmission menu command to work with the client
*** =====================================================================================
*** [NOTE] (scripts/common/fortified_regions.py, 130): fortified_regions.init()
*** [NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 4 was selected.
*** [NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 3 was selected.
*** PostProcessing.Phases.fini()
>>> WOT-Transmission closed

Share this post


Link to post

Short link
Share on other sites

1. Вы пропустили шаг №3.

Вы сейчас находитесь в модуле wottransmission.transmitter, а ваш AutoExtinguisher находиться в модуле-папке mods. Ну дык его надо сначала импортировать в окружение текущего модуля:

 

from mods import AutoExtinguisher

 

а потом уже декомпилировать.

 

2. Есть и второй вариант, если по каким-то причинам делать import нельзя/не_хочется, то надо на декомпиляцию отправлять не имя модуля AutoExtinguisher, которое не существует, а ссылку на него самого из системного списка модулей вот так например:

 

sys.modules["mods.AutoExtinguisher"]

 

Теперь выделяем это предложение полностью и жмякаем WOT-Transmission ->...-> Decompile selected Object (PyRetic)

 

Получилось так :

 

*** def updateModuleRepair(self, module, percents, seconds):

*** self('updateModuleRepair', [module, percents, seconds])

***

*** def updateSpeed(self, speed):

*** self._DamagePanel__speed = speed

*** self('updateSpeed', [speed])

***

*** def updateState(self, type, state):

*** LOG_DEBUG('[DamagePanel.updateState] type = %s state = %s' % (type, state))

*** self('updateState', [type, state])

***

***

***

*** def I1IIii1i11(self, idx, quantity, equipmentDescr):

*** tags = self <= equipmentDescr

*** tagName = None

*** tagName = > tags()

*** iconPath = equipmentDescr[0L]

*** keyCode = (None, None)

*** keyCode = tagName is not self(idx)

*** self('addEquipmentSlot', [idx, keyCode, keyChr, tagName, quantity, iconPath, toolTip])

*** return None

***

*** def II1iiiIii11(self, bool):

*** self('onFireInVehicle', [bool])

***

*** def o00o0ooOOO(idx):

***

***

*** def o0OOoo0Ooooo0(self, bool):

*** II1iiiIii11(self, bool)

*** del [:]

*** BigWorld()(oOo, 'extinguisher')

***

*** def ooO0O0oOOo00O(self, idx, quantity, equipmentDescr):

*** I1IIii1i11(self, idx, quantity, equipmentDescr)

*** o00o0ooOOO(idx)

***

***

*** Decompilation completed, output buffering is disabled!

 

А вот оригинал :

 

import BigWorld

from gui.Scaleform.Battle import ConsumablesPanel, DamagePanel

oOo = 0

 

def o00o0ooOOO(idx):

global oOo

oOo = idx

 

 

I1IIii1i11 = ConsumablesPanel.addEquipmentSlot

 

def ooO0O0oOOo00O(self, idx, quantity, equipmentDescr):

I1IIii1i11(self, idx, quantity, equipmentDescr)

if 'extinguisher' in equipmentDescr.tags:

o00o0ooOOO(idx)

 

 

ConsumablesPanel.addEquipmentSlot = ooO0O0oOOo00O

II1iiiIii11 = DamagePanel.onFireInVehicle

 

def o0OOoo0Ooooo0(self, bool):

II1iiiIii11(self, bool)

if oOo != 0:

BigWorld.player().onEquipmentButtonPressed(oOo, 'extinguisher')

 

 

DamagePanel.onFireInVehicle = o0OOoo0Ooooo0

 

В общем результат оставляет желать лучшего.

Я что-то сделал не так или точнее декомпилить не получиться ?

Share this post


Link to post

Short link
Share on other sites

Что за беда , НОЛЬ модов , перестал грузить реплеи (((

 

Проверь тот ли клиент загружает Орион какой нужно. Сомневаюсь что косяк с Орионом или с WOT-Transmission.

 

 

 

В общем результат оставляет желать лучшего. Я что-то сделал не так или точнее декомпилить не получиться ?

 

Всё сделали правильно... Ну вот так PyRetic и работает. Почему такой "страшный" код я хз. Мне кажется он не доделанный или просто под Питон 2.6 заточен или еще чего... Я заюзал самую последнюю его версию 5.1, однако проект уже пару лет заброшен... если найдёте альтернативу, или аналогичный проект, пишите сюда, я его прикручу к Ориону.  

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Проверь тот ли клиент загружает Орион какой нужно. Сомневаюсь что косяк с Орионом или с WOT-Transmission.

 

Перестанавливал Винду и соответственно игру .

Сейчас попробую новых реплеев наделать .

Пере установил игру , записал пару новых реплеев ,запускаю с того же клиента (стоит 2 , играть и ковырять) то же самое , загрузка и вылет .

Share this post


Link to post

Short link
Share on other sites

Пере установил игру , записал пару новых реплеев ,запускаю с того же клиента (стоит 2 , играть и ковырять) то же самое , загрузка и вылет .

 

Запусти сначала просто этот реплей на нужном клиенте без Ориона и глянь python.log, будет там инфа о модах или нет. Если всё будет гуд, то зайди в Орион в WOT-Trans -> Options и задай путь к папке с нужной игрой. После этого проблем быть не должно.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Чистый клиент  , реплей сделан на чистом клиенте без модов 

'лог'

BigWorld Release Client (compiled at 19:03:39 Jun 17 2014) starting on Mon Jul 14 17:16:28 2014

Checking ./res_mods/0.9.1: mods not found
[NOTE] (scripts/common/fortified_regions.py, 130): fortified_regions.init()
[NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 4 was selected.
[NOTE] (scripts/client/post_processing/__init__.py, 275): The quality = 3 was selected.
[sPACE] Loading space: spaces/hangar_v2
[WARNING] (scripts/client/account_helpers/CustomFilesCache.py, 33): Method "__run_read" takes too much time 0.262000083923
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=44.7697398006, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=84.6879843199, databaseID=0, error=TIMEOUT),)
[sPACE] Loading space: spaces/13_erlenberg
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=154.842077322, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=194.737063822, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=234.740101634, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=274.723101944, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=314.737102462, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=359.826103339, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=399.816104127, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=444.724280318, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=484.73228065, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=524.736145491, databaseID=0, error=TIMEOUT),)
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=564.818145226, databaseID=0, error=TIMEOUT),)
[sPACE] Loading space: spaces/hangar_v2
[WARNING] (scripts/client/messenger/proto/xmpp/connection.py, 137): Received chat token is not valid (ChatTokenResponse(receivedAt=629.668721452, databaseID=0, error=TIMEOUT),)
PostProcessing.Phases.fini()

 

Понавылазило чёрт знает что . И откуда оно только берётся .

Указал ЕХЕ на тот же клиент что и делал реплей , всё также , загрузка и вылет .

Edited by o-0-0-0

Share this post


Link to post

Short link
Share on other sites

Да это я в курсе Lportii фикс делал на это .

А чё реплеи перестали запускатся на проге в ум взять не могу .

Share this post


Link to post

Short link
Share on other sites

@o-0-0-0, проверь файл  paths.xml, там папка res_mods прописана? Ни чего лишнего в нём нет?

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

@o-0-0-0, проверь файл  paths.xml, там папка res_mods прописана? Ни чего лишнего в нём нет?

<root>

  <Paths>

    <Path>./res_mods/0.9.1</Path>

    <Path>./res/packages/shared_content.pkg</Path>

    <Path>./res/packages/misc.pkg</Path>

    <Path>./res/packages/gui.pkg</Path>

    <Path>./res/packages/shaders.pkg</Path>

 

 

Думаю ничего лишнего (клиент на днях ставил , в папку 0.9.1 ещё ничего не положено .

Share this post


Link to post

Short link
Share on other sites

@o-0-0-0, может местоположение влияет, у тебя игра, реплей, орион - в путях русских или еще каких кривых символов не имеют?

 

Прям не знаю что за мистика.  

Share this post


Link to post

Short link
Share on other sites

назвал попку с игрой одной цифрой "1"  запустил клиент через Орион , попробую так записать реплей , реплей переименую в одну цифру .


Всё разобрался :)

Я запускал реплеи перенесённые в другую папку , а надо запускать с той же папке где они и должны лежать "replays" не куда реплеи не перемещая .

Мой косяк , извините за беспокойство .

Edited by o-0-0-0

Share this post


Link to post

Short link
Share on other sites

@o-0-0-0, может местоположение влияет, у тебя игра, реплей, орион - в путях русских или еще каких кривых символов не имеют?

 

Прям не знаю что за мистика.  

 

Привет, когда планируешь версию с обфускацией кода?

Share this post


Link to post

Short link
Share on other sites

назвал попку с игрой одной цифрой "1"  запустил клиент через Орион , попробую так записать реплей , реплей переименую в одну цифру .

Всё разобрался :)

Я запускал реплеи перенесённые в другую папку , а надо запускать с той же папке где они и должны лежать "replays" не куда реплеи не перемещая .

Мой косяк , извините за беспокойство .

 

Попку - это хорошо ы-ы-ы :)))))

 

Почему у тебя из чужой папки не запускает реплеи??? Я себя проверял - запускал реплей даже их папки с русскими символами через Орион и проблем не было.

 

Привет, когда планируешь версию с обфускацией кода?

 

Я прикинул что будет по обфускации - будут опционально, загрузчик кода, маскировщик имен переменных, констант, функций и т.д., маскировщик имен встроенных функций, классов, модулей и скрамблер на мусорных опкодах. По протектору, будет либо встраиваемый в pyc-файл либо внешний резидентный модуль скорее всего и то и то опционально.

 

Сижу делаю:

- есть свой загрузчик кода (пример его приводил в теме про декомпилицию)

- затем нашел модуль для замены имен переменных и констант,

- к нему надо еще прикрутить маскировщик имен встроенных функций (пример тоже обсуждался в теме про декомпилицию)

- вот пока нету скрамблера, который мусорные опкоды рассовывает, надо писать

- а по протектору модов я микрокомпактный резидентный модуль почти написал

 

Ну вот как-то так. Через неделю может чего и анонсирую из этого. Сейчас хочу релиз выложить 1.0.8. Там много правок и полезных мелочей.

Edited by StranikS_Scan
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

писал для себя программку на C#, декомпиляцию всех файлов в директории, закинул увидев что вы тут уже наделали:)

не знаю или пригодится вам держите метод поиска по всем папкам в указанной папке. По моему у вас декомпилит только в указанной папке.

private void FileSearchFunction(string Dir)
        {
          
        
                System.IO.DirectoryInfo DI = new System.IO.DirectoryInfo(Dir);
                System.IO.DirectoryInfo[] SubDir = DI.GetDirectories();
                for (int i = 0; i < SubDir.Length; ++i)
                    this.FileSearchFunction(SubDir[i].FullName);
                System.IO.FileInfo[] FI = DI.GetFiles();
                for (int i = 0; i < FI.Length; ++i)
                {
                    //MessageBox.Show(FI[i].FullName);
                    if (getFileExtension(FI[i].FullName) == "pyc")
                    {
                        decompile_FILE(FI[i].FullName);
                    }
                }
             
           
        }

Share this post


Link to post

Short link
Share on other sites

 

 

По моему у вас декомпилит только в указанной папке.

 

Нет, это не так. Декомпилятся все pyc-файлы и pyo-файлы, которые есть в папке и во вложенных подпапках.

 

 

 

не знаю или пригодится вам держите метод поиска по всем папкам в указанной папке.

 

Орион написан на Delphi.


Я использую вот такой классический алгоритм :))))

  //Список всех pyc-файлов в каталоге и подкаталогах
  procedure ScanDir(StartDir: string; List: TStringList);
  var SearchRec: TSearchRec;
  begin
  List.BeginUpdate;
  if StartDir[Length(StartDir)] <> '\' then
    StartDir := StartDir + '\';
  if FindFirst(StartDir + '*.*', faAnyFile, SearchRec) = 0 then
   begin
   repeat
    if ((SearchRec.Attr and faDirectory) <> faDirectory)and
       (SameText(ExtractFileExt(SearchRec.Name),'.pyc')or
        SameText(ExtractFileExt(SearchRec.Name),'.pyo')) then
      List.Add(StartDir + SearchRec.Name)
    else if (SearchRec.Name <> '..') and (SearchRec.Name <> '.')then
          ScanDir(StartDir + SearchRec.Name + '\', List);
   until FindNext(SearchRec) <> 0;
   FindClose(SearchRec);
   end;
  List.EndUpdate;
  end;

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