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

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

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

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

6.操作码重映射
操作码重映射是通过修改Python运行环境随机的打乱操作码与Python汇编语言助记符
间的对应关系。这样一来,即使其他人得到了字节码并用反汇编工具反汇编得到了源码,该
源码也是毫无意义的。在标准Python中,操作码的映射可以在opcode.py模块中找到。修改
后的Python运行环境将删除该文件,从而使得依赖该模块的dis以及依赖于dis的反汇编工具
将无法工作。
操作码重映射技术已经被很多软件采用并且被证明了是一种很有效且简单的反逆向工
程方法。另外,这种方法也通常会和上述的混淆技术联合使用,从而更有效的防止逆向工程。 
本文的方法也主要是针对该方法而提出的。
 
一种新的 Python 逆向工程方法
 
上述的Python混淆技术除了源码混淆外,已经能够很有效地对抗现有的反汇编工具。因
此我们需要一种更有效的反汇编方法来对抗这些混淆技术。一种比较普适的方法是能够更好
地处理混淆后的字节码,但是不停地玩猫捉老鼠的游戏不是我们的最终目标。发现上述以及
未发现的混淆技术所使用的共同技术能够使我们在理论上设计一种通用的逆向工程方法。
现有反逆向工程方法所通用的一种方法是防止其应用软件被静态地分析。任何修改后的
运行时环境自己都有解密其字节码的方法。也就是说,当程序运行在内存中时,任何保护方
法都已经失效了。运行那些经过混淆处理的Python程序并动态地生成源码是一种很通用的对
抗所有反逆向工程的方法。具体的实现方法将在下文描述。作者同时实现了一个原型工具来
证明该方法的可行性。
相同的方法已经在其他语言如C的debugger中被使用了来分析程序运行时的内部特征,
但是我们需要记住的一点是本文的最终目的是得到源代码而非仅仅动态地分析程序的运行
时行为。
1.获取进程控制权
为了分析程序运行时行为,很明显我们需要能够得到程序运行中的上下文。即使对于使
用了反逆向工程了的程序,我们发现要进入Python程序的主线程也是十分简单的。
当在代码中引用Python模块时,.py/.pyc/.pyo等文件扩展名是不需要的;如果只有一
个.py/.pyc/.pyo文件,那么该文件将会被使用;如果有多个文件,那么将检查字节码文件
中的时间戳和.py文件的mtime看其是否相等,如果相等那么字节码文件将被使用,如果不等
那么可能 .py 文件被修改过了,因此要使用该文件(参看 import.c 中的
check_compiled_module()函数)。最后,即使应用程序仅带了混淆后的.pyc字节码,然后仅
重命名其中的某个文件并放一个以原始.pyc文件名命名的.py文件在改文件目录下,那么最
后该.py文件将被执行。当然了,越早的替换原文件我们可以越早地获得控制权。另外一个
要求是,我们得允许程序能够正常的执行。替换文件的内容可以是任意数据,但是如图1所
示的代码会使得当其他代码调用该程序时,该程序会被映射到被替换文件中的任意函数。
由此可见,获得程序的执行控制权是很简单的。

图1. 替换文件中的代码

2.分析内存中的对象
上一步,我们已经获得了程序的控制权,现在可以进行分析了。在Python中,所有的方
法和函数对象都有一个func_code对象,该对象包含了关于其操作和实现的重要数据。
Inspect模块正是使用了该对象来提供对象的信息。Func_code独享的co_code成员包含了函
数的字节码;该字节码可以被导出并用传统的方法来反汇编。
为了能够构建整个模块的内容,我们需要遍历各个函数并将其重构成一个整体。我们可
以有几种不同的方法来实现该目的:基于内存的方法和基于文件系统的方法。
基于内存的方法以一个模块对象为输入,分析其属性。递归地分析每个属性直到叶子节
点。在遍历的过程中,每个方法和函数,分析其代码对象从而基于内存分布结构来获得源码

的层次结构。
基于文件系统的方法的不同之处在于我们遍历应用程序目录中的Python模块,,每找到
一个,我们就将其导入并使用上述方法来分析每个模块的属性。本方法是根据文件系统而非
运行中的程序来重构源码的层次结构。图2展示了Python中各对象与其他对象之间的关系以

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

百度搜索更多

谷歌搜索更多

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

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


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

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