Ekspoint 2,122 #496923 Posted February 4, 2021 03.02.2021 в 01:58, Molnio сказал: Почему файл .pyc весит 45 кб а когда декомпилирую то 1 кб и внутри файла ничего нет кроме надписей: # Python bytecode 2.7 (decompiled from Python 2.7) # Embedded file name: mod_players_online # Compiled at: 2021-01-27 10:19:54 А что надо от моего мода? Quote Share this post Link to post Short link Share on other sites
Molnio 5 #496925 Posted February 4, 2021 Только что, Ekspoint сказал: А что надо от моего мода? спортивный интерес. Недавно начал пайтон изучать а конкретно интересно как ты реализовал функцию перетаскивания объекта по экрану. Даже в бою есть такие моды. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #496927 Posted February 4, 2021 5 минут назад, Molnio сказал: спортивный интерес. Недавно начал пайтон изучать а конкретно интересно как ты реализовал функцию перетаскивания объекта по экрану. Даже в бою есть такие моды. Это в сторону Action scripts копать надо, а не притон Quote Share this post Link to post Short link Share on other sites
Molnio 5 #496928 Posted February 4, 2021 21 минуту назад, Ekspoint сказал: Это в сторону Action scripts копать надо, а не притон а есть какие то гайды или мануалы по редактированию данных скриптов, как и чем декомпилировать и так далее. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,149 #496932 Posted February 4, 2021 1 час назад, Molnio сказал: функцию перетаскивания объекта по экрану. Это надо сюда https://github.com/GambitER/GUIFlash смотреть, а не в мод Quote Share this post Link to post Short link Share on other sites
Molnio 5 #496936 Posted February 4, 2021 1 час назад, StranikS_Scan сказал: Это надо сюда https://github.com/GambitER/GUIFlash смотреть, а не в мод спасибо Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #497196 Posted February 8, 2021 25.02.2015 в 18:35, StranikS_Scan сказал: Откройте его любым текстовым редактором например блокнотом. И смотрите что находиться в конце файла 1. Файл обработан защитой от mercger 2. Файл обработан защитой от lelicopter 3. файл обработан защитой от if_then_else 4. Файл обфусцирован в Орионе 5. Файл обработан протектором в Орионе Есть ещё такой протектор как scraZ. Гугление показало, что его можно было скачать с сайта scraz.me, который уже не существует. Это был платный или бесплатный продукт? Интересно в нём покопаться. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 177 #497197 Posted February 8, 2021 45 минут назад, Dragon armor сказал: Это был платный или бесплатный продукт? Он имел две версии. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,149 #497212 Posted February 9, 2021 @Dragon armor было две версии классическая на основе запутывания байт-кода и потом была еще с pyd-инжектором, который инжектил код в обход стандартного вызова exec (но это не точно, что он именно это умел делать, это я так думаю ибо нативный хук exec - это простой и эффективный способ обойти протектор) Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #497213 Posted February 9, 2021 8 часов назад, DrWeb7_1 сказал: Он имел две версии. И все пользуются бесплатной, ясно. Искал сайт через web.archive, но выдало, что результат не найден. 1 минуту назад, StranikS_Scan сказал: нативный хук exec - это простой и эффективный способ обойти протектор Там ещё и все строки выносятся отдельно, которые загрузчик создаёт. Простой дамп скрипта не покажет их. Хорошо, что однообразно делает это, а то можно было бы зарандомить немного и ещё на ровном месте усложнить протектор. А поделиться scraZ_setup.exe кто-то может? Хотя, есть у меня подозрения, что исполняемый файл так же защищён чем-нибудь типа vmprotect. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,149 #497217 Posted February 9, 2021 (edited) 1 час назад, Dragon armor сказал: усложнить протектор. Протекторы обычно никто не ковыряет, ибо смысла нет, ведь на exec все равно подается расшифрованная строка. Достаточно её сдампить. И вот с этим очень тяжело бороться. Тут либо сделать так чтобы exec не использовался вообще*, либо бить код на части, добавлять ложные куски и делать много exec**, и то и другое в реальности - очень сложно и долго делать. А без протектора защита теряет сразу 50% своей прочности. Остальные 50% это обфускация байткода*** (того что в exec идет) и еще есть обфускация пайтон-кода**** (но это ерунда, только от детей, ибо никак не препятствует тому чтобы кто-то подсмотрел твои ключевые элементы кода). *Например, либо создать пид, в котором реализовать собственный нативный код выполнения, но его тоже могут дизаснуть и потом сдампить строку, либо превращать пайтон-код скриптов в си-код и компилить из этого пид, это самый крутой способ, но очень сложный **Задача тоже крайне не тривиальная и трудоёмкая ***Тут тоже можно всякого наворотить, если скажем игра с JMP-опкодами это позавчерашний день, то из современного (на мой взгляд) это полное видоизменение байткода для опосредованного управления регистрами и содержимом стека, когда интерпретатор выполняет непонятные действия (причем рандомные в каждом новом скрипте), но в итоге они приводят к нужному результату. Декомпилировать такой байткод автоматически нереально, потому что сопоставить ему пайтон-код однозначно можно будет только вручную. Ну и производительность от этого падает, т.к. "процессорное" время тратится впустую. ****Это когда пайтон-код переписывается в запутанный, сюда же кстати относиться и переименование/шифрование строк и имен переменных, функций и атрибутов. Но это все может шибко убить производительность интерпретатора Есть такое вот июнь 2017-го. 2017 год.zip Edited February 9, 2021 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #497222 Posted February 9, 2021 1 час назад, StranikS_Scan сказал: Есть такое вот июнь 2017-го. PEiD утверждает, что тут UPolyX v0.5. Так и есть, исполняемый файл защищён. Какой протектор требовательный. И виртуальная машина ему не нравится, и запущенный рядом дебаггер, и дату переведи ему на правильную. Цитата signing key: scraZ ~ Balina Вот что это означает. Теперь ясно-понятно. Да, это оно. Ещё и про-лицензия. Всё так же, константы в одном месте, код в другом, вызов через функцию в третьем месте. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,149 #497235 Posted February 9, 2021 2 часа назад, Dragon armor сказал: PEiD утверждает, что тут UPolyX v0.5. Сигнатуры старые скорее всего. Он часто так показывает. Скорее всего там какой-то из современных протекторов. Quote Share this post Link to post Short link Share on other sites
fecell 125 #499553 Posted March 22, 2021 09.02.2021 в 19:37, Dragon armor сказал: Вот что это означает. Теперь ясно-понятно. Да, это оно. Ещё и про-лицензия. Всё так же, константы в одном месте, код в другом, вызов через функцию в третьем месте. Прикольно =) Не совсем так, но частично верно. 09.02.2021 в 16:18, Dragon armor сказал: И все пользуются бесплатной, ясно. Искал сайт через web.archive, но выдало, что результат не найден. версия с .pyd имела большие ограничения, поэтому её разработка была прекращена. в той версии любой скрипт после декомпиляции был лишь. __import__('scraZ').scarZ() в свою очередь pyd из вызываемого скрипта брал все остальное, расшифровывал и запускал. ёмнип, в lnotab хранились сами зашифрованные данные. как запускался после расшифровки не помню, надо поднимать исходники, Py_EvalEx вроде вызывался. Был расшифрованный скрипт еще чем-то защищен или нет (типа перемешать байткод), уже забыл. Та версия никогда нигде не публиковалась, была тестовой предварительной. В сети её не найти. Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,147 #499643 Posted March 24, 2021 09.02.2021 в 10:06, StranikS_Scan сказал: превращать пайтон-код скриптов в си-код и компилить из этого пид, это самый крутой способ, но очень сложный не такой уж и сложный, но минусы имеются - постоянно нужно тягать зависимости (а-ля xfw.native), которые будут экспортировать нужные питоновские символы тут нет серебрянной пули, каждая защита должна выбираться исходя из требований к ее стойкости Quote Share this post Link to post Short link Share on other sites
SoprachevAK 26 #506346 Posted July 30, 2021 Есть повторяемая проблема обфускации кода. Шаги: Иерархия папок: -modTest --res\scripts\client\gui\mods ---mod_test.py --meta.xml mod_test.py: # -*- coding: utf-8 -*- print('Hello world') Через PjOrion делаю Bytecode->Obfuscate->Compile py-file и выбираю mod_test.py >>> Obfuscating... Please wait the completion message! >>> Compile obfuscated file 'mod_test.py' [0.03 seconds] Собираю в .wotmod файл, кидаю в mods чистого клиент танков. Запускаю игру, в лог выводится /------------------------------------------------------------------------------------------\ WorldOfTanks(x86) 0.0.0.0 (compiled at 07:18:44 Jul 8 2021) starting on Sat Jul 31 02:15:09 2021 2021-07-31 02:15:09.864: INFO: [Config] Command line: C:/Games/World_of_Tanks_RU/win32/WorldOfTanks.exe "" 2021-07-31 02:15:11.778: INFO: [SOUND] Start loading Main task 2021-07-31 02:15:11.778: INFO: [SOUND] Start loading Mod task 2021-07-31 02:15:11.779: INFO: [Scaleform] Create Scaleform Manager... 2021-07-31 02:15:11.854: INFO: Scaleform initialized 2021-07-31 02:15:11.867: INFO: [Scaleform] Scaleform Manager created. 2021-07-31 02:15:11.867: INFO: Unbound initialized 2021-07-31 02:15:12.469: INFO: WOT-Transmission initialization completed! 2021-07-31 02:15:12.471: INFO: You are in the __main__ module, use a WOT-Transmission menu command to work with the client 2021-07-31 02:15:12.472: INFO: ===================================================================================== 2021-07-31 02:15:12.568: TRACE: monkeyPatchOpen: BWUtil.monkeyPatchOpen: Patching open() True 2021-07-31 02:15:12.570: INFO: [Config] Default encoding set to utf-8 2021-07-31 02:15:12.572: TRACE: revertPatchedOpen: BWUtil.revertPatchedOpen: Reverting open() 2021-07-31 02:15:12.610: INFO: [PY_DEBUG] Release Client - Content Type: sd 2021-07-31 02:15:12.610: INFO: [PY_DEBUG] Checking C:/Games/World_of_Tanks_RU/res_mods/1.13.0.1/: mods not found 2021-07-31 02:15:12.610: INFO: [PY_DEBUG] Checking C:/Games/World_of_Tanks_RU/mods/1.13.0.1/: mods found 2021-07-31 02:15:12.611: INFO: [PY_DEBUG] Mod package 'c:/games/world_of_tanks_ru/mods/1.13.0.1/mod.testmod_0.0.1.wotmod' loaded 2021-07-31 02:15:14.530: INFO: [Scaleform] Create GUI Component: 'empty' 2021-07-31 02:15:14.530: INFO: [Scaleform] Change Owner on GUI Component: 'empty' -> 'loading_screen.gui' 2021-07-31 02:15:14.542: INFO: [Scaleform] Create GUI Component: 'FlashGUIComponent' 2021-07-31 02:15:14.542: INFO: [Scaleform] Change Owner on GUI Component: 'FlashGUIComponent' -> 'gui/flash/gameLoadingApp.swf' 2021-07-31 02:15:14.543: INFO: [gui.Scaleform.game_loading] Build: RELEASE 07:18:44 Jul 8 2021. Version: 2.8.0 2021-07-31 02:15:14.544: INFO: [gui.Scaleform.game_loading] App Startup 2021-07-31 02:15:14.616: DEBUG: [helpers.uniprof.regions] Region is entered: label=offline.game_loading, color=0xCE2606 2021-07-31 02:15:14.730: INFO: [gui.Scaleform.game_loading] Registering graphics settings 2021-07-31 02:15:14.747: INFO: [gui.Scaleform.game_loading] Preloading Resources 2021-07-31 02:15:23.843: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:23.844: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:23.845: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:23.846: WARNING: [web.web_client_api] Do not use "required" and "default" at the same time! 2021-07-31 02:15:24.022: INFO: [Scaleform] Create GUI Component: 'FlashGUIComponent' 2021-07-31 02:15:24.022: INFO: [Scaleform] Change Owner on GUI Component: 'FlashGUIComponent' -> 'gui/flash/waitingTransitionsApp.swf' 2021-07-31 02:15:24.745: INFO: Hello world После чего игра крашится без каких либо дополнительных ошибок. Тот же самый мод скомпиленный без обфускации игру не крашит, hello world выводит В чём может быть проблема? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,149 #506358 Posted July 31, 2021 (edited) 6 часов назад, SoprachevAK сказал: # -*- coding: utf-8 -*- print('Hello world') Добавьте строку import BigWorld в начало модуля и будет ОК. Это древняя штука у них, появилась несколько лет назад после очередной оптимизации нативного пайтона. Научного объяснения этому я не знаю, но думаю это связано с памятью и областями видимости и исполнения кода. То что сам скрипт и обфускация кода тут не причем, это очевидно. Модуль без проблем работает в обычным пайтоне. # -*- coding: utf-8 -*- import BigWorld print('Hello world') Edited July 31, 2021 by StranikS_Scan 1 Quote Share this post Link to post Short link Share on other sites
baka01998 4 #507431 Posted August 20, 2021 (edited) Такой вопрос, у меня в моде есть папка objects с разными файлами Как со скрипта PjOrion можно их открыть, получить локальный путь? не загружая в самом моде если их хранить вне мода то уже StaticObjectMarker3D не видит по полному пути решение - conf_file = openSection('scripts/client/gui/mods/objects') Edited August 20, 2021 by baka01998 нашел ответ на вопрос Quote Share this post Link to post Short link Share on other sites
Buster2002 0 #508660 Posted September 21, 2021 (edited) >>> Connection to WOT: v.1.14.1.0 Common Test build 978 [C:\Games\World_of_Tanks_CT\] >>> Start the game... >>> WOT-Transmission closed Hi, the game launches without issues however the transmission is instantly closed. How can I fix this? I am following this video. Edited September 21, 2021 by Buster2002 Quote Share this post Link to post Short link Share on other sites
Polyacov_Yury 1,662 #508661 Posted September 21, 2021 Point it to either win32/WorldOfTanks.exe or win64/WorldOfTanks.exe. You also need to create symlinks to paths.xml and version.xml (IIRC). Quote Share this post Link to post Short link Share on other sites