fecell 125 #221162 Posted October 9, 2014 почему не открывается python shell? некорректный вопрос.. C:\>python Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> и открылся python shell. ))) но речь о IDLE, который GUI для питоновского шела.. запусти его вручную с командной строки и посмотри что напишет. C:\Python27\Lib\idlelib\idle.py где C:\Python27\ - это где у тебя установлен питон. Quote Share this post Link to post Short link Share on other sites
lojtar 1 #221175 Posted October 9, 2014 некорректный вопрос.. C:\>python Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> и открылся python shell. ))) но речь о IDLE, который GUI для питоновского шела.. запусти его вручную с командной строки и посмотри что напишет. C:\Python27\Lib\idlelib\idle.py где C:\Python27\ - это где у тебя установлен питон. вот что пишет: Quote Share this post Link to post Short link Share on other sites
fecell 125 #221389 Posted October 10, 2014 вот что пишет: 1.JPG C:\Python27\Lib\lib-tk папка есть? если нет, переустанови питон, включив при установке компонент "Tcl/Tk". Quote Share this post Link to post Short link Share on other sites
lojtar 1 #222400 Posted October 14, 2014 C:\Python27\Lib\lib-tk папка есть? если нет, переустанови питон, включив при установке компонент "Tcl/Tk". есть эта папка и в ней тоже что то есть... Quote Share this post Link to post Short link Share on other sites
Huitaarva 18 #226667 Posted November 3, 2014 (edited) А кто скажет, как декомпилить поделки LSDMax ? У него там что-то с маршалом вроде... Как привести это в читаемый код ? Типа такого - http://www.koreanrandom.com/forum/topic/15280-pjorion-редактирование-компиляция-декомпиляция-обф/?p=211182 Edited November 3, 2014 by Huitaarva Quote Share this post Link to post Short link Share on other sites
fecell 125 #230629 Posted November 11, 2014 А кто скажет, как декомпилить поделки LSDMax? Делать 10 минут, а расписывать как делать 3 часа... :( Quote Share this post Link to post Short link Share on other sites
cilutin 0 #230655 Posted November 11, 2014 Делать 10 минут, а расписывать как делать 3 часа... :( Делать минуту в орионе, если там конечно только маршал и бейс64 :) Quote Share this post Link to post Short link Share on other sites
fecell 125 #230667 Posted November 11, 2014 (edited) lsdmax_rguisher.pyc 1. декомпилируем exec __import__('marshal').loads('eNpFlMmuo1YQhn27W1GSJ8gjXIkFMxgpHcVmxoeDjRm9YzKGg82Mwdu8bt4hwVGUlKo+/aqSSrWpP9n8G1/X+n2tnluRrvmxqTaby3/6Y3P52GSbTfllk31syq+b9Mvmj493rtNv7orz53tH8dcasP9z1ZkxV25FTvUrd6+pcDWzg9EaqD07R6+ZoCyGhG6JLjDZioB6baowzU11zPOsxDDgNfbgtdo0z9OWYUkhQwZTNT3Q/X4i0JJeO5CEcPS2EeIEeSYoa3mVygPrmu1R4kEbz1AbTyyIm/BhEsYNOuoYH6ks8fDmJYwNCglqaDFPjNngHDpQsGPsyF/c+oxs4Jx2mca3ZU07XkSBSnLds6AIU/sgIMCwCzV6GVYjyyYjZaE5FdQER95KGWNv3GUqJ/y1JUCBQLcw16m1qMoJfToU4kPgC8DCBTUXxDafPKfOnlsREgkb9D4LyIgfXnENm3QkRvLW77NDirOSTVNQGF9buFO4tAXBzAgWnQR8H9oHGZDmHMQRIcSVc+RipUlkYPrW/aJFFv949XN8pXrXeAoqhdECfngQQtlgJCglN7sTiXAWogMRz6TF7TkvJh0UBHiyVY5JlFJXR8vJR5EzpcPgKt0s1bOc+Ygb9t1x57IEuCWky3PrvWclSDiH4jmFF02BzB5gHObuFpYXTmo7qvYPNFlLL5vWG42Z45QvFgzT7gVMOLO4dEya2Ixa4vKRfHj3PuohxT/BxS/aLc1epBZ/4EuklpDByeK5U3B5exVT5FiJk5PNg81RPPnpBA6yjItXiPGjIiG8vsHlOUiRZe6igNz7zwtueOAe3WrUIusAG9cR1SYLUb4PbjJUXm0akXtaA6EcxmaBDqLCzrZb6X4Ve4Om6YnuHjsg7jXrLHpINCL6FW+vLarsIeSzc761PbVTzycZMvtHEEyge03LiPbiTW2B0qtZeGL4uGKNs942vrjDEOkkWeQtnqUvubLkzsGOlqXn2INfKMyO1yLdg14tOk9VTBQNiL0nKYRi99Uty13tZGrX/uhpO7w9G8DjRsbCNRF2e+yE8ieKnOHydPAp1bFSHyWOzGRjy1x2eleckGokJlVod7RD1lPnXVthCBre1FORXcsFwIllcG1f+5WRYRSeo1SVkPQk42aMTNyFJw07TjgjoT3nUvn375/f1t8f3nhVRTz8sIo46jOOGX5++0mW1Pemy/p++Ok94Zh3J80+387zP4Z/8OOKX+91OlbZbx9vR/qy4pePvwEPkWqS'.decode('base64').decode('zlib')) 2. меняем "exec" на "new_code =", + добавляем запись значения переменной new_code в файл (добавляя 8 байт заголовок .pyc-файла) new_code = __import__('marshal').loads('eNpFlMmuo1YQhn27W1GSJ8gjXIkFMxgpHcVmxoeDjRm9YzKGg82Mwdu8bt4hwVGUlKo+/aqSSrWpP9n8G1/X+n2tnluRrvmxqTaby3/6Y3P52GSbTfllk31syq+b9Mvmj493rtNv7orz53tH8dcasP9z1ZkxV25FTvUrd6+pcDWzg9EaqD07R6+ZoCyGhG6JLjDZioB6baowzU11zPOsxDDgNfbgtdo0z9OWYUkhQwZTNT3Q/X4i0JJeO5CEcPS2EeIEeSYoa3mVygPrmu1R4kEbz1AbTyyIm/BhEsYNOuoYH6ks8fDmJYwNCglqaDFPjNngHDpQsGPsyF/c+oxs4Jx2mca3ZU07XkSBSnLds6AIU/sgIMCwCzV6GVYjyyYjZaE5FdQER95KGWNv3GUqJ/y1JUCBQLcw16m1qMoJfToU4kPgC8DCBTUXxDafPKfOnlsREgkb9D4LyIgfXnENm3QkRvLW77NDirOSTVNQGF9buFO4tAXBzAgWnQR8H9oHGZDmHMQRIcSVc+RipUlkYPrW/aJFFv949XN8pXrXeAoqhdECfngQQtlgJCglN7sTiXAWogMRz6TF7TkvJh0UBHiyVY5JlFJXR8vJR5EzpcPgKt0s1bOc+Ygb9t1x57IEuCWky3PrvWclSDiH4jmFF02BzB5gHObuFpYXTmo7qvYPNFlLL5vWG42Z45QvFgzT7gVMOLO4dEya2Ixa4vKRfHj3PuohxT/BxS/aLc1epBZ/4EuklpDByeK5U3B5exVT5FiJk5PNg81RPPnpBA6yjItXiPGjIiG8vsHlOUiRZe6igNz7zwtueOAe3WrUIusAG9cR1SYLUb4PbjJUXm0akXtaA6EcxmaBDqLCzrZb6X4Ve4Om6YnuHjsg7jXrLHpINCL6FW+vLarsIeSzc761PbVTzycZMvtHEEyge03LiPbiTW2B0qtZeGL4uGKNs942vrjDEOkkWeQtnqUvubLkzsGOlqXn2INfKMyO1yLdg14tOk9VTBQNiL0nKYRi99Uty13tZGrX/uhpO7w9G8DjRsbCNRF2e+yE8ieKnOHydPAp1bFSHyWOzGRjy1x2eleckGokJlVod7RD1lPnXVthCBre1FORXcsFwIllcG1f+5WRYRSeo1SVkPQk42aMTNyFJw07TjgjoT3nUvn375/f1t8f3nhVRTz8sIo46jOOGX5++0mW1Pemy/p++Ok94Zh3J80+387zP4Z/8OOKX+91OlbZbx9vR/qy4pePvwEPkWqS'.decode('base64').decode('zlib')) import marshal with open('script.pyc', 'wb') as fc: fc.write('\x03\xf3\x0d\x0a\0\0\0\0') marshal.dump(new_code, fc) 3. декомпилируем полученный script.pyc import zlib, base64 exec zlib.decompress(base64.b64decode('eJxlUl1vozgUfd9fMeKJqJkqSTPVpvNECY0IOCULM5l0NIoMGNdgMGuggej++LVpRtVqHvxxv84519ekJ4lpsLIWsv0kydfrLcYNuV8ak69Ex02OyzjFn+rp8PD7LqbxNHuQ5LbpYnM0JhNTGubP2ecV/pz9upkY02tq+VCb5XSYTN9Rb+P7ZUoSkRLTQAeH7qjo3TVa2LlDUUS9F9vqn0NL++Z2uVe+okOR1aFy36GLo061hjE+5h6Zvjv/z80LikLry4fvqO2lTYW3Y9bKXW9LO/9Gg9CqgvVToew8CN0c5XsW5L1a7tzboNpdu0u1hsBeKd/5DR32N9uz8NAF6dqLXx49O3cX7sYRKEL1MxXba09blTP6bFpcELMWOmZHaO7nzsxbf2sUJw9G2+39/Kn09jp+1LjDUem0c9S9aK0bx1O6B6Vb1TkXX/c8FPcad2fTHg1nig4jT4/G3pylwjx7a6tBrPAU50Lhc1U76NpdSFXc6T276F7CM91enLutxrhYjZ6Dqr2oWK31oDzR3IpH4xbd7iy++HmiNc6MiZr4dcR4Gj/EP1nVmsasN27wLZWiq835ZDq/n/yaGjN4/1iwAF/E8fCdkTOcTg1pn5gkbvWdvLKEE/CfN+7uFDk/ohNywtDaOMAaX1BWwZ/JVLmahokqkOKNpUTCGpeYkgBXhENFzqda1B3HLYEYbMikKCF5xRUlIWlbVtHHIcIUPrLCBHOSCVkCJa3zb8fqklRtY7eSg8RVGrGSQEN4BnXXvLrzvyukBChGqLFsGeYQ47bl5JSIqpWCA+k1TceaVyVOIygFygTKRayys65KWiF4A7HaIVNVoCTwGCcFHLCsVDF0FRslhegUHQMHfsPVHA/qSJLV6u4O/HCNrB+QkgwkaTtZwT/vdI+jIuD61eEJ84ZAIriQkGJcM2iHmkAkOwI7URF403NhGQiefjyLNv54/HBoWlJe+2/gkdGDkDw1bpuaM/UNQH+Pv/4DkB6U2g==')) 4. меняем "exec" на "newcode =", + записываем результат в файл script2.py: import zlib, base64 new_code = zlib.decompress(base64.b64decode('eJxlUl1vozgUfd9fMeKJqJkqSTPVpvNECY0IOCULM5l0NIoMGNdgMGuggej++LVpRtVqHvxxv84519ekJ4lpsLIWsv0kydfrLcYNuV8ak69Ex02OyzjFn+rp8PD7LqbxNHuQ5LbpYnM0JhNTGubP2ecV/pz9upkY02tq+VCb5XSYTN9Rb+P7ZUoSkRLTQAeH7qjo3TVa2LlDUUS9F9vqn0NL++Z2uVe+okOR1aFy36GLo061hjE+5h6Zvjv/z80LikLry4fvqO2lTYW3Y9bKXW9LO/9Gg9CqgvVToew8CN0c5XsW5L1a7tzboNpdu0u1hsBeKd/5DR32N9uz8NAF6dqLXx49O3cX7sYRKEL1MxXba09blTP6bFpcELMWOmZHaO7nzsxbf2sUJw9G2+39/Kn09jp+1LjDUem0c9S9aK0bx1O6B6Vb1TkXX/c8FPcad2fTHg1nig4jT4/G3pylwjx7a6tBrPAU50Lhc1U76NpdSFXc6T276F7CM91enLutxrhYjZ6Dqr2oWK31oDzR3IpH4xbd7iy++HmiNc6MiZr4dcR4Gj/EP1nVmsasN27wLZWiq835ZDq/n/yaGjN4/1iwAF/E8fCdkTOcTg1pn5gkbvWdvLKEE/CfN+7uFDk/ohNywtDaOMAaX1BWwZ/JVLmahokqkOKNpUTCGpeYkgBXhENFzqda1B3HLYEYbMikKCF5xRUlIWlbVtHHIcIUPrLCBHOSCVkCJa3zb8fqklRtY7eSg8RVGrGSQEN4BnXXvLrzvyukBChGqLFsGeYQ47bl5JSIqpWCA+k1TceaVyVOIygFygTKRayys65KWiF4A7HaIVNVoCTwGCcFHLCsVDF0FRslhegUHQMHfsPVHA/qSJLV6u4O/HCNrB+QkgwkaTtZwT/vdI+jIuD61eEJ84ZAIriQkGJcM2iHmkAkOwI7URF403NhGQiefjyLNv54/HBoWlJe+2/gkdGDkDw1bpuaM/UNQH+Pv/4DkB6U2g==')) with open('script2.py', 'wb') as fc: fc.write(new_code) 5. имеем script2.py exec("import re;import base64");exec((lambda p,y:(lambda o,b,f:re.sub(o,b,f))(r"([0-9a-f]+)",lambda m:p(m,y),base64.b64decode("MWEgNgoxIDM2CjEgMTgKZCAxOSAxIDM1CmQgMTkuMTAuMmQuMzEuMmEuMyAxIDMKZCAxYiAxIDE1CmQgMTkuMTAuMjkgMSA5CmQgMTkuMTYgMSA4CgoKNiA9IDJmCjUgPSAnPDFkIDJjPSIjMjQiPjxiPjI1KGMpIDI4IDIyPC9iPjwvMWQ+JwoKMzMgPSAzLmYKCjI2IGEoMTMpOgoJMWEgNgoJMzMoMTMpCgkzMiA2OgoJCTM1LjE0KDUsIDJlPTM1LjIxLjFmKQoJCTYgPSAyYgoKCjMuZiA9IGEKCgoyNiA0KDEzLCAxYyk6CgkzNCgxMywgMWMpCgkxMiA9IDE4LjIwKDAsMikKCTM2LjFlKDEyLCAxNSg4LjExKCkuZSwgJzE3JywgMzAsIDM2LjIzKCkpKQoJMjcKCgozNCA9IDkuNwo5LjcgPSA0")))(lambda a,b:b[int("0x"+a.group(1),16)],"0|import|2|LobbyView|__setFireInVehicle|LOGIN_TEXT_MESSAGE|isLogin|_setFireInVehicle|g_sessionProvider|DamagePanel|new_populate|b|C|from|changeSettingByTag|_populate|Scaleform|getEquipmentsCtrl|randTime|self|pushI18nMessage|partial|battle_control|extinguisher|random|gui|global|functools|bool|font|callback|Warning|uniform|SM_TYPE|guisher|player|cc9933|LSDMAX|def|return|Random|Battle|lobby|False|color|daapi|type|True|None|view|if|old_populate|old_setFireInVehicle|SystemMessages|BigWorld".split("|"))) 6. меняем второй "exec" на "new_code =" + запись результата в файл: exec("import re;import base64"); new_code = ((lambda p,y:(lambda o,b,f:re.sub(o,b,f))(r"([0-9a-f]+)",lambda m:p(m,y),base64.b64decode("MWEgNgoxIDM2CjEgMTgKZCAxOSAxIDM1CmQgMTkuMTAuMmQuMzEuMmEuMyAxIDMKZCAxYiAxIDE1CmQgMTkuMTAuMjkgMSA5CmQgMTkuMTYgMSA4CgoKNiA9IDJmCjUgPSAnPDFkIDJjPSIjMjQiPjxiPjI1KGMpIDI4IDIyPC9iPjwvMWQ+JwoKMzMgPSAzLmYKCjI2IGEoMTMpOgoJMWEgNgoJMzMoMTMpCgkzMiA2OgoJCTM1LjE0KDUsIDJlPTM1LjIxLjFmKQoJCTYgPSAyYgoKCjMuZiA9IGEKCgoyNiA0KDEzLCAxYyk6CgkzNCgxMywgMWMpCgkxMiA9IDE4LjIwKDAsMikKCTM2LjFlKDEyLCAxNSg4LjExKCkuZSwgJzE3JywgMzAsIDM2LjIzKCkpKQoJMjcKCgozNCA9IDkuNwo5LjcgPSA0")))(lambda a,b:b[int("0x"+a.group(1),16)],"0|import|2|LobbyView|__setFireInVehicle|LOGIN_TEXT_MESSAGE|isLogin|_setFireInVehicle|g_sessionProvider|DamagePanel|new_populate|b|C|from|changeSettingByTag|_populate|Scaleform|getEquipmentsCtrl|randTime|self|pushI18nMessage|partial|battle_control|extinguisher|random|gui|global|functools|bool|font|callback|Warning|uniform|SM_TYPE|guisher|player|cc9933|LSDMAX|def|return|Random|Battle|lobby|False|color|daapi|type|True|None|view|if|old_populate|old_setFireInVehicle|SystemMessages|BigWorld".split("|"))) with open('lsdmax_rguisher.py', 'wb') as fc: fc.write(new_code) 6. имеем lsdmax_rguisher.py global isLogin import BigWorld import random from gui import SystemMessages from gui.Scaleform.daapi.view.lobby.LobbyView import LobbyView from functools import partial from gui.Scaleform.Battle import DamagePanel from gui.battle_control import g_sessionProvider isLogin = True LOGIN_TEXT_MESSAGE = '<font color="#cc9933"><b>LSDMAX(C) Random guisher</b></font>' old_populate = LobbyView._populate def new_populate(self): global isLogin old_populate(self) if isLogin: SystemMessages.pushI18nMessage(LOGIN_TEXT_MESSAGE, type=SystemMessages.SM_TYPE.Warning) isLogin = False LobbyView._populate = new_populate def __setFireInVehicle(self, bool): old_setFireInVehicle(self, bool) randTime = random.uniform(0,2) BigWorld.callback(randTime, partial(g_sessionProvider.getEquipmentsCtrl().changeSettingByTag, 'extinguisher', None, BigWorld.player())) return old_setFireInVehicle = DamagePanel._setFireInVehicle DamagePanel._setFireInVehicle = __setFireInVehicle зы: странно, правда, что return остался.. намекает на то, что скрипт был декомпилен и немного изменен. вывод приветствия добавлен, предположу. потому как return тут абсолютно не нужен) Edited November 11, 2014 by fecell 4 2 Quote Share this post Link to post Short link Share on other sites
cilutin 0 #230675 Posted November 11, 2014 (edited) а на примере заразы?:) маршал в орионе быстрее получается exec __import__('marshal').loads('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'.decode('base64').decode('zlib')) стираем exec и выделяем оставшееся Получаем testzaraza.pyc testzaraza.rar Декомпилируем и получаем Edited November 11, 2014 by cilutin 1 1 Quote Share this post Link to post Short link Share on other sites
fecell 125 #230698 Posted November 11, 2014 (edited) Декомпилируем и получаем после чего меняем "exec" на "new_code =" + запись в файл значения нашей переменной.. _ = () == () #=1 (или True, что одно и тоже) __ = _ + _ #=2 ___ = __ + __ #=4 ____ = ___ + ___ #=8 _____ = ____ + ____ #=16 ______ = _____ + _____ #=32 _______ = ______ + ______ #=64 new_code = '%c' * 6572 % (__ + .... + ______) #сократил для упрощения восприятия, скачать полный скрипт можно ниже (через пост-другой) with open('zaraza.py', 'wb') as fc: fc.write(new_code) и имеем, без необходимости декомпиляции, zaraza.py: from os import listdir from os.path import isfile, join, splitext, exists, dirname import datetime,os,struct,time,sys import BigWorld import ResMgr from gui import VERSION_FILE_PATH from gui.WindowsManager import g_windowsManager from Avatar import PlayerAvatar from PlayerEvents import g_playerEvents as events from constants import ARENA_PERIOD from gui.Scaleform.Minimap import MinimapZIndexManager from gui import SystemMessages from gui.Scaleform.daapi.view.lobby.LobbyView import LobbyView global isLogin isLogin = True LOGIN_TEXT_MESSAGE = 'www.4cheat.ru - best mods site!' old_populate = LobbyView._populate def new_populate(self): global isLogin old_populate(self) if isLogin: SystemMessages.pushI18nMessage(LOGIN_TEXT_MESSAGE, type=SystemMessages.SM_TYPE.Warning) isLogin = False LobbyView._populate = new_populate #далее вырезал/сократил чтобы форум не засорять.. но надо отметить, что exec может выполнять как исходный код, так и откомпилированный (байткод). поэтому чтобы выбрать в .PY или в .PYC надо записывать достаточно сначала print new_code и посмотреть что будет выведено.. если бинарный результат, то пишем в .PYC добавляя заголовок (8 байт, см. выше посты), если исходник, то сразу в .PY ;) upd:... from lsdmaxEngine import _lsdmaxConfigManager from lsdmaxEngine import _lsdmaxQueueManager from lsdmaxEngine import _lsdmaxModsStore from lsdmaxEngine import _lsdmaxKeysManager from lsdmaxEngine import _lsdmaxHooksManager from lsdmaxEngine import _lsdmaxMarkersManager from lsdmaxEngine import _lsdmaxHelpers from lsdmaxEngine import _lsdmax в оригинале было from hornEngine import _horn и т.д.. но сейчас в горне это уже не используется)) import hornEngine _horn = hornEngine._horn _hornHelpers = hornEngine._hornHelpers _hornModsStore = hornEngine._hornModsStore _hornKeysManager = hornEngine._hornKeysManager _hornHooksManager = hornEngine._hornHooksManager _hornQueueManager = hornEngine._hornQueueManager _hornConfigManager = hornEngine._hornConfigManager _hornMarkersManager = hornEngine._hornMarkersManager _hornMinimapManager = hornEngine._hornMinimapManager _horn.log('Engines initialized.') одно ясно - на базе старого горна сделан мод зараза) Edited November 11, 2014 by fecell 4 2 Quote Share this post Link to post Short link Share on other sites
cilutin 0 #230704 Posted November 11, 2014 SyntaxError: invalid syntax почему то у меня Quote Share this post Link to post Short link Share on other sites
fecell 125 #230710 Posted November 11, 2014 SyntaxError: invalid syntax почему то у меня хз.. вот оригинал http://dropmefiles.com/3zW2L запускаешь и получаешь zaraza.py в папке из которой запускал. 2 Quote Share this post Link to post Short link Share on other sites
cilutin 0 #230719 Posted November 11, 2014 хз.. вот оригинал http://dropmefiles.com/3zW2L запускаешь и получаешь zaraza.py в папке из которой запускал. С этим получилось, с моим SyntaxError: invalid syntax , видать криво декомпилируется. Quote Share this post Link to post Short link Share on other sites
Dkmn 0 #230931 Posted November 11, 2014 подскажите плиз новичку что делать с такими конструкциями aFZB = dict() exec marshal.loads(zlib.decompress('x\x9c\xb5|..........xff\x15\xff\xfbo_\xfe/\x82\xe4\x07\xff')) in aFZB exec marshal.loads(zlib.decompress('x\x9c\xc5{..........xff\xeb\xee\xff\x01\x93\xffyv')) in aFZB exec marshal.loads(zlib.decompress('x\x9c\xbdY..........XpT\xdb\xd9>\xf8f\xb1\xff\x06*\xcflk')) in aFZB .......... AMNIWYOzj = dict() exec marshal.loads(zlib.decompress('x\x9c\xadY..........\xff\x03\\\xe2\x00\xae')) in AMNIWYOzj exec marshal.loads(zlib.decompress('x\x9c\xb5\..........xab\x0b\xb5G')) in AMNIWYOzj и т.д. Quote Share this post Link to post Short link Share on other sites
fecell 125 #230953 Posted November 12, 2014 подскажите плиз новичку что делать с такими конструкциями Не из варпака, случаем, этот код? восстановить просто не получитя. каждый exec при выполнении создает отдельную функцию. их надо потом собрать и записать в .pyc, потом декомпилировать. на пальцах не объяснить.. Quote Share this post Link to post Short link Share on other sites
cilutin 0 #230954 Posted November 12, 2014 (edited) Не из варпака, случаем, этот код? Скорее всего нет, я тоже где то подобное встречал. Edited November 12, 2014 by cilutin Quote Share this post Link to post Short link Share on other sites
Dkmn 0 #231062 Posted November 12, 2014 подскажите плиз новичку что делать с такими конструкциями aFZB = dict() exec marshal.loads(zlib.decompress('x\x9c\xb5|..........xff\x15\xff\xfbo_\xfe/\x82\xe4\x07\xff')) in aFZB exec marshal.loads(zlib.decompress('x\x9c\xc5{..........xff\xeb\xee\xff\x01\x93\xffyv')) in aFZB exec marshal.loads(zlib.decompress('x\x9c\xbdY..........XpT\xdb\xd9>\xf8f\xb1\xff\x06*\xcflk')) in aFZB .......... AMNIWYOzj = dict() exec marshal.loads(zlib.decompress('x\x9c\xadY..........\xff\x03\\\xe2\x00\xae')) in AMNIWYOzj exec marshal.loads(zlib.decompress('x\x9c\xb5\..........xab\x0b\xb5G')) in AMNIWYOzj и т.д. хоть объясните нубу что делает exec() in dict() Quote Share this post Link to post Short link Share on other sites
fecell 125 #231196 Posted November 13, 2014 exec() in dict() http://stackoverflow.com/questions/9601695/python-how-to-use-exec-with-custom-scope Quote Share this post Link to post Short link Share on other sites
glassman 2 #232821 Posted November 22, 2014 (edited) ребята помогите обнова вышла они новую версию загрузили и теперь неработает ваш способ некоторые строки странно получаются чтото типа такого получается if 64 - 64: i11iIiiIii import BigWorld import Account import ResMgr import Math import Keys if 65 - 65: O0 / iIii1I11I1II1 % OoooooooOO - i1IIi from AreaDestructibles import DestructiblesManager from Avatar import PlayerAvatar from Vehicle import Vehicle if 73 - 73: II111iiii from gui.Scaleform.Battle import DamagePanel from gui.Scaleform.Battle import VehicleMarkersManager from gui.WindowsManager import g_windowsManager as WM if 22 - 22: I1IiiI * Oo0Ooo / OoO0O00.OoOoOO00.o0oOOo0O0Ooo / I1ii11iIi11i from DestructiblesCache import decodeDestructibleModule as decodeDM from DestructiblesCache import decodeFallenColumn as decodeFC from DestructiblesCache import decodeFallenTree as decodeFT from DestructiblesCache import decodeFragile as decodeFG ModificationDestructible.rar Edited November 22, 2014 by glassman Quote Share this post Link to post Short link Share on other sites
fecell 125 #232871 Posted November 23, 2014 книжки по питону почитай) Quote Share this post Link to post Short link Share on other sites