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

Знаете за что я ненавижу Питон? С одной стороны Питон это отдушина для тех кто много работал с классическими языками типа Фортрана, VB или Object Pascal.... но вот его инвариантность, меня просто убивает. Не зависимо от того насколько хорошо я знаю язык, каждый раз когда я пишу на нем, он вызывает сильнейшее чувство того, что написанный код можно написать компактнее и проще, и действительно с течением времени это неизбежно обнаруживается и я начинаю бороться с диким желаем переписать старый код на новый лад. Вот за это я его просто ненавижу!

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Да нет, О тут не причем. Вообще код не рабочий:

 

module = map(__import__,'dis')

 

<<< Traceback (most recent call last):

<<<   File "<string>", line 1, in <module>

<<< ImportError: No module named d

стоп, я не такой код в пример приводил))

этот код нерабочий априори.. т.к. надо ['dis'] писать, а не 'dis'

в моем примере скобки были ;)

names = ['httplib', 'dis']
Edited by fecell

Share this post


Link to post

Short link
Share on other sites

стоп, я не такой код в пример приводил))

этот код нерабочий априори.. т.к. надо ['dis'] писать, а не 'dis'

в моем примере скобки были ;)

names = ['httplib', 'dis']

 

Так-с ситуация прояснилась. Короче в О сейчас httplib не импортируется, т.к. в модуле есть обращение к _socket то ли lib то ли pyd, а я экспериментировал с пакетами и не не всё включил в zip-пакет. В обновлении zip-пакеты включу и либы и пиды.

Edited by StranikS_Scan
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Не торопись. В embedded питоне загрузка pyd блокируется - как в танках, так и в О будет. Это ограничение "встроенного" питона.

Есть вариант обхода (zipimporter загугли), но это даст возможность только в О реализовать загрузку.. в танках все равно это не будет работать.

Может есть смысл только C:\Games\World_of_Tanks\res_bw\scripts\common\lib включить в архив (питоновские библиотеки доступные в танках, но не все рабочие все равно.. "socket" например).

Share this post


Link to post

Short link
Share on other sites

Не торопись. В embedded питоне загрузка pyd блокируется - как в танках, так и в О будет. Это ограничение "встроенного" питона.

Есть вариант обхода (zipimporter загугли), но это даст возможность только в О реализовать загрузку.. в танках все равно это не будет работать.

Может есть смысл только C:\Games\World_of_Tanks\res_bw\scripts\common\lib включить в архив (питоновские библиотеки доступные в танках, но не все рабочие все равно.. "socket" например).

 

Ага, вчера уже увидел:

 

Any files may be present in the ZIP archive, but only files .py and .py[co] are available for import. ZIP import of dynamic modules (.pyd, .so) is disallowed. Note that if an archive only contains .py files

 

 

Ну и ладно. 

Share this post


Link to post

Short link
Share on other sites

Это через importlib.import_module ?

По хелпу не похоже. Вообще правильно не нужна в О поддержка либов, ориентируемся то на вот-моды, а там кроме \\Lib ни чего не используется, потому я только \\Lib и засунул в zip, предварительно выкинув site-package, *test* и всякий readme-хлам, что с питоном идёт.

 

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

Share this post


Link to post

Short link
Share on other sites

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

А можно как здесь http://stackoverflow.com/questions/10286083/python-c-api-add-class-to-module (примеров много)

прямо в модуль BigWorld свой код закинуть ?

Замечал такое, что в логах появляются у модулей дополнительные строки кода. В ресурсах файлы более "тощие".

Share this post


Link to post

Short link
Share on other sites

А можно как здесь http://stackoverflow.com/questions/10286083/python-c-api-add-class-to-module (примеров много)

прямо в модуль BigWorld свой код закинуть ?

Замечал такое, что в логах появляются у модулей дополнительные строки кода. В ресурсах файлы более "тощие".

 

Не до конца тебя понял. Если ты имел ввиду вот такой код:

__builtin__.my = 123
@!__builtin__.my

<<< 123
То он работает и  сейчас и с любым модулем, что внешним что внутренним Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Не до конца тебя понял. Если ты имел ввиду вот такой код:

__builtin__.my = 123
@!__builtin__.my

<<< 123

То он работает и  сейчас и с любым модулем, что внешним что внутренним

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

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

Share this post


Link to post

Short link
Share on other sites

Или я что то не понимаю.

А мы похоже о разном пишем. Я выше писал про питоновские модули, которые в \\lib. Орион по умолчанию юзает эти файлы из pythonXX.zip. И в результате работает автономно. Однако этот комплект файлов есть и в самом клиенте, причем он там "расширенный", вот и думаю что при подключении к wot надо приоритет давать именно второму источнику, а не первому.

 

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

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Однако этот комплект файлов есть и в самом клиенте, причем он там "расширенный", вот и думаю что при подключении к wot надо приоритет давать именно второму источнику, а не первому.

Еще месяц назад в клиенте небыло модуля time, сейчас он есть, но обрезанный и работает.. плохо

например слип тупо вешает клиент на время слип. В общем, нужен ли этот приоритет.

Share this post


Link to post

Short link
Share on other sites

Еще месяц назад в клиенте небыло модуля time, сейчас он есть, но обрезанный и работает.. плохо

например слип тупо вешает клиент на время слип. В общем, нужен ли этот приоритет.

Ммм, кривости там у них. Ну тогда, будет опция :)))

Share this post


Link to post

Short link
Share on other sites

Обновил программу до 1.0.7, пофиксил баги:

  • исправлена передача аргументов в sys.argv.
  • доработана поддержка атрибута __file__ при выполнении скрипта/файла с параметрами.
  • внес изменения в список путей в окружении среды, добавляемых по умолчанию при подключении к dll. Увидеть список можно вызвав из главного меню "Print <sys.path>". Теперь можно коннектится как к локальной dll в папке Ориона, так и к dll в папке питона. При этом приоритет отдается модулям из zip-архива, если таковой есть в папке с dll.
  • внесены исправления в работу интерфейса экспресс-окна при масштабировании экрана

Залил второе видео в первый пост:

  • как подключить разные версии питона
  • переменная окружения sys.path
  • и запуск скриптов с параметрами
Edited by StranikS_Scan
  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

https://github.com/Omegaice/WOTDecompiled

 

Видели этот проект? может пригодиться..

Он не нужен. В Орионе есть функция "Decompile pyc-folder" - можно декопилировать любую папку со скриптами за один клик. Будут декомпилены все скрипты в папке и подпапках. В опциях можно указать с каким расширением сохранять файлы и в какую папку, в ту же самую или в другую.

 

Декомпилишь папку WorldOfTanks\ и все исходники перед тобой.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

А можно реализовать как-нибудь, чтобы использовалась питоновская dll-ка из танков (самолетов/кораблей)?

Признаться, слабо представляю как это можно реализовать.. Что-то типа предзагрузки игры, внедрение в неё и последующий вызов методов уже из игровой длл-ки..

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

Edited by fecell

Share this post


Link to post

Short link
Share on other sites

@fecell, у текущего клиента игры нет внешней dll в принципе, т.к. среду питона инициализирует сам exe файл клиента. Обмениваться данными между запущенной средой питона клиента и средой О можно. Я не силен в инжектировании в процессы и в ближайшее время вряд ли такой подход буду осваивать.... а вот другой подход обмена данными я уже клепаю - обмен данными через файловый буфер.

 

Будет так:

- с О будет идти zip с модулем-трансмиттером

- при запуске клиента через О, последний скормит ему трансмиттер

- трансмиттер использует файл-буфер для обмена данными

- данные высылаемые из О будут exec-иться трансмиттером на стороне клиента

- а данные идущие на stdout в клиенте будут сбрасываться в буфер и приниматься О

 

Например, после запуска клиента через О, скрипт набранный в О:

import BigWorld
BigWorld.wg_enableTreeHiding(False)
BigWorld.wg_setTreeHidingRadius(10000,100)
будет исполняться в среде клиента и переключившись в клиент вы сразу увидите результат.

 

Глянул wotdllmod.dll - написано на Delphi5-7 c KOL. Она не имеет экспортируемых функций, это значит что клиент игры к ней не обращается как к библиотеке с функциями/процедурами/классами, следовательно ни какого доступа к окружению питона клиента из неё нет.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Знаете за что я ненавижу Питон? С одной стороны Питон это отдушина для тех кто много работал с классическими языками типа Фортрана, VB или Object Pascal.... но вот его инвариантность, меня просто убивает. Не зависимо от того насколько хорошо я знаю язык, каждый раз когда я пишу на нем, он вызывает сильнейшее чувство того, что написанный код можно написать компактнее и проще, и действительно с течением времени это неизбежно обнаруживается и я начинаю бороться с диким желаем переписать старый код на новый лад. Вот за это я его просто ненавижу!

Тоже хочется иногда переписать код, только для повышения производительности.

Это же не совсем нормально, когда пара скобок в выражении повышает скорость решения в 10-15 раз..

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