记录一次从exe到python源码

通过7zip解压exe文件,分析内部结构,发现前后端服务。前端代码经asar打包,尝试解压并修改绕过登录未果。后端为Python,通过查找Python版本,解压PYZ-00.pyz_extracted,遇到加密问题。利用crypto_key.pyc获取key,编写脚本解密pyc文件,再使用decompile工具转换为py源码。
摘要由CSDN通过智能技术生成

找到要解析源码的exe,用7zip解压出来,可以看到打包前的目录(这里并不是所有的exe都可以)。
如下图所示,由于这个是一个前后端打包的exe,这里的server是后端的服务,resources是前端,这里可以通过使用这个软件发现是一个前后端都在本地,通过网络鉴权的方式登录的。这里我是要绕过这个软件的登录
在这里插入图片描述

前端

asar是前端框架打包的,参考这里进行解压,解压后就得到前端的代码,当然打包后的一些文件名是经过重命名的。前期一直在尝试修改前端进行绕过,但是最终没成功。
在这里插入图片描述
app目录
在这里插入图片描述

后端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上面是部分后端目录的文件,后端是python写的,这些文件都是一些开源的东西,我要修改的地方不在这里面,在这个最大的exe文件里面
在这里插入图片描述
通过这个进行解压python打包exe文件注意要用同一版本的python才行,不同版本的话,PYZ-00.pyz_extracted文件夹会为空,如果不知道使用什么版本的话,可以先用其他的版本解包,解完之后,在里面找到struct.pyc文件,用winhex打开,查看头部找到对应的版本,然后再用对应版本进行解开
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
PYZ-00.pyz_extracted目录是重点,但是上面这个图出现了probably encrypted ,说明并没有解压成功,说明是通过加密的。

但是我发现这个crypto_key.pyc文件,把这个pyc转成py,参考这里
在这里插入图片描述
得到key,然后参考参考2
在这里插入图片描述
通过下面这个脚本进行解密,修改对应的路径和秘钥,就可以解出对应的pyc文件

import glob
import zlib
import tinyaes
from pathlib import Path

CRYPT_BLOCK_SIZE = 16

# key obtained from pyimod00_crypto_key
key = bytes('CYNLlJe5RycAPXED', 'utf-8')

for p in Path("path").glob("**/*.pyc.encrypted"):
    inf = open(p, 'rb')  # encrypted file input
    outf = open(p.with_name(p.stem), 'wb')  # output file

    # Initialization vector
    iv = inf.read(CRYPT_BLOCK_SIZE)

    cipher = tinyaes.AES(key, iv)

    # Decrypt and decompress
    plaintext = zlib.decompress(cipher.CTR_xcrypt_buffer(inf.read()))

    # Write pyc header
    # The header below is for Python 3.8
    outf.write(b'\x55\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0')

    # Write decrypted data
    outf.write(plaintext)

    inf.close()
    outf.close()

    # Delete .pyc.encrypted file
    p.unlink()

在这里插入图片描述
在这里插入图片描述

然后再用decompile3pycdcuncompyle6将pyc转成py文件,就可以得到对应的源码,进行修改了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值