吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5293|回复: 40
收起左侧

[原创] 关于一个python程序的逆向

  [复制链接]
小白来袭2 发表于 2024-1-5 14:18
在站中也很多年了,可是没发过什么东西,想着总是白嫖也不是很好,而且自己对于软件安全方面也只是玩玩心态。正好看见站里面没有啥关于python程序的逆向分析,别给我说,python可以反编译成源码,只能说,有些程序是无法反编译为源码的形式,或者反编译不全。
就比如我接下来说的这程序,不说废话了,接下来开始吧
为了社会稳定,这里不方便展示程序名称以及图标
image.png

这里可以看到这个程序很大,而且只有一个exe,这时候用peid查一下
image.png

这里由于用的peid版本太低了,查不到什么有用的东西,那么说一下,为什么能发现是python的程序呢
python程序的几个特点
1.在没有环境的电脑运行,首次启动的速度很慢,毕竟还要运行一个虚拟机啊,肯定快不了
2.exe程序要被python虚拟机解包,那么接了放到哪里呢
image.png

image.png

这里可以很清楚的看见,这是python的打包文件,当然这里只有程序依赖,这就够了
是python程序,那么我们看到的那个12.exe肯定包含程序主体和虚拟机
image.png

使用x64dbg的附加就能很清楚的看见两个图标,没有标题的是python的虚拟机,附加那里啥都看不到
所以如果喜欢动态调试可以附加那个,这里由于是python这种有中间语言的高级语言,我一般不会想着动态调试,因为你动态调试写的补丁,有可能不会通用,当然只是追求破开的同学可以自己试试
到了这里我们确定了程序的编程语言,现在开始解包

这里我用的是现成的解包脚本,当然都是公开的资料
pyinstxtractor.py 解包脚本是这个 ,具体使用去github上看下readme,或者网上查查就行,毕竟以及公开了那么久了
解完包后,使用pycdc对pyc文件进行反编译,当然我这里肯定反编译不说全的,全的就不会有这篇文章了,一般来说python的内裤到这里,基本已经被拔干净了,肯定是防不住猛男的。
现在看下我是为啥说不行的呢
image.png

这里是我反编译的结果,初看还不错,其实我已经将文件进行补全过了,其实反编译以后长这个样子
image.png

底下就没了,所以我只能去看中间语言了,这个中间语言也分python版本 具体可以去这里看下dis --- Python 字节码反汇编器 — Python 3.12.1 文档
现在我只是为了能登陆即可,使用pycda进行转为python字节码
image.png

可以看见,使用的是python3.11
image.png

使用pycda反编译出来的,大概都是这个结构,那么我们开始找主要的
image.png

这是程序主界面,那么就能分析出,肯定使用取text,python对应的搜索text
image.png

继续往下跟
image.png

接下来,找函数regist,
image.png

找到了一个这个
image.png

这样一看差不多就是验证函数了,往下看发现可疑的地方,当然这个我分析过肯定有一下笔记
image.png

这里调用Encrypted函数,那么继续找这个函数
image.png

找到这个关键的地方了,现在看下这个函数都干了什么
image.png

这个函数分析完,那我们回到验证函数里面
image.png

那么看懂了字节码,我们直接开始写注册机脚本吧
[Python] 纯文本查看 复制代码
from base64 import b64encode,b64decode
import binascii
from pyDes import des, CBC, PAD_PKCS5

class desSecret:
    def __init__(self):
        self.KEY = '八位密钥'  # 八位密钥
        self.IV='自定义偏移'
    # 加密
    def des_en(self, text):
        secret_key = self.KEY
        iv = self.IV
        k = des(secret_key, CBC, iv, None, PAD_PKCS5)
        data = k.encrypt(text)
        # data.进制返回文本字符串.解码字符串
        return b64encode(data)
input_text =bytes('4b1b637bce87932bcce8a2ff62a780fa','utf-8') 
DS = desSecret()

encode_str= DS.des_en(input_text)
#encode_str = DS.des_en(input_text)
print('注册码:', encode_str)


那我们看下脚本返回的注册码,是否可以打开吧
image.png

这里可以打开了啊,好了到这里python的字节码进行破解就结束了
python字节码的破解在于能否读懂字节码,当然这些东西就和汇编一样,不会汇编你看个毛线的破解







那么祝52破解越来越好,各位吧友2024都能大展宏图

免费评分

参与人数 11威望 +1 吾爱币 +29 热心值 +10 收起 理由
StargazeDreamer + 1 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
a22488 + 1 + 1 热心回复!
ytfh1131 + 1 + 1 谢谢@Thanks!
munachar + 1 我很赞同!
杨辣子 + 1 + 1 谢谢@Thanks!
chinawolf2000 + 1 + 1 热心回复!
lookfeiji + 1 + 1 真心想喊66666,信息量很大
liuxuming3303 + 1 + 1 谢谢@Thanks!
wizarrr + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lookfeiji 发表于 2024-1-6 15:29
牛皮,又学到了,我也下了一个解包源码试了一下,没经过编译的py文件解包出来的直接改后缀用Notepad++打开直接就能看到源码,不知道用另一种不是单文件的打包方式可不可以解包出来,收藏点赞
吾爱丶筱豪 发表于 2024-1-8 19:42
有些加密了 用pyinstxtractor 脱不了  但是会有个cmd窗口显示 文件***.py 微信截图_20240108194102.png 调用 这种可以吧py文件提取出来吗
v.n.lee 发表于 2024-1-5 14:23
软件作者居然不加密用pyinstaller打包,这不跟裸奔一样
Tree24 发表于 2024-1-5 14:24
分析得很详细,感谢分享
wizarrr 发表于 2024-1-5 15:38
逻辑讲的很清楚
xieemengxin 发表于 2024-1-5 15:41
可以试试 Hook python解释器,往里注入代码。
adm1nSQL 发表于 2024-1-5 19:29
很棒的文章,分析的很详细,给楼主点赞
阳仔丶 发表于 2024-1-5 20:17
xieemengxin 发表于 2024-1-5 15:41
可以试试 Hook python解释器,往里注入代码。

感觉是个办法 不知道有没有案例教程呀
xieemengxin 发表于 2024-1-5 20:40
阳仔丶 发表于 2024-1-5 20:17
感觉是个办法 不知道有没有案例教程呀

你可以看看python源码的 import builtin eval部分,案例就不提供了,涉及到自用的一些工具。
alei1370 发表于 2024-1-5 22:06
这也太牛了吧 虽然看不懂
Goven 发表于 2024-1-6 11:57
多学习多学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 07:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表