吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6739|回复: 43
上一主题 下一主题
收起左侧

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

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


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


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




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


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

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


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


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


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


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


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


继续往下跟


接下来,找函数regist,


找到了一个这个


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


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


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


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


那么看懂了字节码,我们直接开始写注册机脚本吧
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
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)


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


这里可以打开了啊,好了到这里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 调用 这种可以吧py文件提取出来吗
沙发
v.n.lee 发表于 2024-1-5 14:23
软件作者居然不加密用pyinstaller打包,这不跟裸奔一样
3#
Tree24 发表于 2024-1-5 14:24
分析得很详细,感谢分享
4#
wizarrr 发表于 2024-1-5 15:38
逻辑讲的很清楚
5#
xieemengxin 发表于 2024-1-5 15:41
可以试试 Hook python解释器,往里注入代码。
6#
adm1nSQL 发表于 2024-1-5 19:29
很棒的文章,分析的很详细,给楼主点赞
7#
阳仔丶 发表于 2024-1-5 20:17
xieemengxin 发表于 2024-1-5 15:41
可以试试 Hook python解释器,往里注入代码。

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

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

本版积分规则

返回列表

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

GMT+8, 2025-3-28 23:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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