[AOH 013]破解商用级py加密混淆

区块链安全 2年前 (2022) admin
653 0 0

一、前

最近在折腾python逆向,高度(商用级)加密混淆后的代码,经过打包编译成可执行程序后,如何分析它,还原它,以及给它打补丁,这是我想要研究的。

这个过程非常有趣和富有挑战性,总结出针对市面大部分混淆方案的读,改,还原代码,热补丁的相关技术。

本期模拟 基于py打包而来的勒索病毒,它混淆了自身代码,尝试通过多种方式破解它!

二、挑战

1. 源码

有main.py, 代码如下:

from secret import secret_key

# 这儿有一段隐藏代码 
XXX
# 这儿有一段隐藏代码 

userinput = input("secret:n")
if userinput == secret_key:
    print("flag is flag{XXXXXXXXX}。恭喜, 你的文件即将被解密")
else:
    print("wrong, 请支付100BTC获取解密密钥!")

有secret.py, 代码如下:

secret_key = "XXXXXXXXX"

2. 混淆打包

python: 3.7.9

cx_Freeze:6.10

3. 挑战列表

[1] 利用codeobject法, 拿到flag

难度: ※※※※※ 5/5

Tips:

  1. 1. 你需要到cpython仓库下载源码,在特定的c文件下修改处理codeobject的函数,再在本地编译出python运行环境

  2. 2. 你需要将编译出来的python环境替换掉exe下的python运行环境

[2] 利用动态加载法,拿到flag

难度: ※※ 2/5

Tips:

  1. 1. 你需要深入理解pyc和py

[3] 利用热补丁,拿到flag

难度: ※※※※ 4/5

Tips:

  1. 1. 你需要转变思路,除了读,是的,你还可以写,篡改不也是很好的的攻击方案嘛?

[4] 还原出隐藏代码

难度: ※※※※※ 5/5

Tips:

  1. 1. 需要借助第[2]的思路

  2. 2. 你需要通读uncompyle6的源码

三、后

挑战代码是纯白逻辑,只有print打印的IO操作,没有任何文件,网络等操作,放心食用。

挑战已上传到:

  • • https://github.com/djerryz/Art-Of-Hunting/tree/main/files/AOH013

上面每个挑战均是可以完成的,解决思路不需要用到x64dbg等动态调试工具, 冲??.


原文始发于微信公众号(Art Of Hunting):[AOH 013]破解商用级py加密混淆

版权声明:admin 发表于 2022年4月26日 上午12:53。
转载请注明:[AOH 013]破解商用级py加密混淆 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...