免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 软件破解 > 对Pyhon bytecode混淆技术的内存反汇编

对Pyhon bytecode混淆技术的内存反汇编

时间:2012-01-13 19:07来源:未知 整理:寂涯网络 点击:

越来越多的商业、闭源 Python 应用开始涌现。一个明显的趋势是,这些应用的开发者
投入了大量的精力来防止其软件的源代码被终端用户获得。开发者使用了各种代码混淆技术
来阻止通用的Python反汇编技术。另一个同时出现的趋势是,Python被越来越多地应用于
“云端”,从而使得用户甚至无法获得存储在文件中bytecode。
本文提出了一种方法来扩展现有的 Python 反汇编技术。该方法无需读取标准的 Python
bytecode文件(.pyc/.pyo),而只需利用内存中存在的实例化的Python对象来重构源代码。
本文还将讨论如何对付通常的混淆技术。

问题描述

很多时候,我们需要Python应用的源码来查找其安全漏洞。然而,现在很多商业和闭源
Python应用使用了大量方法来阻止其他人获得其源码。
另外,随着 SaaS 的开发模式越来越流行,云技术和虚拟化技术使得用户无法获得本来
可以用来反汇编的资源,如可执行文件。而要想越过远程服务器外围的防火墙来进行反汇编
几乎是不可能的。因此,随着软件技术的发展,我们也需要一种新的反汇编技术。
最后,在 Python层的反汇编而非更底层如C, Assembly等本身是一个十分有趣的项目。
虽然高级语言在很多方面提供了更好的安全性,但是其还远不能消除应用程序的逻辑漏洞。
通常,直接debug这些程序的底层行为却不是找出应用层漏洞的最好方法。另外,我们经常
忽略的一点是,Python是一种跨平台语言,因此攻击者一旦发现Python程序的漏洞将可以
跨系统平台实施攻击。除了出于安全和反汇编的需要,很多其他领域也需要深入分析混淆后
的应用程序代码。其中一个很重要的需求是识别闭源代码中是否包含了某些开源代码,即是  

否违反了某些许可证。

现有 Python 反汇编技术

现有 Python 反汇编技术
 
在提出一个更好的方法之前,我们首先需要看一下现有的方法以及提出的方法所引用的
现有技术。Python 反汇编领域主要集中在将 bytecode(即.pyc 和.pyo)反汇编回 Python
源码(即.py)。
目前,已经有很多免费和商业工具和服务来反汇编bytecode,如Unpyc, decompile.py,
decompyle和 depython (商业服务)。这些软件和服务针对的Python版本各异同时针对复杂
应用的反汇编精确度也各异。通常,商业服务针对新版本 Python 提供了更好的支持。但是
在很多情况下,免费软件所提供的结果已经足够用了。
通常来说,这些软件和服务采用了类似的方法。大概来说,这些方法以 bytecode
(.pyc/.pyo)作为输入,静态地分析bytecode从而输出源代码。在通常情况下,这种方法
已经足够了。但是,当应用程序由远程提供如云计算或 bytecode 经过了故意地混淆处理,
那么上述方法将无法处理。
另外,我们再看一下标准的 Python 反汇编(dis)和 debugging 工具(pdb)。dis 模块
可以将 Python对象或 bytecode反汇编成Python汇编语言,但是无法生成Python源码。 pdb
模块是 Python 运行时调试的标准工具,但是该工具十分简单而且只有在拥有.py 文件时才
能发挥最大的作用。因此,我们只能将pdb视为开发过程中的辅助工具。当只有.pyc bytecode
时, pdb的作用立即变得十分有限。这两个工具在本文提出的方法中的作用将在下文中讲述。 
 
Python 应用发布技术
 
随着越来越多的开发者开始使用Python,有了很多可以很方便地将应用程序发布给终端
用户的选择。由于Python是一种解释语言并需要自己的运行环境,因此终端用户需要满足很
多依赖条件从而来执行.py和.pyc应用。虽然在GNU/Linux和BSD世界中,在标准操作系统中
包含Python几乎成了一个事实,Microsoft Windows中尚未包含Python。另外,Python还有
版本和非标准库依赖的问题。总而言之,对于Python商业应用,能够将应用程序,依赖库和
运行环境打包在一起从而使得终端用户可以直接运行是非常重要的。
对于各种主流OS,我们有3中主要的方法来满足上述需求。对于Windows,我们可以使用
py2exe;对于OS X,我们可以使用py2app;对于GNU/Linux和BSD,我们可以使用cxfreeze。
虽然本文不再讨论各种方法的实现,但是由于这些工具被商业软件广泛地使用,我们在反汇
编时最好也对其有所了解。这几个工具也是通过修改Python发布运行环境来实现混淆技术的

本页地址 http://www.jybase.net/ruanjianpojie/20120113749.html

百度搜索更多

谷歌搜索更多

顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com