【python】本人的第二个cm
吸取了上一贴的教训,我重新修改了一下我的代码(肯定不是上次的x2了),也是本人的第二个cm,规则和上个差不多。这次采用了Pyinstaller+pyarmor 最大的区别可能是这次会申请管理员权限
无恶意代码,不联网,每次随机生成序列号
————————————————————————————————————————
https://cloud.alongw.cn/f/ky9tJ/428448b67204b3e204e59abe1ad60650.pnghttps://cloud.alongw.cn/f/881h9/7884ac7fe0be82ea545f5c4ba42cca3f.pnghttps://cloud.alongw.cn/f/YGYFL/66dc1416e97eaa2449848daf6054abeb.pnghttps://cloud.alongw.cn/f/6aMtM/6fd6d16a47a7819561627db2b223749d.pnghttps://cloud.alongw.cn/f/54lHW/19cfa2817bef6a709304c7fc199c48f8.pnghttps://cloud.alongw.cn/f/j4jcl/a0afad89cd03bb62bda34db273427c29.png
————————————————————————————————————————
下载链接:
一号:https://cloud.alongw.cn/f/qJEtl/CMpython2.exe
二号:https://qwindf.lanzouj.com/iNPBm1xbmcdi 密码:98x6
希望可以出个keygen
使用pyinjector注入dll,dump出函数的字节码,根据字节码写keygen即可
18 >> 84 LOAD_GLOBAL 5 (int)
86 LOAD_FAST 1 (_var_var_0)
88 CALL_FUNCTION 1
90 LOAD_CONST 12 (2025)
92 BINARY_LSHIFT
94 LOAD_GLOBAL 6 (len)
96 LOAD_FAST 1 (_var_var_0)
98 LOAD_CONST 13 ('52pj')
100 BINARY_ADD
102 CALL_FUNCTION 1
104 LOAD_GLOBAL 5 (int)
106 LOAD_FAST 1 (_var_var_0)
108 CALL_FUNCTION 1
110 LOAD_CONST 7 (1)
112 BINARY_LSHIFT
114 BINARY_MODULO
116 BINARY_ADD
118 STORE_FAST 3 (_var_var_2)
19 120 LOAD_GLOBAL 7 (hex)
122 LOAD_FAST 3 (_var_var_2)
124 CALL_FUNCTION 1
126 LOAD_METHOD 8 (replace)
128 LOAD_CONST 14 ('0')
130 LOAD_CONST 15 ('')
132 CALL_METHOD 2
134 STORE_FAST 3 (_var_var_2)
import os, struct, marshal, zlib, _frozen_importlib
PYTHON_MAGIC_NUMBER = _frozen_importlib._bootstrap_external.MAGIC_NUMBER
PYZ_ITEM_MODULE = 0
PYZ_ITEM_PKG = 1
PYZ_ITEM_DATA = 2
PYZ_ITEM_NSPKG = 3
class ArchiveReadError(RuntimeError):
pass
class ZlibArchiveReader:
__doc__ = "\n Reader for PyInstaller's PYZ (ZlibArchive) archive. The archive is used to store collected byte-compiled Python\n modules, as individually-compressed entries.\n "
_PYZ_MAGIC_PATTERN = b'PYZ\x00'
def __init__(self, filename, start_offset=None, check_pymagic=False):
self._filename = filename
self._start_offset = start_offset
self.toc = {}
if start_offset is None:
self._filename, self._start_offset = self._parse_offset_from_filename(filename)
with open(self._filename, "rb") as fp:
fp.seek(self._start_offset, os.SEEK_SET)
magic = fp.read(len(self._PYZ_MAGIC_PATTERN))
if magic != self._PYZ_MAGIC_PATTERN:
raise ArchiveReadError("PYZ magic pattern mismatch!")
pymagic = fp.read(len(PYTHON_MAGIC_NUMBER))
if check_pymagic:
if pymagic != PYTHON_MAGIC_NUMBER:
raise ArchiveReadError("Python magic pattern mismatch!")
toc_offset, *_ = struct.unpack("!i", fp.read(4))
fp.seek(self._start_offset + toc_offset, os.SEEK_SET)
self.toc = dict(marshal.load(fp))
@staticmethod
def _parse_offset_from_filename(filename):
"""
Parse the numeric offset from filename, stored as: `/path/to/file?offset`.
"""
offset = 0
idx = filename.rfind("?")
if idx == -1:
return (
filename, offset)
try:
offset = int(filename[(idx + 1)[:None]])
filename = filename]
except ValueError:
pass
else:
return (
filename, offset)
def is_package(self, name):
"""
Check if the given name refers to a package entry. Used by PyiFrozenImporter at runtime.
"""
entry = self.toc.get(name)
if entry is None:
return False
typecode, entry_offset, entry_length = entry
return typecode in (PYZ_ITEM_PKG, PYZ_ITEM_NSPKG)
def is_pep420_namespace_package(self, name):
"""
Check if the given name refers to a namespace package entry. Used by PyiFrozenImporter at runtime.
"""
entry = self.toc.get(name)
if entry is None:
return False
typecode, entry_offset, entry_length = entry
return typecode == PYZ_ITEM_NSPKG
def extract(self, name, raw=False):
"""
Extract data from entry with the given name.
If the entry belongs to a module or a package, the data is loaded (unmarshaled) into code object. To retrieve
raw data, set `raw` flag to True.
"""
entry = self.toc.get(name)
if entry is None:
return
typecode, entry_offset, entry_length = entry
try:
with open(self._filename, "rb") as fp:
fp.seek(self._start_offset + entry_offset)
obj = fp.read(entry_length)
except FileNotFoundError:
raise SystemExit(f"{self._filename} appears to have been moved or deleted since this application was launched. Continouation from this state is impossible. Exiting now.")
else:
try:
obj = zlib.decompress(obj)
if typecode in (PYZ_ITEM_MODULE, PYZ_ITEM_PKG, PYZ_ITEM_NSPKG):
if not raw:
obj = marshal.loads(obj)
except EOFError as e:
try:
raise ImportError(f"Failed to unmarshal PYZ entry {name!r}!") from e
finally:
e = None
del e
else:
return obj
from pyarmor_runtime_000000 import __pyarmor__
__pyarmor__(__name__, __file__, b'PY000000\x00\x03\x08\x00U\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00?\x05\x00\x00\x12\t\x04\x00\x8c\xab\xe0h\x8aY\xe4U\xb6\x1e,r\x98\t\xf3g\x00\x00\x00\x00\x00\x00\x00\x00\x9f\xd9\x0e\xdd(\x00;\xa8\x0b\xdbv\x8c\x04}\x81]>\xa5H2\xdfy\xab\xb4(\xd0S\xbfS}fc\xc3c3>\xcc*;cX\xf9s*\x15p\xda\r\xc8d<,\x826\xe0c\xc0`9\xb6\xc4&\tn\x18\xb8G\x147\xe4J\xaem\x19\xef\x05\xf1\xce$UN\xbdm\x9c\xd3|\xa2\x80\xf5z)7\x9d\xf3_\x18TE\xa2\xd7\xeb\xf6%W+\t\x05v\xf3pD\x07b\xcaIj\t\t\x18\xe7AV\xfa\xe8H\x06\x95Z~<\xa1\x95\xfb\x808\x18\xec\xc1|\x84#:\xc1\x9c\x92\xc8x\x87\x7f\x11A\x0e\x02ab,\x04\xcfeQ\x11\xd7w\x8b2\xc5\xd4*<l\xb7\x83\xaay\xd4\x8e\xac\x1e\x1b\xf1\xd1\xc3\xbbn\xc5\xf0B4\xdc]\x05c\x80Xo\xf4G\x18IOX\x83\xb4\xc1\xe6j\xca/\xc0l\xeb\xf2\x94\xe7\xbe\x91\xdb|\x15}\xd6>\xdaJ\x99g\xa0G\xbf\xcc\x17\xf944\xd3\xe24\xbb\xa5\xce\x1d\x88g\xff\x07w\xe6N\x07\x8c\xbc\xd5\x10\xc3x7\x8f,jv\x04\x93\xce\xec\xba\xeeB\xc2\xebW\x9e\xef\xf05\xd4q\xfa\xf5\xa3\xecv\xda\x9a\xa2uB\xf7lF\x14\x18\xbf\xf7\r\x9e\x8cc\xdeW\x9b\xcb\xef\xc0+X?!\xdf\x06\xc2mk\xfc\\$\xff\xbc\x81z\xc2\xfcQ}\xdfJM\xe7@\xb7\x9cX \xfbyD\xfa!\t-\xe7\xec\xc1\xd9\xe2\x01\xe9\xcb\xa3C\x92\xdf\xea65\xcc\x0e\x08\xfeg`\x04\xa5\xe8\x07\xc7\xa5\x1b]\xb5\xd8\xdfa\xfd\xe8\x97\x8c\xb5g\xe0\x9a\xd3\x9e]\x84\xf22\x8b!\xe8\x1e+\x8bK\xa9\xfc\xbfl\xc3\xd4S!\xe8\xe0p\x82\xe2zb0\xc7\xf5]\x92\xa6\xc6\x1d\xd8Sa\xebV\xf4\x12\x9e9\xc6\x98\x98\x81t\xc3\xa6\xeeE\xf6\xc1CEW\x1c\x12V\x19\xf7\xd6\xe9Q\xe7\xb2\xb1m\x93V3\x0cf\x07\xc0\x1ew\x0ej\xd0\xdaE\x7ff\xa3Bi\x8e\xae\x8c\'\xad\xba(IS\t\xad\x07y\x7f\x8d\xd3]\xa0\xe0$\xf3\x84d\r\xd1*g\xcf\x16\xb9\xc3\xb7\xfb\xf4\x88\xd0\xee\xf8\xa7fxe\xba\x8e\xa6\xfe\x12k\xd8\xedq!a\x16\xdfd#+\x87 \'\x1c\x90-\xec\x16+xu\x8b}\x12t\x16\x9f\xd0\xf9\xbbs=DN\xcf=U\xdd\x80\x1c\x13\xc9\xf8\x8e,\x1a\xb5\xd3\x11\xd7\xf4}\xb8Jh\x1d\x98\xe3i\xdcU\xfe\xfbx\xda\xbdF\xdc;\x0c\xf4XCK\x99\xa3,\xc9\xe1\x89y\n\xfc\x1f\xd5\x017+\xca\x94\xa8P\xe0\xa9\xe6)\xe6\xecd\x8f\x93\xaf\x0c:3\x1b\x11PL\x19\xa7\xb6\xf9\xd9` Fa\xcc\x86w\xe6\xae\x96\xef\xd0\x88\xb65\xc9\xc18\xc4*6Fk\x19\xe2\xceV\x7f\xe6~\xdf\x1at\xa2Q[\x07\xf9\x14\\\x8cRC\x19\x07\x1eJn~\xdc\xd1\xf1F\xa57E8\xa9\x1a\x9c\x91\x84\xca\x86\x9d\xf9\xd7\xfd\x1b/\xa9\xd9^C"\xb1\xc2\x94\xddW\xccd\'\x1c\x95\xca\x82\x7f\x14m\xb58\x938f\xf44\xf4CT\xd6J\x1bf+\xbc)\'\xd3\xb6KXq\xbc\xc2X\xc7\x9a^\xc8\x01F\x0f\x04\xb9>K_\x8ftX\x1c\xdf\x9a\xef\xdbF\xbb\x07;S\x94\x88\xb4\xc5\xa5}\xca\x08\x19\x997X\xd3X4\x1cNx\x00\xc12\xbaQ\x19+#\x1eA\x94\x016\xc1\xbc\x80\xaa\x0fhOz\xc0\n\xc0\x04 &\x07\xc7\xe6E\xaf\xca{\x96<\xbb@\x7f\xc1\x12\xa1s\x92Vg\xdc\xc3`} \xa1Ihd\xe5\x88\x95n\x08 6\x9dg\xfa\x82\x1bS\xae\xc8L\xc2t;\x01`\xf9\xb7\xd6\x02\xd8\x14\xb7\xed\xf0\xc2\xcc`\xa3H\xd7 `\xf3\xce\x04s\xff\xc5`\xf8BB#\x1a\x9d\xab\x002 \xbf\x1e\x87\xd23\x8d\xb5\xb3\xa0\x03>\x8a\x92\x16p\xe4\xfa\x95\x04\xacZ\x8f\x070\xb9>\xab\xca\x94x\xa9\xe9\x10P\x07\x98\x9a\xd8\xa6\x1e\xa8}&!E\x1eB5>C(\x057\x11w\x89\xf7\xdf\x9e\x9e\xa9#\xb7cG9X\xf8')
问问大家的意见,对gui的看法,是觉得gui更好还是命令行更好。
gui的话体积会大很多 这次用的pyarmor免费版,还是不稳定的,考虑买个收费版吧:lol 48325619 发表于 2024-5-2 12:37
这次用的pyarmor免费版,还是不稳定的,考虑买个收费版吧
目前没有经济实力,以后再说吧(
具体是哪一方面不稳定呢 QwindF 发表于 2024-5-2 12:39
目前没有经济实力,以后再说吧(
具体是哪一方面不稳定呢
免费版破解方法已经在github开源了 48325619 发表于 2024-5-2 12:40
免费版破解方法已经在github开源了
看了相关的教程,发现国内并没有类似的思路。
github上的方法也没那么简单,而且里面不止PyArmor{:1_918:}
希望各位能分享破解的过程 QwindF 发表于 2024-5-2 12:50
看了相关的教程,发现国内并没有类似的思路。
github上的方法也没那么简单,而且里面不止PyArmor{:1_918 ...
一个压缩包而已,我已经解决了 qq465881818 发表于 2024-5-2 15:54
import os, struct, marshal, zlib, _frozen_importlib
PYTHON_MAGIC_NUMBER = _frozen_importlib._boot ...
加油!希望能出keygen以及经验分享 QwindF 发表于 2024-5-2 16:15
加油!希望能出keygen以及经验分享
不会py:lol
页:
[1]
2