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

В их Issues кинул эти баги?

 

Нет.

 

Сел копаться с AST .. там реально черт ногу сломит. Однако вот без приколов ни куда. Вывел в лог внутренние правила перехода от псевдо-инструкций (они слева) в AST-команды (они справа):

<<< {('START', ('|-', 'stmts')): 'ambda>',
<<<  ('_come_from', ()): 'list_comprehension',
<<<  ('_come_from', ('COME_FROM',)): 'list_comprehension',
<<<  ('_for', ('GET_ITER', 'FOR_ITER')): 'grammar',
<<<  ('_for', ('LOAD_CONST', 'FOR_LOOP')): 'grammar',
....

Первая же строка привлекает внимание багом в имени 'lambda' )))))))))) А ведь по эти правилам формируется из исходного псевдо-кода AST-дерево по которому генерируется питон-скрипт )))))

Share this post


Link to post

Short link
Share on other sites

Оффтоп: Альтернативный туториал-режим.

В сентябре здесь в теме выкладывал модик для случаев, когда тестирования в реплее недостаточно, а в бой идти неохота. С модом в "Боевое обучение" входим как в обычный бой (интерфейс, возможность активации снайперского прицела на старте и прочее).

В 0.9.14 мод перестал работать, ниже обнова.

#mod_tutorial_alt09E.py
from Avatar import PlayerAvatar

old_onBecomePlayerTA = PlayerAvatar.onBecomePlayer
def new_onBecomePlayerTA(self):
    if self.arenaGuiType == 4:
        self.arenaGuiType = 0
    old_onBecomePlayerTA(self)
PlayerAvatar.onBecomePlayer = new_onBecomePlayerTA

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

@MakcT40, в предпоследней строке неплохо бы дописать return на всякий, а так норм патч))

Хотя лично я обычно для этих целей через Sandboxie запускаю второй клиент и приглашаю тестового твинка в треню.)

Share this post


Link to post

Short link
Share on other sites

Можно и без "песочницы" через мультизапуск. Но лень же. ;)

 

Насчёт return - в оригинальной функции нет его, не стал ставить и в моде.

Edited by MakcT40

Share this post


Link to post

Short link
Share on other sites

 

 

в предпоследней строке неплохо бы дописать return на всякий

никаких "всяких" не будет.

def foo():
    pass

станет

LOAD_CONST, None
RETURN_VALUE, None

т.ч. смысла в синтаксическом сахаре нет.. ;)

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Не могу декомпилировать World_of_Tanks\res\scripts\client\account.pyc. Вернее декомпилировать могу но при компиляции обратно клиент перестает работать. Пробовал и Uncompyle2 и Decompyle++ и Fupy. Не работает. Причем после декомпиляции Decompyle++ скрипт даже не компилируеться обратно. Что я делаю не так, и как это исправить?

Share this post


Link to post

Short link
Share on other sites

Не могу декомпилировать World_of_Tanks\res\scripts\client\account.pyc. Вернее декомпилировать могу но при компиляции обратно клиент перестает работать. Пробовал и Uncompyle2 и Decompyle++ и Fupy. Не работает. Причем после декомпиляции Decompyle++ скрипт даже не компилируеться обратно. Что я делаю не так, и как это исправить?

 

Пытаешься скомпилировать декомпилированный скрипт.

 

Ни как не исправить. Декомпиляторы несовершенны и периодически выдают неверный код. Поэтому не стоит компилировать обратно такие скрипты. Так ни кто не делает. Нужно делать хуки на константы, функции и классы.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Не могу декомпилировать World_of_Tanks\res\scripts\client\account.pyc. Вернее декомпилировать могу но при компиляции обратно клиент перестает работать.

Прикладываю работающий после компиляции.

account09E_src.zip

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

После последнего микропатча перестал орион отображать лог. Странник поправь пожалуйста.

И ещё вопрос.

Когда мы увидим поправленную версию с починенным обфускатором

 

напоминаю, если забыл

 

 

[03.02.2016 22:31:34] ZorroJan: Скачал орион 132 кое что нашёл из багов
[03.02.2016 22:31:44] ZorroJan: в тест версии не было
[03.02.2016 22:31:50] ZorroJan: вот строка
[03.02.2016 22:31:53] ZorroJan: def isAlive(id):
return isOnArena()and BigWorld.player().arena.vehicles.get(id)['isAlive']
[03.02.2016 22:32:43] ZorroJan: попробуй сделать обфускацию сначало по структкре, потом по стринговым переменным
[03.02.2016 22:33:28] ZorroJan: после структуной будет кусок остаточный cles
[03.02.2016 22:33:36 | Изменены 22:33:43] ZorroJan: увидишь
[03.02.2016 22:37:07] StranikS_Scan: погляжу
[03.02.2016 22:38:10] StranikS_Scan: всё понятно из-за скобок, исправлю

 

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

Share this post


Link to post

Short link
Share on other sites

 

 

Когда мы увидим поправленную версию с починенным обфускатором

 

Как только вылезу из трясины ункомпил6. Вроде свет в конце туннеля очень близко. Еще чуть-чуть.

Share this post


Link to post

Short link
Share on other sites

*** Traceback (most recent call last):

*** File "C:\*\PjOrion\wottransmission.zip\wottransmission\transmitter.py", line 91, in orion_transfer_check

*** exec compile(code,'','exec') in sys.modules['__main__'].__dict__

*** File "", line 7

*** SyntaxError: can't assign to literal

 

импорт

Edited by REAL25

Share this post


Link to post

Short link
Share on other sites
exec compile(code,'','exec') in sys.modules['__main__'].__dict__

Во время компиляции кода (который в переменной code) возникла синтаксическая ошибка.

Смысл примерно такой:

1abc='Hello World!'

Название переменной ошибочное. Проверяй свой исходник.

Edited by fecell

Share this post


Link to post

Short link
Share on other sites

это сообщение появляется только при импорте WOT передатчик

после последнего патча микро

Edited by REAL25

Share this post


Link to post

Short link
Share on other sites

С новым файлом debug_utils.pyc в res_mods и работой трасмиттера все разобрались? Кто не разобрался еще, поясняю. Трансмиттер грузиться за счет хука на этот файл, т.е. на debug_utils.pyc. Если такой файл положить в res_mods (а трасмиттер в path.xml грузиться после папки res_mods), то Орион к клиенту не подключится.

 

Поэтому убирайте файл debug_utils.pyc из res_mods в папку res

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

С новым файлом debug_utils.pyc в res_mods и работой трасмиттера все разобрались? Кто не разобрался еще, поясняю. Трансмиттер грузиться за счет хука на этот файл, т.е. на debug_utils.pyc. Если такой файл положить в res_mods (а трасмиттер в path.xml грузиться после папки res_mods), то Орион к клиенту не подключится.

 

Поэтому убирайте файл debug_utils.pyc из res_mods.

Ох уж этот микропатч? =)

Share this post


Link to post

Short link
Share on other sites

Мне больше интересно для какой цели debug_utils.pyc вообще появился в клиенте? И сервера в нем прописаны, что то куда то слать :) особенно заинтересовал один из них, имеющий DNS имя :)

Share this post


Link to post

Short link
Share on other sites

Мне больше интересно для какой цели debug_utils.pyc вообще появился в клиенте? И сервера в нем прописаны, что то куда то слать :) особенно заинтересовал один из них, имеющий DNS имя :)

борьба со всплывшим трояном.

Share this post


Link to post

Short link
Share on other sites

Просто удивительно что затронули неприкосновенную, так сказать, папку.

Share this post


Link to post

Short link
Share on other sites

Просто удивительно что затронули неприкосновенную, так сказать, папку.

 

Засунули в res_mods так как это временное решение, перетаскивайте его в res.

 


 

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

< File: C:\Python27\Projects\0.9.14_136_Decompile_WOT\res_bw\scripts\common\lib\idlelib\a2.pyc
<<< ------------------------------------------------------------------
<<< ******************** code beginning (level 0) ********************
<<< discode[hexcode]:
<<< |   1           0 SETUP_LOOP                     [78 6D 00]   109 (to 112)
<<< |         >>    3 | LOAD_NAME                    [65 00 00]     0 (a)
<<< |               6 | LOAD_CONST                   [64 00 00]     0 (2)
<<< |               9 | COMPARE_OP                   [6B 00 00]     0 (<)
<<< |              12 | POP_JUMP_IF_FALSE            [72 6F 00]   111 
<<< |   2          15 | · SETUP_LOOP                 [78 57 00]    87 (to 105)
<<< |         >>   18 | · | LOAD_NAME                [65 01 00]     1 (b)
<<< |              21 | · | LOAD_CONST               [64 01 00]     1 (3)
<<< |              24 | · | COMPARE_OP               [6B 00 00]     0 (<)
<<< |              27 | · | POP_JUMP_IF_FALSE        [72 68 00]   104 
<<< |   3          30 | · | · LOAD_NAME              [65 01 00]     1 (b)
<<< |              33 | · | · LOAD_CONST             [64 02 00]     2 (1)
<<< |              36 | · | · COMPARE_OP             [6B 02 00]     2 (==)
<<< |              39 | · | · POP_JUMP_IF_FALSE      [72 30 00]    48 
<<< |   4          42 | · | · · JUMP_ABSOLUTE        [71 12 00]    18 
<<< |              45 | · | · · JUMP_ABSOLUTE        [71 12 00]    18 
<<< |   6     >>   48 | · | · SETUP_EXCEPT           [79 09 00]     9 (to 60)
<<< |   7          51 | · | · + LOAD_CONST           [64 02 00]     2 (1)
<<< |              54 | · | · + PRINT_ITEM           [47 -- --]
<<< |              55 | · | · + PRINT_NEWLINE        [48 -- --]
<<< |              56 | · | · + POP_BLOCK            [57 -- --]
<<< |              57 | · | · + JUMP_ABSOLUTE        [71 12 00]    18 
<<< |   8     >>   60 | · | · POP_TOP                [01 -- --]
<<< |              61 | · | · POP_TOP                [01 -- --]
<<< |              62 | · | · POP_TOP                [01 -- --]
<<< |   9          63 | · | · LOAD_NAME              [65 02 00]     2 (open)
<<< |              66 | · | · LOAD_CONST             [64 03 00]     3 ()
<<< |              69 | · | · LOAD_CONST             [64 03 00]     3 ()
<<< |              72 | · | · CALL_FUNCTION          [83 02 00]     2
<<< |              75 | · | · SETUP_WITH             [8F 11 00]    17 (to 95)
<<< |              78 | · | · * STORE_NAME           [5A 03 00]     3 (f)
<<< |  10          81 | · | · * LOAD_NAME            [65 03 00]     3 (f)
<<< |              84 | · | · * LOAD_ATTR            [6A 04 00]     4 (close)
<<< |              87 | · | · * CALL_FUNCTION        [83 00 00]     0
<<< |              90 | · | · * POP_TOP              [01 -- --]
<<< |              91 | · | · * POP_BLOCK            [57 -- --]
<<< |              92 | · | · * LOAD_CONST           [64 04 00]     4 (None)
<<< |         >>   95 | · | · WITH_CLEANUP           [51 -- --]
<<< |              96 | · | · END_FINALLY            [58 -- --]
<<< |              97 | · | · JUMP_ABSOLUTE          [71 12 00]    18 
<<< |             100 | · | · END_FINALLY            [58 -- --]
<<< |             101 | · | · JUMP_ABSOLUTE          [71 12 00]    18 
<<< |         >>  104 | · | POP_BLOCK                [57 -- --]
<<< |  12     >>  105 | · JUMP_ABSOLUTE              [71 03 00]     3 
<<< |             108 | · JUMP_ABSOLUTE              [71 03 00]     3 
<<< |         >>  111 | POP_BLOCK                    [57 -- --]
<<< |         >>  112 LOAD_CONST                     [64 04 00]     4 (None)
<<< |             115 RETURN_VALUE                   [53 -- --]
<<< consts:
<<<    (0) 2
<<<    (1) 3
<<<    (2) 1
<<<    (3) ''
<<<    (4) None
<<< ********************** code ending (level 0) ********************* 

 

 

Для юзания просто перекачайте архив: dispack.zip

Edited by StranikS_Scan
  • Upvote 2

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