wgf4242 发表于 2024-10-15 15:15

python混淆加密的题目。

https://wwvo.lanzouo.com/iprhu2cltkxi

末尾zlib 解压了一堆东西。。。
然后就是一堆 _____ 的自定义动态创建的对象。
每一行单独都能看懂。放一起不好还原。。
有什么办法突破么。

狄人3 发表于 2024-10-15 17:49

第一行里面有个exec,你把他改成print就能解掉第一层混淆了

Scan 发表于 2024-10-15 23:42

2. Pyc 反序列化还原操作. # 通过 code object 生成 pyc
HEADER = magic + b"\x00" * 4
# 时间随便写
HEADER += struct.pack("<I", int(time.time()))
# 大小随便写
HEADER += struct.pack("<I", 30)

code = HEADER + marshal.dumps('代码')

Path('test.pyc').write_bytes(code)

#生成pyc之后在终端cmd运行
.\pycdc.exe .\test.pyc

zhtao0920 发表于 2024-10-16 10:16

有结果吗,第二层怎么解的?

伤城幻化 发表于 2024-10-16 10:20

本帖最后由 伤城幻化 于 2024-10-16 10:21 编辑

反混淆仓库地址地址 https://github.com/KhanhNguyen9872/deobf_pyobfuscate.com
混淆工具https://pyobfuscate.com/pyd
代码感觉没有啥实际的意义,如果是研究逆向混淆思路的话 工具用处不大,需要大佬解惑

wgf4242 发表于 2024-10-16 22:10

伤城幻化 发表于 2024-10-16 10:20
反混淆仓库地址地址 https://github.com/KhanhNguyen9872/deobf_pyobfuscate.com
混淆工具https://pyobf ...

题目最后就是分析完 能绕过执行系统命令。。

BTFKM 发表于 2024-10-17 09:43

pysandbox = (
    lambda getattr: [
      # 对attr_dict字典中的每个键值对应用另一个lambda函数
      ((lambda attr_name, attr_value: setattr(__builtins__, attr_name, attr_value))(attr_name, attr_value))
      for attr_name, attr_value in getattr.items()
    ]
)

Il = chr(114) + chr(101)# re
lI = r'[^a-zA-Z0-9]'# [^a-zA-Z0-9]
lIl = chr(115) + chr(117) + chr(98)# sub

下面exec还套了一层混淆{:301_971:}除了头大应该难度还行

伤城幻化 发表于 2024-10-17 10:56

BTFKM 发表于 2024-10-17 09:43
pysandbox = (
    lambda getattr: [
      # 对attr_dict字典中的每个键值对应用另一个lambda函数


就是上面的混淆工具生成的 利用反混淆的脚本就行还原了
题目应该是输入一段代码 运行后输出需要的结果,这个脚本基本就是个代码执行器了但是有些限制

m2953638179 发表于 2024-11-18 09:01

伤城幻化 发表于 2024-10-17 10:56
就是上面的混淆工具生成的 利用反混淆的脚本就行还原了
题目应该是输入一段代码 运行后输出需要的结果, ...

大佬,限制是啥,可以突破吗

伤城幻化 发表于 2024-11-18 16:12

m2953638179 发表于 2024-11-18 09:01
大佬,限制是啥,可以突破吗

还原出来就知道了,没啥实际用处,可能是为了代码安全做的,这个应该是老师的题目要求输入代码片段 ,然后输出什么内容
页: [1]
查看完整版本: python混淆加密的题目。