找到要解析源码的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文件,就可以得到对应的源码,进行修改了。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐