yaotzinv 145 #200037 Posted July 17, 2014 (edited) сообщение удалено Edited July 17, 2014 by yaotzinv Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #200060 Posted July 17, 2014 (edited) Релиз PjOrion 1.0.8 Что нового: Исправлена ошибка в работе функции отступов, табуляция не всегда заменялась пробелами. Исправлена ошибка в работе парсера кода, не правильно распознавались пустые строки, что иногда приводило к неверной работе функции Minimize. Реализованы поиск и замена текста в редакторе. Убрано ограничение на формат файлов, открываемых через drag-and-drop. Добавлена опция групповой отмены действий в редакторе. Добавлена опция на запоминание размера и позиции Экспресс-редактора, горячая клавиша F11 заменена на Esc. Размеры верхнего окна вывода данных теперь запоминаются. Добавлены функции:вывод списка загруженных модулей <sys.modules>; функции импорта, перезагрузки и удаления модулей с обновлением внешних ссылок; функции дизассемблирования и декомпиляции загруженного в среде объекта по его имени; функции перекодировки выделенного текста из ANSI в UTF-8 и обратно в самом редакторе; функции перекодировки выделенного текста в коды символов и из кодов символов в текст. Вместо отдельных функций библиотеки UnPyc 0.8.1 полностью задействован модуль pyREtic. Добавлен новый функционал:пакет WOT-Transmission (wottransmission.zip) для запуска и обмена данными с клиентом игры (выполнение скриптов, импорт, удаление и перезагрузка модулей с обновлением ссылок, дизассемблирование по имени, декомпиляция в памяти через PyRetic и т.д.); пакет Disasseble (dispack.zip) для дизассеблирования и анализа байт-кода. Обновлены python27.dll и python27.zip до версии 2.7.8. Сел оформлять тему и писать FAQ.... после этого следующая остановка - обфускация и протектор для модов. PS: Последнее из нововведений это дизассемблер, он переоформлен и допилен, выводит байт-код вместе с инструкциями, не крашится на мусорных кодах, детектит их и подсвечивает.... всем кто работает с мусорными кодами мой дизасм будет полезен. Edited July 17, 2014 by StranikS_Scan 5 Quote Share this post Link to post Short link Share on other sites
ProstoNoob 15 #200064 Posted July 17, 2014 ... Привет, если есть время можешь показать на примерах, как можно наглядно использовать: функции дизассемблирования и декомпиляции загруженного в среде объекта по его имени; пакет Disasseble для дизассеблирования и анализа байт-кода; А то хоть я знаком с питоном, но вот по части, декодинга слабо. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #200067 Posted July 17, 2014 @ProstoNoob, как раз работаю над примером, факом и видео. Завтра запилю. 2 Quote Share this post Link to post Short link Share on other sites
o-0-0-0 77 #200075 Posted July 17, 2014 а mercger не будет против ? Quote Share this post Link to post Short link Share on other sites
fecell 125 #200086 Posted July 18, 2014 Декомпиляция всех скриптов в подпапках встроена в uncompyle2. Нужно лишь вызвать с нужными параметрами. например "uncompyle2 --py -s -o decompiled source" обработает все скрипты и воссоздаст исходную структуру папок.. зы: я вместо source указываю World_Of_Tanks как новый патч выходит ;) Quote Share this post Link to post Short link Share on other sites
ProstoNoob 15 #200091 Posted July 18, 2014 (edited) декомпиляция в памяти через PyRetic и т.д. Вопрос, а не получится ли применить это к функциям BigWorld, выполняем в игре какой нибудь код, например: BigWorld.time() (простой пример) и получить исходник? Edited July 18, 2014 by ProstoNoob Quote Share this post Link to post Short link Share on other sites
fecell 125 #200114 Posted July 18, 2014 Вопрос, а не получится ли применить это к функциям BigWorld, выполняем в игре какой нибудь код, например: BigWorld.time() (простой пример) и получить исходник? Нет. Движок BigWorld ведь на С++ написан, эта функция, как и все остальные 407 (import BigWorld; print dir(BigWorld)), тоже на С.. в этих функциях, могу немного ошибиться в точности названия, нет вообще атрибута co_code (или func_code), т.е. атрибута в котором хранится питоновский байткод. Quote Share this post Link to post Short link Share on other sites
ProstoNoob 15 #200135 Posted July 18, 2014 (edited) Deleted message Edited July 18, 2014 by ProstoNoob Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #200155 Posted July 18, 2014 а mercger не будет против ? Против чего? Пока что я ни как и не в чём не пересекаюсь я ним. Декомпиляция всех скриптов в подпапках встроена в uncompyle2. Нужно лишь вызвать с нужными параметрами. В декомпиляторах много чего встроено. Однако сладость Ориона в том, что многое можно делать через пару кликов. Вопрос, а не получится ли применить это к функциям BigWorld, выполняем в игре какой нибудь код, например: BigWorld.time() (простой пример) и получить исходник? А кто вам мешает попробовать. Запускайте Орион, затем через WOT-Transmission - Run - Game запускайте игру, после этого в Орионе пишем: import BigWorld aaa = BigWorld.time затем жмём CTRL+F5, после этого выделяем мышкой слово aaa и в меню WOT-Transmission - Other выбираем что нам нужно. Затем смотрим что будет дальше. По своему опыту скажу, что PyRetic 5.1 хреново декомпилит из памяти, а функции может вовсе не декомпилить. А вот дизассемблер работает гораздо устойчивее и может дизассеблировать как модуль BigWorld так и любую его функцию. Правда опять же только те из них, которые написаны на питоне, код написанный не напитоне дизасс. не будет. Пробуйте, это интересно :)))) Нет. Движок BigWorld ведь на С++ написан, эта функция, как и все остальные 407 (import BigWorld; print dir(BigWorld)), тоже на С.. в этих функциях, могу немного ошибиться в точности названия, нет вообще атрибута co_code (или func_code), т.е. атрибута в котором хранится питоновский байткод. Да именно так, всё что имеет не питоновскую природу, не будет дизасс. как стандартным так и переделанным мной дизассемблером. ЗЫ: Над темой я работаю, ждите описания и видео. 2 Quote Share this post Link to post Short link Share on other sites
ProstoNoob 15 #200158 Posted July 18, 2014 ... Можно сделать такую функцию, запускаем игру, включаем режим, и программа показывает нам какой именно код выполняется со ссылкой на файл и строчку? Quote Share this post Link to post Short link Share on other sites
tunut 203 #200165 Posted July 18, 2014 Релиз PjOrion 1.0.8 предыдущие версии стартовали в окне, а релиз во весь экран (( неудобно Quote Share this post Link to post Short link Share on other sites
o-0-0-0 77 #200178 Posted July 18, 2014 Видео будет на новые функции ? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #200189 Posted July 18, 2014 Можно сделать такую функцию, запускаем игру, включаем режим, и программа показывает нам какой именно код выполняется со ссылкой на файл и строчку? Не в курсе, думаю надо поискать что-то типа трассировки исполняемого кода в реальном времени для питона. Если такое найду с примерами реализации, то занесу в кттс. предыдущие версии стартовали в окне, а релиз во весь экран (( неудобно Опции смотрели? Terminal - Settings - Load in fullscreen Видео будет на новые функции ? Конечно. 1 Quote Share this post Link to post Short link Share on other sites
ProstoNoob 15 #200240 Posted July 18, 2014 (edited) ... 1. Вот такой код можно перекодировать и посмотреть? \x03\xF3\x0D\x0A 2. После того как нам покажет FAKE код, программа может его убрать и декомпилировать сама? Edited July 18, 2014 by ProstoNoob Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #200244 Posted July 18, 2014 (edited) del Edited July 18, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #200250 Posted July 18, 2014 (edited) 1. Вот такой код можно перекодировать и посмотреть? \x03\xF3\x0D\x0A 2. После того как нам покажет FAKE код, программа может его убрать и декомпилировать сама? 1. Хотите узнать какой набор инструкций получается ;)? Без проблем, делайте так, пишите в редакторе текстовую строку '\x03\xF3\x0D\x0A', затем выделяйте её и в выпадающем меню жмякаем на Disassemble Selected Object. И смотрим на результат :)))) <<< Object: str ''? <<< '' <<< ------------------------------------------------------------------ <<< ******************** code beginning (level 0) ******************** <<< discode[hexcode]: <<< | 0 ROT_THREE [03 -- --] <<< | 1 <243> FAKE! [F3 -- --] <<< | 2 UNARY_CONVERT [0D -- --] <<< | 3 UNARY_POSITIVE [0A -- --] <<< ********************** code ending (level 0) ********************* Получить тоже самое можно также если занести строку в переменную и диссануть эту переменную :))) 2. Такого функционала в программе не будет. Инструменты для исследования кода, это есть/будет, инструменты для защиты будут, а для автоматизации снятия защит - такого не будет. Edited July 18, 2014 by StranikS_Scan 1 Quote Share this post Link to post Short link Share on other sites
o-0-0-0 77 #200493 Posted July 20, 2014 Жаль , а то есть что декомпелировать и дезассемблировать . Quote Share this post Link to post Short link Share on other sites
fecell 125 #200556 Posted July 20, 2014 \x03\xF3\x0D\x0A это заголовок скрипта (MAGIC world), дальше еще 4 байта - время создания скрипта.. Quote Share this post Link to post Short link Share on other sites
GPCracker 2,088 #200659 Posted July 21, 2014 Прикольная тема, главное время на отладке вычислительных функций нехило экономит... (не надо сто раз перезапускать клиент)Правда через полчаса после использования раскопал исходники трансмиттера и поменял print str(E) на import traceback #В начало файла print traceback.format_exc() Иными словами, вернул трассировщик ошибок на место) Не ну без него никак) Quote Share this post Link to post Short link Share on other sites