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

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

 

Добавил в тот же скрипт. Если аргумент - remove, то контекстное меню будет очищено, иначе - добавим пункты.

Добавил и остальные пункты - компиляцию, декомпиляцию и т.д.

from _winreg import *
import sys
ContextMenus = [
  {
    'name'   : 'Open in Orion',
    'command': sys.argv[1] + ' "%1"',
    'icon'   : '',
    'key'    : '.py',
    'descr'  : 'Python script'
  },
  {
    'name'   : 'Compile file',
    'command': sys.argv[1] + ' --compile-file "%1"',
    'icon'   : '',
    'key'    : '.py',
    'descr'  : 'Python script'
  },
  {
    'name'   : 'Run in Orion',
    'command': sys.argv[1] + ' --run "%1"',
    'icon'   : '',
    'key'    : '.py',
    'descr'  : 'Python script'
  },
  {
    'name'   : 'Run in WoT',
    'command': sys.argv[1] + ' --run-game "%1"',
    'icon'   : '',
    'key'    : '.pyc',
    'descr'  : 'Python bytecode'
  },
  {
    'name'   : 'Decompile file',
    'command': sys.argv[1] + ' --decompile-file "%1"',
    'icon'   : '',
    'key'    : '.py',
    'descr'  : 'Python bytecode'
  },
  {
    'name'   : 'Disassemble file',
    'command': sys.argv[1] + ' --disassemble "%1"',
    'icon'   : '',
    'key'    : '.py',
    'descr'  : 'Python bytecode'
  },
  {
    'name'   : 'Decompile folder',
    'command': sys.argv[1] + ' --decompile-path "%1"',
    'icon'   : '',
    'key'    : 'Directory',
    'descr'  : ''
  },
  {
    'name'   : 'Compile folder',
    'command': sys.argv[1] + ' --compile-path "%1"',
    'icon'   : '',
    'key'    : 'Directory',
    'descr'  : ''
  }
]

if sys.argv[1] == 'remove':
  for i in ContextMenus:
    try:
      try:
        Key = OpenKey(HKEY_CLASSES_ROOT, QueryValue(HKEY_CLASSES_ROOT, i['key']), 0, KEY_ALL_ACCESS)
      except:
        Key = OpenKey(HKEY_CLASSES_ROOT, i['key'], 0, KEY_ALL_ACCESS)
      Key = OpenKey(Key, 'shell\\' + i['name'], 0, KEY_ALL_ACCESS)
      DeleteKey(Key, 'command')
      if i['icon']:
        DeleteValue(Key, 'Icon')
      DeleteKey(Key,'')
    except:
        pass
else:
  for i in ContextMenus:
    try:
      OpenKey(HKEY_CLASSES_ROOT, i['key'])
      try:
        Key = OpenKey(HKEY_CLASSES_ROOT, QueryValue(HKEY_CLASSES_ROOT, i['key']), 0, KEY_ALL_ACCESS)
      except:
        Key = OpenKey(HKEY_CLASSES_ROOT, i['key'], 0, KEY_ALL_ACCESS)
    except:
      SetValue(HKEY_CLASSES_ROOT, i['key'], REG_SZ, i['descr'])
      Key = OpenKey(HKEY_CLASSES_ROOT, i['key'], 0, KEY_ALL_ACCESS)
    try:
      Key = OpenKey(Key, 'shell', 0, KEY_ALL_ACCESS)
    except:
      Key = CreateKey(Key, 'shell')
    SetValue(CreateKey(CreateKey(Key, i['name']), 'command'), '', REG_SZ, i['command'])
    if i['icon']:
      SetValueEx(OpenKey(Key, i['name'], 0 , KEY_ALL_ACCESS), 'Icon', 0, REG_SZ, i['icon'])

context.zip

 

Одно плохо - контекстное меню становится огромным:

post-20225-0-72057100-1423064831_thumb.pngpost-20225-0-27604600-1423064832_thumb.pngpost-20225-0-66556200-1423064832_thumb.png

Share this post


Link to post

Short link
Share on other sites

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

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

@StranikS_Scan, Я попробовал примеры из этой статьи. На моём XP результата нет.
7Zip и другие программы добавляют подменю с помощью каких-то библиотек и огромного количества записей в реестре.
Связываться с такими методами или переустанавливать Windows мне не хочется.
-------
Йей, да я ошибся!
Decompile file и Disassemble file по ошибке добавил к .py.
После исправления всё получается нормально - по три пункта к .py и .pyc, а ещё два - к папкам.

from _winreg import *
import sys
ContextMenus = [
  {
    'name'   : 'Open in Orion',     
    'command': sys.argv[1] + ' "%1"',
    'icon'   : '',                 
    'key'    : '.py',             
    'descr'  : 'Python script' 
  },
  {
    'name'   : 'Compile file',
    'command': sys.argv[1] + ' --compile-file "%1"',
    'icon'   : '',
    'key'    : '.py',
    'descr'  : 'Python script'
  },
  {
    'name'   : 'Run in Orion',
    'command': sys.argv[1] + ' --run "%1"',
    'icon'   : '',
    'key'    : '.py',
    'descr'  : 'Python script'
  },
  {
    'name'   : 'Run in WoT',
    'command': sys.argv[1] + ' --run-game "%1"',
    'icon'   : '',
    'key'    : '.pyc',
    'descr'  : 'Python bytecode'
  },
  {
    'name'   : 'Decompile file',
    'command': sys.argv[1] + ' --decompile-file "%1"',
    'icon'   : '',
    'key'    : '.pyc',
    'descr'  : 'Python bytecode'
  },
  {
    'name'   : 'Disassemble file',
    'command': sys.argv[1] + ' --disassemble "%1"',
    'icon'   : '',
    'key'    : '.pyc',
    'descr'  : 'Python bytecode'
  },
  {
    'name'   : 'Decompile folder',
    'command': sys.argv[1] + ' --decompile-path "%1"',
    'icon'   : '',
    'key'    : 'Directory',
    'descr'  : ''
  },
  {
    'name'   : 'Compile folder',
    'command': sys.argv[1] + ' --compile-path "%1"',
    'icon'   : '',
    'key'    : 'Directory',
    'descr'  : ''
  }
]

if sys.argv[1] == 'remove':
  for i in ContextMenus:
    try:
      try:
        Key = OpenKey(HKEY_CLASSES_ROOT, QueryValue(HKEY_CLASSES_ROOT, i['key']), 0, KEY_ALL_ACCESS)
      except:
        Key = OpenKey(HKEY_CLASSES_ROOT, i['key'], 0, KEY_ALL_ACCESS)
      Key = OpenKey(Key, 'shell\\' + i['name'], 0, KEY_ALL_ACCESS)
      DeleteKey(Key, 'command')
      if i['icon']:
        DeleteValue(Key, 'Icon')
      DeleteKey(Key,'')
    except:
        pass
else:
  for i in ContextMenus:
    try:
      OpenKey(HKEY_CLASSES_ROOT, i['key'])
      try:
        Key = OpenKey(HKEY_CLASSES_ROOT, QueryValue(HKEY_CLASSES_ROOT, i['key']), 0, KEY_ALL_ACCESS)
      except:
        Key = OpenKey(HKEY_CLASSES_ROOT, i['key'], 0, KEY_ALL_ACCESS)
    except:
      SetValue(HKEY_CLASSES_ROOT, i['key'], REG_SZ, i['descr'])
      Key = OpenKey(HKEY_CLASSES_ROOT, i['key'], 0, KEY_ALL_ACCESS)
    try:
      Key = OpenKey(Key, 'shell', 0, KEY_ALL_ACCESS)
    except:
      Key = CreateKey(Key, 'shell')
    SetValue(CreateKey(CreateKey(Key, i['name']), 'command'), '', REG_SZ, i['command'])
    if i['icon']:
      SetValueEx(OpenKey(Key, i['name'], 0 , KEY_ALL_ACCESS), 'Icon', 0, REG_SZ, i['icon'])

context.zip

 

Share this post


Link to post

Short link
Share on other sites

7Zip и другие программы добавляют подменю с помощью каких-то библиотек и огромного количества записей в реестре.

А так?

Share this post


Link to post

Short link
Share on other sites

Господа-товарищи, дабы в будущем не повторялась весьма плачевная история, которая сегодня произошла вот с этим модом -> взлом.

 

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

 

Не делайте так!

 

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

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

ЛОЛ. Расковырять обфускатор мерца и так ложануться.

Нету возможности спросить, посоветоваться. Учусь сам. Лоханулся потому как надо делать всё выспавшись.

Больше человек который имел отношение к функциям защиты у Ориона, знает нюансы протектора и обфускации у Ориона, знал о возможной дыре,нашёл дыру,взломал и слил мод в рандом с головой не дружит.

Господа-товарищи, дабы в будущем не повторялась весьма плачевная история, которая сегодня произошла вот с этим

tralalala.jpg

 

Вот только не надо уже делать из меня вообще идиота.

Сейчас если уже мод слит просто мод обфусцировался орионом и поставлен протектор. И сделано всё правильно так человек до сих пор спокойно лазит по

обфусцированному коду с протектором.

Делайте выводы..

Edited by KACTET
  • Downvote 6

Share this post


Link to post

Short link
Share on other sites
Делайте выводы..

 

Выводы выше уже сделаны. И Орион тут не причем. Тебе стоило головой думать.  А сейчас конечно всякий кому не лень будет тебе писать что он по твоему коду якобы лазит.

 

ЗЫ: И да - ты идиот! Раз до сих пор ищешь проблему в Орионе, а не в свой тупости.

Edited by StranikS_Scan
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Выводы выше уже сделаны. И Орион тут не причем. Тебе стоило головой думать.  А сейчас конечно всякий кому не лень будет тебе писать что он по твоему коду якобы лазит.

Давай только не будем. Всё что написано есть. И действительно написано что убрано а что добавлено. Если есть дыра в защите то почему бы не признать..

  • Downvote 4

Share this post


Link to post

Short link
Share on other sites

Давай только не будем. Всё что написано есть. И действительно написано что убрано а что добавлено. Если есть дыра в защите то почему бы не признать..

 

Дыра у тебя в голове.

  • Upvote 4
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Дыра у тебя в голове.

Нафиг ты грубишь? Да нечего тут говорить.. метки в конце протектора вида t t t tt и в конце обфускации. Считаю и даже уверен есть дыра или декриптор.

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Нафиг ты грубишь? Да нечего тут говорить.. метки в конце протектора вида t t t tt и в конце обфускации. Считаю и даже уверен есть дыра или декриптор.

 

Ага лично у тебя, дыра.... в голове. У других дыр нет, у других ни кто ни чего не сломал не слил, а тебя бедолаги - дыра и метки. Уйди с глаз моих, пока моё терпение не лопнуло. 

  • Upvote 4

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

А то что?

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

Понимаешь иногда плохо скрывать очевидное.

 

Согласен, очевидное - это то что ты идиот. И то, что с тобой произошло, а с другими почему-то не произошло как раз это очевидное и доказывает. Ты как был криворуким так и остался.

 

Простонуб ни чего не ломал, глупая твой голова. Он импортировал твой модуль и прочитал содержимое переменной prc, в которую ты по свой глупости запихнул код своего мода. Что ж ты сразу то всем этот свой код не раздал? Пипец просто.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Согласен, очевидное - это то что ты идиот. И то, что с тобой произошло, а с другими почему-то не произошло как раз это очевидное и доказывает. Ты как был криворуким так и остался.

 

Простонуб ни чего не ломал, глупая твой голова. Он импортировал твой модуль и прочитал содержимое переменной prc, в которую ты по свой глупости запихнул код своего мода. Что ж ты сразу то всем этот свой код не раздал? Пипец просто.

Как человек сейчас обфусцированный по всем правилам мод с наложенным протектором может сравнивать со старым модом и говорить что добавлено, что удалено а в остальном код в один один?

Share this post


Link to post

Short link
Share on other sites

Как человек сейчас обфусцированный по всем правилам мод с наложенным протектором может сравнивать со старым модом и говорить что добавлено, что удалено а в остальном код в один один?

 

Точно также как я могу говорить всем, что я японец и хрен у меня 3 метра.... Он тебя на***вает.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Точно также как я могу говорить всем, что я японец и хрен у меня 3 метра.... Он тебя на***вает.

Ясно. Старого жука не проймёшь

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Ясно. Старого жука не проймёшь

Всё что можно, это импортировать твой скрипт и посмотреть какие у него атрибуты.... ты с модулями что ли ни когда не работал???

 

import z_ab

 

print z_ab.rpc

 

print dir(z_ab)

 

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

Edited by StranikS_Scan

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