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

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

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

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


基础。
最后,我们还需注意,随着应用一起发布的Python运行时环境也会有bug。由于Python
运行时环境是随应用程序一起发布的,因此这些运行时环境的版本很可能会过时并且已发现
的漏洞尚未被修补。即使系统中的Python运行时环境被打了补丁,随应用程序打包的应用却
不一定。知道应用程序的python版本对于找到攻击漏洞是十分有价值的。
 
混淆技术
 
目前,商业/闭源软件已经开发了很多混淆技术。这些技术从简单的到很复杂的都有。
我们需要开发一种工具来解决那些很复杂的混淆技术带来的问题。虽然本文将单独地讨论各
种混淆方法,但是在现实中我们通常会发现软件开发者会使用多种技术来有效地阻止逆向工
程。
最简单的也是最常见的混淆技术是将软件编译成Python字节码。由于现有的Python反汇
编工具已经能够很好地处理这类程序,我们将不再深入讨论。

1.使用修改后的运行时环境
通过修改软件发行包中运行环境的属性如版本号并在软件中检查该版本号是一种十分
简单的混淆技术。通常,开发者同时还会大量减少发行包中标准库的数量。我们猜测,软件
开发者的目的是想阻止他们的软件在除了他们自己的运行环境外的一切其他运行环境中无
法运行,从而放置对他们软件的动态分析。如果我们想动态地分析该软件,那么我们就必须
要知道该发行包所使用的Python运行时库。然后我们就可以从相同版本的Python如2.4.x,
2.5.x, 2.6.x中提取相同的标准库并放置在正确的位置,此时我们就是动态地运行该软件
了。
另外,当我们可以获得该软件的.pyc文件时,这种混淆方法也无法阻止我们使用传统的
Python反汇编工具来静态地分析该软件。
2.修改字节码的 magic数
Python作者故意地没有为.pyc/.pyo中的bytecode写文档,从而使得在不同版本的
Python中使用不同格式的bytecode不会破坏那些依赖bytecode格式的软件。虽然如此,我们
还是知道bytecode的格式包含如下部分:
  4字节的magic数(后2个字节为0xD, 0xA)
  4字节的时间戳
  A marshaled code object
Magic数用于判断运行时环境是否就是用于运行该bytecode的并随着运行时环境版本的
变化而变化。对于CPython,所有已知的值可以在运行时环境源码中的import.c文件的顶部
注释中找到。如果该运行时环境的不对,那么将产生如下的错误信息:
RuntimeError: Bad magic number in .pyc file
如果修改软件发行包中的运行环境使其版本到magic数的映射关系不同于标准Python版
本的映射关系,并使用任意的非标准值作为magic数。那么任何标准版本的Python将拒绝执
行该软件的bytecode。这样也会影响传统反汇编工具的执行,因为这些工具需要正确的
bytecode格式并使用magic数来确定Python bytecode的版本。如果这些工具遇到了未知的
值,大部分工具将停止工作。
对付这种混淆技术的一个简单方法是将magic数修改为某个标准值。如果bytecode的准
确版本未知,那么由于我们只有不多的合法magic数,因此我们可以逐一试每个值。
3.修改字节码文件的格式化
如同可以修改运行环境的magic数,我们也可以通过修改.pyc/.pyo中代码对象的的格式
来实现混淆。这就意味着其他的标准Python运行环境将无法正确地解释该bytecode文件,同
时也就是意味着Python反汇编工具也无法工作了。对.pyc中的代码对象格式或对.pyc本身结
构修改的复杂程度决定了我们是否能够将混淆后的格式转变回标准结构。
4.字节码加密
字节码加密可以被看作marshal format change的复杂变种。其关键区别在于我们更难
找到加密后的python运行环境中的密钥,如果我们无法找到,那么我们将无法做进一步分析。
另外,类似的,加密后的字节码无法在标准的Python运行环境中运行且标准的反汇编工具也
没有作用。
5.源码混淆
另外一种混淆技术是对源代码本身进行处理。该方法不会去修改字节码,但是会将源码
修改成更复杂的,难以跟踪分析的,并具有相同功能的另一份源码。该方法的思想是即使你
得到的源码,你也很难理解。虽然该方法广泛应用于javascript,在现实中几乎没有任何
Python应用使用该方法。  

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

百度搜索更多

谷歌搜索更多

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

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


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

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