StranikS_Scan 4,213 #255463 Posted February 28, 2015 Ясно. Спс. Вот теперь ситуация прояснилась для меня... Ещё вопрос обязательно ли при обфускации ставить галку на Insert Unused Bytecode? Т.к. очень часто если скрипт обфусцирован сторонней программой он ломается! Сильно влияет ли это на качество самой обфускации Ориона? После разбора полётов с sae и личной проверки скрипта, который выкладывал Юша в теме о декомпиляции, я понял кто виновник того что произошло тогда сам знаешь когда. Подсказка в ЗЫ постом выше. Да желательно ставить, я в следующей версии добавлю префикс (recommended) в опции, которые желательно вкл. по умолчанию. Чтоб обычные юзверы не ломали голову с галочками надо/не_надо. Т.к. очень часто если скрипт обфусцирован сторонней программой он ломается! Конечно, если её написал одноногий программист. Здесь очень просто принцип - главная защита эта та что ставиться первой, все что ставиться поверх неё - это бесполнезные действия. Поэтому если скрипт обработать кривой защитой или кривым способом (см пример с маршалом выше), а потом сверху навалить мегакрутую защиту, то ни какого толку не будет. Если уж хочется ставить защиты друг на друга (хотя я сто раз писал что в этом нет проку) то сначала надо обработать нормальной проверенной надежной защитой, а потом уже сверху накатывать всё остальное. А ни в коем случае не наоборот. Сильно влияет ли это на качество самой обфускации Ориона? Еще как. Орион сейчас если компилировать через него скрипт - запутывает его сложнее чем защита Мерца или какая-либо другая защита, которой могут пользоваться мододелы. Конечно за деньги на каких-либо спец. форумах можно наверно купить и более сильные обфускаторы, но я с ними не сталкивался, поэтому из free-софта обфускация в Орионе сейчас наверно самая сильная. Затем pyc файл надо обязательно обработать каким либо протектором чтобы исодный код скрипта не ковыряли. Опять таки из протекторов сейчас самый нормальный это протектор в Орионе, он хотя бы не страдает теми детскими болезнями, которые есть у других. В нем не используется маршал, есть защиты от перехватов и хуков, защита от редактирования pyc-файла, а также сюрприз-сюрприз... полиморфный криптер ))) Ну чего еще для счастья нужно-то... )))) Quote Share this post Link to post Short link Share on other sites
DrWebber 5 #255464 Posted February 28, 2015 Пытаюсь отследить TankmanDismiss (демобилизация) from gui.shared.gui_items.processors import tankman original_TankmanDismiss_successHandler = tankman.TankmanDismiss._successHandler def new_TankmanDismiss_successHandler(self, code, ctx=None): print('TankmanDismiss___') print(code) print(ctx) return original_TankmanDismiss_successHandler(code, ctx) tankman.TankmanDismiss._successHandler = new_TankmanDismiss_successHandler Скажите, что я делаю не так? return original_TankmanDismiss_successHandler(self, code, ctx) 1 Quote Share this post Link to post Short link Share on other sites
KACTET 317 #255466 Posted February 28, 2015 (edited) У меня есть обфускатор приватный переделанный pyobfuscate-master немного по другому обфусцирует код чем pyobfuscate-master, к сожалению при установке Insert Unused Bytecode некоторые скрипты ломались. По поводу протектора от Ориона, через hex он снимается, с трудом но снимается.. (версия 1.2.2) (видел скрипт мода Arsonics со снятым протектором) Edited February 28, 2015 by KACTET Quote Share this post Link to post Short link Share on other sites
伝説の 15 #255469 Posted February 28, 2015 (edited) return original_TankmanDismiss_successHandler(self, code, ctx)Как можно было так облажаться... надеюсь в будущем не буду допускать таких ошибок. Спасибо огромное!Вот теперь не могу понять как узнать какой был tankman демобилизирован, я думал инфа хранится в code и ctx, но как оказалось: *** TankmanDismiss___ *** 0 *** None Хотя по логике этой инфы и не должно быть там, а где тогда?... Edited February 28, 2015 by My War Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,213 #255471 Posted February 28, 2015 У меня есть обфускатор приватный переделанный pyobfuscate-master немного по другому обфусцирует код чем pyobfuscate-master, к сожалению при установке Insert Unused Bytecode некоторые скрипты ломались. По поводу протектора от Ориона, через hex он снимается, с трудом но снимается.. (версия 1.2.2) (видел скрипт мода Arsonics со снятым протектором) Там косячки в скрипте встречались, они мелкие и проявляются не часто, я скрипт дорабатываю, вот и в 1.2.3 нашел косячок в алгоритме обфускатора. Так что иногда может на выходе получиться битый файл. Но это редко, достаточно просто проверить мод после наложения защиты. Если заработает значит всё гуд. Не знаю не видел. Теоретически снять можно всё что угодно, если кто-то что-то поставил, то это можно снять, вопрос только во времени и трудозатратах. Quote Share this post Link to post Short link Share on other sites
伝説の 15 #255474 Posted February 28, 2015 (edited) Как можно было так облажаться... надеюсь в будущем не буду допускать таких ошибок. Спасибо огромное! Вот теперь не могу понять как узнать какой был tankman демобилизирован, я думал инфа хранится в code и ctx, но как оказалось: *** TankmanDismiss___ *** 0 *** None Хотя по логике этой инфы и не должно быть там, а где тогда?... Нашел где: def new_TankmanDismiss_successHandler(self, code, ctx=None): print('TankmanDismiss___') print(self.item) # <-- return original_TankmanDismiss_successHandler(self, code, ctx) Вывод: *** TankmanDismiss___ *** Tankman<id:520, nation:3, vehicleID:290> Edited March 10, 2015 by My War Quote Share this post Link to post Short link Share on other sites
fecell 125 #255561 Posted March 1, 2015 (edited) у Леликоптера храниться в не защищенном виде да еще и в переменной. вытащил из переменной, сохранил в .pyc-файл, действительно просто, кто-бы теперь помог декомпильнуть))) http://dropmefiles.com/R9Lz6 зы: Лоадеры это слабая степень защиты - рано или поздно код исполняется, и исполнение кода можно перехватить, и что исполняется сохранить в файл. Лоадеры с привязкой к танкам или нет - неважно, вскрываются через внесение изменений в исходники питона. Например для хука exec/eval сделал python27.dll, которая все вызовы exec пишет в файлы. Все что импортируется скриптом и к чему идет обращение пишется в лог (далее дело техники создать .py-файл с нужным названием и с нужным кодом внутри - т.е. обмануть проверку на запуск в клиенте, и запускать скрипт уже в консоле минуя все проверки вплоть до непосредственного запуска защищенного кода). Наверное поэтому лоадер у леликоптера для отвода глаз, "косметическая защита". Вероятно тратить время на то, что ломается достаточно просто не счет нужным. Куда сложнее восстановить порядок байткода в скрипте, чтобы все-же декомпилировать и получить в итоге исходник после его защиты. Т.ч. в "храниться незащищенный" я бы усомнился, судя по тому, что по ссылке выложил ;) Может старые версии и хранили что-то незащищенное - не знаю, знаю что первые версии вообще исходник хранили, если память не подводит. зы: тут еще подкинули задачку вытянуть рабочий скрипт, избавится от лоадера... http://dropmefiles.com/wJ3qs все декомпилируется без проблем, но воз и ныне там. Edited March 1, 2015 by fecell Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,213 #255580 Posted March 1, 2015 (edited) Может старые версии и хранили что-то незащищенное - не знаю, знаю что первые версии вообще исходник хранили, если память не подводит. Задним числом мы все умны, ему надо было своевременно головой думать, тогда бы и не было цепной реакции событий, приведшей к геноциду ЛСД. ЛСД может быть и валенок, но когда раздаешь такие вещи, то надо хотя бы уведомлять юзверов, что в защите нет обфускации и король голый. Вот поэтому я в первом посте как в букваре кучу всяких разъяснений понаписал. Чтоб у обычного юзвера была возможность понять когда защита есть и когда защиты нет. Лоадеры это слабая степень защиты Это не защита. Лоадер - это протектор, суть протектора скрыть байт-код скрипта в исходном файле от анализа всякими инструментами. И с этим к слову сказать лоадеры справляются на ура, ну за исключением случаев когда он дырявый или не хранит скрипт в зашифрованном виде. Но это косяки уже создателя. Например для хука exec/eval сделал python27.dll А в памяти найти и дампнуть не проще, зачем такая лишняя работа )))))) зы: тут еще подкинули задачку вытянуть рабочий скрипт, избавится от лоадера... http://dropmefiles.com/wJ3qs все декомпилируется без проблем, но воз и ныне там. Там он внутри пида или пид только для расшифровки и инжекта? И к слову сказать кину грабли в огород из котрого они прилете - пид хакнуть как не чего делать, если он конечно не защищен. Но это уже другая плоскость. А вообще я еще 1,5 года назад в теме о демокпиляции изложил теорию защиты путем совмещения разных платформ, питон скрипт и инжектор на любом другом языке - лучше протектора не придумать. Беда только вот что в СИ я не работаю )))))) Но скоро эту помеху я исправлю ))))) зы: Автору надо было pyd зазипить и просто прилепить к концу файла, тогда бы он в архиваторах открывался, было бы красиво ))))) Edited March 1, 2015 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
DrWebber 5 #255722 Posted March 1, 2015 зы: Лоадеры это слабая степень защиты - рано или поздно код исполняется, и исполнение кода можно перехватить, и что исполняется сохранить в файл. Лоадеры с привязкой к танкам или нет - неважно, вскрываются через внесение изменений в исходники питона. Например для хука exec/eval сделал python27.dll, которая все вызовы exec пишет в файлы. Кстати все это можно сделать стандартными средствами питона. Quote Share this post Link to post Short link Share on other sites
fecell 125 #255723 Posted March 1, 2015 когда раздаешь такие вещи Дык поэтому и не раздавал никому) Раздавал только одну единственную версию (сначала сайт был, потом приложение под винду стало). Тот пинг из её результата выдернут. Другой момент, что если криптовать как ЛСД неудачно криптовал в орионе (когда предварительно весь скрипт в строку помещал), то и результат будет такой-же. Тут уже горе от ума, криптор помочь не может ;) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,213 #255732 Posted March 1, 2015 Кстати все это можно сделать стандартными средствами питона. Со стандартными хуками можно бороться всякими способами, я даже выше вроде приводил несколько готовых способов на вскидку как задетектить хукинг, так что это бесконечное противостояние, а вот дамп памяти или хакинг dll - это по серьёзней будет )))) Тут уже горе от ума, криптор помочь не может ;) Вот потому и треба просвещать этих товарищей чтоб они себе руку или голову не прострелили )))) Я когда узнал что произошло выпал в страшный осадок и дико ругался, такой подставы я просто не ожидал ))) Quote Share this post Link to post Short link Share on other sites
DrWebber 5 #255738 Posted March 1, 2015 (edited) Со стандартными хуками можно бороться всякими способами, я даже выше вроде приводил несколько готовых способов на вскидку как задетектить хукинг, так что это бесконечное противостояние, а вот дамп памяти или хакинг dll - это по серьёзней будет )))) Я не говорил, что стандартными хуками) Там не все так просто, но возможно. Теми способами, которые ты описывал, такие хуки не задетектить. Edited March 1, 2015 by DrWebber Quote Share this post Link to post Short link Share on other sites
KACTET 317 #255793 Posted March 1, 2015 (edited) И ведь ещё же есть игры на движке BigWorldа .. Может через них получиться что либо? (Игра сталкер например, скрипты чистые в ней все..) Пример: # Embedded file name: scripts/common/matrix_providers.py import BigWorld import Math def ShiftProvider(matrix, shift): shift_matrix = Math.Matrix(matrix) shift_matrix.setTranslate(shift) shifted_prov = Math.MatrixProduct() shifted_prov.a = matrix shifted_prov.b = shift_matrix return shifted_prov def ScaleProvider(source_provider, scale): scaled_matrix = Math.Matrix() scaled_matrix.setScale(scale) scaled_product = Math.MatrixProduct() scaled_product.a = scaled_matrix scaled_product.b = source_provider return scaled_product Edited March 1, 2015 by KACTET 1 Quote Share this post Link to post Short link Share on other sites
KACTET 317 #256634 Posted March 6, 2015 Ух посмотрел в этой версии упаковочку... Хорошая... Респект... Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,213 #256731 Posted March 6, 2015 Ух посмотрел в этой версии упаковочку... Хорошая... Респект... В следующей версии протектор будет скрывать атрибуты модулей, чтоб нельзя было хукать функции, классы и перехватывать содержимое переменных и констант. 1 Quote Share this post Link to post Short link Share on other sites
Dno__Dna_Na_Dne__Dna 2 #257449 Posted March 10, 2015 Подскажите, а можно ли снять защиту поставленную pjorion со скрипта? Quote Share this post Link to post Short link Share on other sites
Yusha 8 #257657 Posted March 12, 2015 (edited) Подскажите, а можно ли снять защиту поставленную pjorion со скрипта? Однозначно да. .....но! Защита считается надежной... если силы (средства) затраченные на ее преодоление превышают стоимость (ценность) защищаемой информации.... На сегодняшний день информации о снятой защите Ориона нет, можно предположить, что пока никто не заморачивался.... но повторюсь, снять можно абсолютно любую защиту... Edited March 12, 2015 by Yusha Quote Share this post Link to post Short link Share on other sites
fecell 125 #257659 Posted March 12, 2015 (edited) 'офтоп' головоломка)) ничего серьезного, но занимательно.. Смотрите исходный код и результат выполнения на самом сайте, удивляйтесь почему именно так исполняется, а не так как ожидается. http://ideone.com/GuSU4F ответ в исходнике (качается тоже с сайта, но для начала открывать блокнотом или вордом (но не Wordpad!), потом только орионом (или вордпадом, или фаром), дабы не испортить себе момент удивления) зы: кому интересно гуглите RLO, PDF (utf-8), а вообще подсмотрено сегодня на хабре.. просто поделился.. ;) Edited March 12, 2015 by fecell 2 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,213 #257662 Posted March 12, 2015 RLO Ага, забавный символ ))))) Quote Share this post Link to post Short link Share on other sites
fecell 125 #257676 Posted March 12, 2015 (edited) Подскажите, а можно ли снять защиту поставленную pjorion со скрипта?При учете что исходники питона открыты и никто не запрещает добавить в них код для перехвата и анализа исполняемого скрипта, то гарантированно можно сказать:Однозначно да.другой вопрос сложность этой работы, который в свою очередь поднимает вопрос квалификации того, кто это будет делать.. И тут возникает вопрос заинтересованности такого специалиста, который в свою очередь сводится к вопросу оплаты его труда. зы: и не факт, что он даже за Сумму проявит желание разбирать геморрой... но можно и самому, конечно.. Edited March 12, 2015 by fecell Quote Share this post Link to post Short link Share on other sites