XXX_MUTANT Posted March 14, 2014 Share Posted March 14, 2014 (edited) 1. Скачиваешь питон 2.7.http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi 2. Устанавливаешь питон в папку скажем C:\Python27 3. Добавляешь папку с питоном в переменную среды Path 1116.png 1117.png 4. Скачиваешь uncompyle2 https://github.com/Mysterie/uncompyle2/archive/master.zip 5. Распаковываешь ее в скажем c:\uncompyle2 6. Открываешь командную строку и переходишь в папку с uncompyle2 cd c:\uncompyle27. устанавливаем утилиту выполнив в командной строкеpython setup.py install8. если все ок у нас должны появится папки build и в ней папка scripts-2.7 в которой лежит собственно сама утилита файл uncompyle29. берем интересующий нас скрипт например cameranode.pyc и кладем его в папку c:\uncompyle2\build\scripts-2.7\ 10. открываем командную строку и переходим в ней в папку со скриптом cd c:\uncompyle2\build\scripts-2.7\11. переводим скрипт из бинарика в исходный вид:python uncompyle2 -o cameranode.py cameranode.pycВот собственно и вся декомпиляция слог у меня чугунный но вроде достаточно понятно изложил.... Теперь немного по поводу компиляции скриптов. В клиенте использована более ранняя версия 2.6 поэтому компилировать будем в нем, ранее установленная версия для этого не подойдет. 1. Скачиваем Python 2.6 http://www.python.org/download/releases/2.6/ 2. Устанавливаем его в папку C:\Python26\ 3.Выбираем скрипт который мы будем редактировать 1112.png 4. Убеждаемся что скрипт открылся именно в версии 2.6 1113.png 5. Вносим необходимые изменения в скрипт и пытаемся выполнить 1114.png 6. Попадаем в окно интерпретатора, который должен жаловатся на отсутсвие модуля BigWorld других ошибок быть НЕ ДОЛЖНО иначе правим свой скрипт 1115.png 7. В папке с исходным скриптом который мы редактировали должен появится компилированный скрипт с расширением pyc его можно закидывать в клиент Что-то как-то все сложно с ручным вводом в командную строку... Не помню где скачал, но у меня ункомпиле2 разбирает/собирает при помощи батников: ункомпиле.бат/декомпиле.бат... Три папки: сорсы- лежат подопытные скрипты, ункомпиле- файлы которые разбираются после запуска ункомпиле.бат, компиле- уже готовые для использования скрипты. Для эксперимента разобрал/собрал скрипт ексель и еще что-то- работает. Если надо скину папку с батниками. Edited March 14, 2014 by SuperXcool @ Quote Link to comment Short link Share on other sites More sharing options...
Beliy.IV Posted March 24, 2014 Share Posted March 24, 2014 1. Скачиваешь питон 2.7.http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi 2. Устанавливаешь питон в папку скажем C:\Python27 3. Добавляешь папку с питоном в переменную среды Path 1116.png 1117.png 4. Скачиваешь uncompyle2 https://github.com/Mysterie/uncompyle2/archive/master.zip 5. Распаковываешь ее в скажем c:\uncompyle2 6. Открываешь командную строку и переходишь в папку с uncompyle2 cd c:\uncompyle2 7. устанавливаем утилиту выполнив в командной строке python setup.py install 8. если все ок у нас должны появится папки build и в ней папка scripts-2.7 в которой лежит собственно сама утилита файл uncompyle2 9. берем интересующий нас скрипт например cameranode.pyc и кладем его в папку c:\uncompyle2\build\scripts-2.7\ 10. открываем командную строку и переходим в ней в папку со скриптом cd c:\uncompyle2\build\scripts-2.7\ 11. переводим скрипт из бинарика в исходный вид: python uncompyle2 -o cameranode.py cameranode.pyc Вот собственно и вся декомпиляция слог у меня чугунный но вроде достаточно понятно изложил.... Теперь немного по поводу компиляции скриптов. В клиенте использована более ранняя версия 2.6 поэтому компилировать будем в нем, ранее установленная версия для этого не подойдет. 1. Скачиваем Python 2.6 http://www.python.org/download/releases/2.6/ 2. Устанавливаем его в папку C:\Python26\ 3.Выбираем скрипт который мы будем редактировать 1112.png 4. Убеждаемся что скрипт открылся именно в версии 2.6 1113.png 5. Вносим необходимые изменения в скрипт и пытаемся выполнить 1114.png 6. Попадаем в окно интерпретатора, который должен жаловатся на отсутсвие модуля BigWorld других ошибок быть НЕ ДОЛЖНО иначе правим свой скрипт 1115.png 7. В папке с исходным скриптом который мы редактировали должен появится компилированный скрипт с расширением pyc его можно закидывать в клиент Под 0.8.11 какой пайтон использовать для компиляции ??? @ Quote Link to comment Short link Share on other sites More sharing options...
evil_rrock Posted March 24, 2014 Share Posted March 24, 2014 (edited) Под 0.8.11 какой пайтон использовать для компиляции ???2.7.6 с офсайта подойдёт, я им собирал скрипты для 0.8.11 Edited March 24, 2014 by evil_rrock @ Quote Link to comment Short link Share on other sites More sharing options...
o-0-0-0 Posted March 27, 2014 Share Posted March 27, 2014 (edited) Пробывал разными способами и ни в какую дэкомперироватся не хочет . Может подскажите ? Edited March 27, 2014 by o-0-0-0 @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 27, 2014 Share Posted March 27, 2014 (edited) Пробывал разными способами и ни в какую дэкомперироватся не хочет . Может подскажите ? Конечно не хочет, он обработан скрамблером Мерца. Вам повезло, там старая версия скрамблера под питон 2.6, распаковал, держите исходник, иначе только на сайтах программистов и за бабки. if '\n(c) Dellux 2013\n' is not '\n(c) Dellux 2013\n': pass __doc__ = '\n(c) Dellux 2013\n' import BigWorld import GUI import Keys import weakref import math import Math import CommandMapping import AvatarInputHandler.control_modes from Avatar import PlayerAvatar from gui.Scaleform.Battle import Battle from gui.Scaleform.Battle import _TimeInterval from gui.Scaleform.Flash import Flash from gui import DEPTH_OF_Aim class CircleDeflection(Flash): saved_afterCreate = Battle.afterCreate def new_afterCreate(self): if None is not None: pass saved_afterCreate(self) self.__CircleDeflection = CircleDeflection(weakref.proxy(self)) self.__CircleDeflection.start() Battle.afterCreate = new_afterCreate saved_beforeDelete = Battle.beforeDelete def new_beforeDelete(self): if None is not None: pass saved_beforeDelete(self) self.__CircleDeflection.destroy() Battle.beforeDelete = new_beforeDelete saved_handleKey = PlayerAvatar.handleKey def new_handleKey(self, isDown, key, mods): if None is not None: pass cmdMap = CommandMapping.g_instance if cmdMap.isFired(CommandMapping.CMD_TOGGLE_GUI, key) and isDown: isDown else: cmdMap.isFired(CommandMapping.CMD_TOGGLE_GUI, key) if key == Keys.KEY_0 and isDown: isDown return saved_handleKey(self, isDown, key, mods) PlayerAvatar.handleKey = new_handleKey И чуть не забыл, код может оказаться немного битым, распаковка не идеальная, увы... Edited March 27, 2014 by StranikS_Scan 1 @ Quote Link to comment Short link Share on other sites More sharing options...
o-0-0-0 Posted March 27, 2014 Share Posted March 27, 2014 подскажи пожалуйста как ты это сделал , какой командой , и как это после правки опять запечатать так же тока в 2.7 сам бы почитал но habrahabr упал ((( @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 27, 2014 Share Posted March 27, 2014 (edited) подскажи пожалуйста как ты это сделал , какой командой , и как это после правки опять запечатать так же тока в 2.7 Вы наверно не поняли, на вашем скрипте установлена защита от декомпиляции. Ни какими штатными средствами или программам её не обойти и не снять. Я распаковку делаю вручную, используется спец. софт и свои самописные скрипты для этого. По сути это взлом. "Запечатать" в 2.7 у вас не выйдет, код надо разбирать и переписывать, он битый, т.е. не все правильно распаковалось. Найдите любого мододела, кто пишет моды на питоне и согласиться вам помочь и попросите проверить и исправить код. Вот тогда можно будет в 2.7 "запечатывать" :)))) Edited March 27, 2014 by StranikS_Scan 1 @ Quote Link to comment Short link Share on other sites More sharing options...
o-0-0-0 Posted March 27, 2014 Share Posted March 27, 2014 "Запечатать" в 2.7 у вас не выйдет, код надо разбирать и переписывать, он битый, т.е. не все правильно распаковалось. Найдите любого мододела, кто пишет моды на питоне и согласиться вам помочь и попросите проверить и исправить код. Вот тогда можно будет в 2.7 "запечатывать" :)))) Понял спасибо . @ Quote Link to comment Short link Share on other sites More sharing options...
AtotIK Posted March 27, 2014 Share Posted March 27, 2014 o-0-0-0, что это за скрипт? @ Quote Link to comment Short link Share on other sites More sharing options...
MakcT40 Posted March 27, 2014 Share Posted March 27, 2014 (edited) распаковка не идеальнаяСпасибо и на этом. Иначе скоро мог бы родиться очередной "шыдевр" от мододела-гения лсдмакса... :( Edited March 27, 2014 by MakcT40 @ Quote Link to comment Short link Share on other sites More sharing options...
Dellux Posted March 27, 2014 Share Posted March 27, 2014 Пробывал разными способами и ни в какую дэкомперироватся не хочет . Может подскажите ? Передаю привет подпольщику rf-chears с ником marchez. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 27, 2014 Share Posted March 27, 2014 (edited) @Dellux, так вот значит как пишется правильно его имя :))))Скрамблер Marchez-а Спасибо и на этом. Иначе скоро мог бы родиться очередной "шыдевр" от мододела-гения лсдмакса... :( Ну один-два скрипта - это капля море. Главное чтобы какому-нибудь "гению" не пришло в голову декриптор в паблик бросить. И такое вполне реально. Edited March 27, 2014 by StranikS_Scan @ Quote Link to comment Short link Share on other sites More sharing options...
o-0-0-0 Posted March 27, 2014 Share Posted March 27, 2014 (edited) мне дал его всем известный макс , но толку от него нет , за это спасибо Dellux , хорошо запечатал . Никто не когда его не взломает . Edited March 27, 2014 by o-0-0-0 @ Quote Link to comment Short link Share on other sites More sharing options...
ZloyYurich Posted March 27, 2014 Share Posted March 27, 2014 Пробывал разными способами и ни в какую дэкомперироватся не хочет . Может подскажите ? Скинь в личку, попробую поковырять @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 27, 2014 Share Posted March 27, 2014 Никто не когда его не взломает . Ну это вы конечно перебрали. Это всего лишь скраблер, это даже не протектор. Учитывая что это не exe, а самоинспектируемый питон, то тут скрамблеры как мера защиты слабы сами по себе. Для надежной защиты нужны гибридные протекторы @ Quote Link to comment Short link Share on other sites More sharing options...
o-0-0-0 Posted March 27, 2014 Share Posted March 27, 2014 может и так , но у меня толь куски получаются , да и вы тоже не смогли , не так ли . @ Quote Link to comment Short link Share on other sites More sharing options...
Sherman Posted March 27, 2014 Share Posted March 27, 2014 (edited) У меня вопрос к StranikS_Scan - а зачем? может и так , но у меня толь куски получаются , да и вы тоже не смогли , не так ли . Он то как раз смог. Мерц кстати прочитал и искренне похвалил. Edited March 27, 2014 by Sherman @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 28, 2014 Share Posted March 28, 2014 У меня вопрос к StranikS_Scan - а зачем? Он то как раз смог. Мерц кстати прочитал и искренне похвалил. Зачем, что? Расковыривать? Ну мододелы часто расковыривают моды чтобы изучить. Если просят расковырять старый код, то я иногда расковыриваю, но его не чищу, мододелу и этого достаточно, если он только хотел что-то там глянуть. Новые моды я не расковыриваю. @ Quote Link to comment Short link Share on other sites More sharing options...
Sherman Posted March 28, 2014 Share Posted March 28, 2014 Для надежной защиты нужны гибридные протекторы Можно поподробнее развить эту тему? Гибридность какого плана? @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted March 28, 2014 Share Posted March 28, 2014 (edited) Можно поподробнее развить эту тему? Гибридность какого плана? Все довольно просто, если защищаемый код поместить только в pyc-контейнер, то какие бы операции в этом контейнере не выполнялись с этим кодом, все они будут легко обратимы, причем средствами самого питона. Можно пытаться препятствовать обращению операций, используя скрамблирование, например как у Мерца, с помощью assm-петель с мусорным кодом. Но как известному и самому Мерцу достаточно заменить мусорный код любым валидным, дизассеблировать, а потом очистить скрипт от assm-петель и защита пройдена, причем опять же силами самого питона.... достаточно автоматизировать этот процесс и мы получаем декриптор для реверса модов. и вот возникает вопрос, как её усилить? Можно продолжить накручивать код внутри pyc-контейнера, что Мерц и сделал в своей защите 3-поколения, использовал случайную последовательность, которая создает сложно-петлевую связь и тем самым затрудняет поиск мусорного кода (только лишь на первый взгляд :)))).... но это всего лишь усиливает защиту количественно, но ни как не качественно! Можно поступить иначе... вынести часть алгоритма из питона вообще и поместить его например в exe. Назовем его активным модулем защиты. Такой активный модуль (его нужно написать компактным, например можно на ассме) следует помещать в pyc-контейнер вместе с защищаемым кодом и извлекать его и запускать при выполнении pyc-контейнера движком игры. В свою очередь активный модуль будет выполнять нужные операции с защищаемым питон-кодом, загруженным в память процесса игры. Таким образом, чтобы выполнять реверс кода надо реверсировать не только pyc-контейнер, но и дезассемблировать его активный модуль, чтобы понять какие операции он выполняет в памяти игры. Такой процесс взлома усложняется многократно и практически не реально будет найти человека кто за бесплатно будет ковырять такой мод. Понятно что итоговая защита должна совмещать в себе защищенный (то бишь скрамблированный pyc-контейнер) и активный модуль в нем, в результате мы получаем гибридный протектор. Взломать его реверсом весьма тяжелый труд, следовательно единственным актуальный способом его взлома, как в прочем и любого другого pyc-мода будет дамп памяти игры, из которого можно извлечь рабочий код мода. Ясно, что сделать это могут только юзверы имеющие соот. квалификацию. Но вот тут мы подходим к еще одному положительному аспекту гибридной защиты. В отличие от обычной защиты на питоне, активный модуль имеет гораздо больше возможностей по самозащите мода. Так как он является exe. В него можно поместить различные алгоритмы самозащиты, которые максимально препятствовали бы взлому и тому же получению дампа памяти игры с расшифрованным скриптом мода. Вот вся концепция в двух абзацах. Я кое-какие моменты из этой технологии уже опробовал на Интрудере, сейчас работаю над таким гибридным протектором. Проект называется Орион. Я не стал писать в личку, так как в конечном итоге технология все равно станет известной. Мы же с вами знаем, что стойкость технологии не в её секретности, а в трудоемкости и сложности её преодоления. Не взламываются только те защиты, взлом которых не оправдывает ни средств ни денег ни времени, которые надо потратить на это :)))))) ЗЫ: Забыл спросить, Мерц реальный персонаж или "как всегда"? ЗЫЗЫ: Да и еще вопрос, чем обязан такому вниманию, вроде тема давно висит и вроде не первый раз я в ней по просьбам трудящихся старые скрипты дешифрую, а тут раз и столько товарищей зараз тему посетило? Какие-то траблы что ли были с o-0-0-0 или какая подоплека была? Edited March 28, 2014 by StranikS_Scan 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.