Python逆向(一)—— 前言及Python运行原理

#1、前言 最近在学习Python逆向相关,涉及到python字节码的阅读,编译及反汇编一些问题。通过长时间的学习有了一些眉目,为了方便你们交流,特意将学习过程整理,造成了这篇专题。专题对python逆向的基础知识进行了简洁有效的解读,暂不涉及python编译过程当中的代码混淆。文章中若有不恰当的地方敬请指正,我在学习过程当中也会对章节内容持续补充修正。html

#2、什么是Pythonpython

Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。 #3、解释型语言和编译型语言的区别编程

咱们编程都是用的高级语言,计算机不能直接理解高级语言,只能理解和运行机器语言,因此必需要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。翻译的方式有两种,一个是编译,一个是解释。编程语言

用编译型语言写的程序执行以前,须要一个专门的编译过程,经过编译系统(不单单只是经过编译器,编译器只是编译系统的一部分)把高级语言翻译成机器语言(具体翻译过程能够参看下图),把源高级程序编译成为机器语言文件。学习

解释型语言没有严格编译汇编过程,由解释器将代码块按须要变运行边翻译给机器执行。所以解释型语言一度存在运行效率底,重复解释的问题。可是经过对解释器的优化!能够提升解释型语言的运行效率。Python就属于这一种编程语言。 #4、Python运行原理概述 Python是解释型语言,没有严格意义上的编译和汇编过程。可是通常能够认为编写好的python源文件,由python解释器翻译成以.pyc为结尾的字节码文件。pyc文件是二进制文件,能够由python虚拟机直接运行。优化

注:有的朋友可能会问,为何我运行python,有时候生成pyc文件,有时候没有呢?Python在执行import语句时,将会到已设定的path中寻找对应的模块。而且把对应的模块编译成相应的PyCodeObject(python中的一个类)中间结果,而后建立pyc文件,并将中间结果写入该文件。而后,Python会import这个pyc文件,实际上也就是将pyc文件中的PyCodeObject从新复制到内存中。而被直接运行的python代码通常不会生成pyc文件。翻译

加载模块时,若是同时存在.py和.pyc,Python会尝试使用.pyc,若是.pyc的编译时间早于.py的修改时间,则从新编译.py并更新.pyc。 #5、综述 经过上面的描述,咱们知道python在整个运行过程当中主要涉及源码xxx.py,编译好的文件xxx.pyc两类文件。其中xxx.pyc是能够由虚拟机直接执行的,是python将目标源码编译成字节码之后再磁盘上的文件形式。设计

相关文章
相关标签/搜索