一.前言 最近在学习Python逆向相关,涉及到python字节码的阅读,编译及反汇编一些问题.经过长时间的学习有了一些眉目,为了方便大家交流,特地将学习过程整理,形成了这篇专题.专题对python逆向的基础知识进行了简洁有效的解读,暂不涉及python编译过程中的代码混淆.文章中如有不恰当的地方敬请指正,我在学习过程中也会对章节内容持续补充修正. Python逆向(一)-- 前言及Python运行原理 Python逆向(二)-- pyc文件结构分析 Python逆向(三)-- Python编译…
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat # python的函数是如何工作的 # 比方说我们定义了两个函数 def foo(): bar() def bar(): pass # 首先python解释器(python.exe)会用一个叫做PyEval_EvalFrameEx()的C语言函数去执行foo,所以python的代码是运行在C程序之上的 # 当运行foo函数时,会首先创建一个栈帧(stack frame),…
一.前言 前期我们已经对python的运行原理以及运行过程中产生的文件结构有了了解.本节,我们将结合具体的例子来实践python运行,编译,反编译的过程,并对前些章节中可能遗漏的具体细节进行补充. 二.Python编译 python在正常运行时,有时编译生成pyc文件,有时候没有pyc文件的生成.那么我们能不能手动将python程序编译成pyc文件呢?答案是可以的,不但可以编译,还可以直接运行pyc文件以实现程序运行的效率. 2.1.pyc文件的生成 命令行模式: python -m py_co…
一.前言 前些章节我们对python编译.反汇编的原理及相关模块已经做了解读.读者应该初步掌握了通过反汇编获取python程序可读字节码的能力.python逆向或者反汇编的目的就是在没有源码的基础上,通过字节码来理解源代码的运行内容,并且进一步对源码的远行进行调试.因此本次我们尝试对python字节码进行解读. 二.字节码结构 字节码结构如下: 源码行号 | 跳转注释符 | 指令在函数中的偏移 | 指令符号(助记符) | 指令参数 | 实际参数值 上图表示: 该字节码指令在源码中对应59行 此处…
一.前言 上一节我们对Python编译及反汇编做了讲解,大家知道dis模块可以将编译好的pyc文件中提取出来的PyCodeObject反汇编为可以阅读字节码形式.本节我们对dis模块中的源码进行详细的解读. 二.dis模块原理解析 官方文档说明:https://docs.python.org/2/library/dis.html The dis module supports the analysis of CPython bytecode by disassembling it. The CP…
前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm--一个专门为python而生的IDE 按照惯例,第一个python代码打印一个所有开发语言里入门必学"hello,world"?no,你错了,我偏不 第一行是编码,utf-8这是国际使用标准,如果我不加的话,很容易出错 第二行print(打印的意思)语句,是python的关键词语句,可以打印一个字符,可以打印一个数字,可以打印任何你想打印的东西,只要你想让它…
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的读书笔记,整理完之后才发现很长,那就将就看吧. 1. 简单的例子 先从一个简单的例子说起,包含了两个文件 foo.py 和 demo.py [foo.py] def add(a, b): return a + b [demo.py] import foo a = [1, 'python'] a =…
近期为了面试想要了解下python的运行原理方面的东西,奈何关于python没有找到一本类似于深入理解Java虚拟机方面的书籍,找到了一本<python源码剖析>电子书,但是觉得相对来说最近还是不打算用大布头时间研究这本书,只能先找来几篇相关的博客来阅读,记录如下: 一.过程概述 1.python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机会从编译得到的PyCodeObject对象中一条一条执行字节码指令,并在当前的上下文环境中执行这条字节码指令,从而完成程序的执行.Pyt…
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.Appium 的理念 四个原则 1.Web-Selenium 的运行原理 2.Appium 运行原理 二.Appium 面板 三.一段简单的代码来打开应用 1.前提条件 2.怎么识别 app? 3.查看安卓 App 包名的链接 4.Appium 官网介绍 5.为什么有平台版本号? 6.aapt 命令获取应用包名和入口 activity 7.代码 一.Appium 的理念 四个原则: 你没有…
爬虫系列目录 目录 Python逆向爬虫之scrapy框架,非常详细 一.爬虫入门 1.1 定义需求 1.2 需求分析 1.2.1 下载某个页面上所有的图片 1.2.2 分页 1.2.3 进行下载图片 二.Scrapy 入门 2.1 安装 Scrapy 2.2 Scrapy 创建项目 2.3 scrapy 命令 2.4 生成文件详情 2.5 第一个 scrapy 爬虫程序 2.5.1 编辑 spider 2.5.2 编辑 piplines 2.5.3 编辑配置文件 三.Scrapy Spider…