Python可以做系统底层开发吗

Python012

Python可以做系统底层开发吗,第1张

可以的,因为pytho可以调用系统的API,C怎么调用,python一样怎么调用就行。

具体如何实现可以参考:python灰帽子一书,这本书的中文版网上到处有下,baidu一下就好

下面是目录:看看吧,没什么不能做的

目录

· · · · · ·

第1章 搭建开发环境 1

1.1 操作系统要求 1

1.2 获取和安装Python 2.5 2

1.2.1 在Windows下安装Python 2

1.2.2 在Linux下安装Python 2

1.3 安装Eclipse和PyDev 4

1.3.1 黑客挚友:ctype库 5

1.3.2 使用动态链接库 6

1.3.3 构建C数据类型 8

1.3.4 按引用传参 9

1.3.5 定义结构体和联合体 9

第2章 调试器原理和设计 12

2.1 通用寄存器 13

2.2 栈 15

2.3 调试事件 17

2.4 断点 18

2.4.1 软断点 18

2.4.2 硬件断点 20

2.4.3 内存断点 22

第3章 构建自己的Windows调试器 24

3.1 Debugee,敢问你在何处 24

3.2 获取寄存器状态信息 33

3.2.1 线程枚举 34

3.2.2 功能整合 35

3.3 实现调试事件处理例程 39

3.4 无所不能的断点 44

3.4.1 软断点 44

3.4.2 硬件断点 49

3.4.3 内存断点 55

3.5 总结 59

第4章 PyDbg——Windows下的纯Python调试器 60

4.1 扩展断点处理例程 60

4.2 非法内存操作处理例程 63

4.3 进程快照 66

4.3.1 获取进程快照 67

4.3.2 汇总与整合 70

第5章 Immunity Debugger——两极世界的最佳选择 74

5.1 安装Immunity Debugger 74

5.2 Immunity Debugger 101 75

5.2.1 PyCommand命令 76

5.2.2 PyHooks 76

5.3 Exploit(漏洞利用程序)开发 78

5.3.1 搜寻exploit友好指令 78

5.3.2 “坏”字符过滤 80

5.3.3 绕过Windows 下的DEP机制 82

5.4 破除恶意软件中的反调试例程 87

5.4.1 IsDebuugerPresent 87

5.4.2 破除进程枚举例程 88

第6章 钩子的艺术 90

6.1 使用PyDbg部署软钩子 90

6.2 使用Immunity Debugger部署硬钩子 95

第7章 DLL注入与代码注入技术 101

7.1 创建远程线程 101

7.1.1 DLL注入 102

7.1.2 代码注入 105

7.2 遁入黑暗 108

7.2.1 文件隐藏 109

7.2.2 构建后门 110

7.2.3 使用py2exe编译Python代码 114

第8章 Fuzzing 117

8.1 几种常见的bug类型 118

8.1.1 缓冲区溢出 118

8.1.2 整数溢出 119

8.1.3 格式化串攻击 121

8.2 文件Fuzzer 122

8.3 后续改进策略 129

8.3.1 代码覆盖率 129

8.3.2 自动化静态分析 130

第9章 Sulley 131

9.1 安装Sulley 132

9.2 Sulley中的基本数据类型 132

9.2.1 字符串 133

9.2.2 分隔符 133

9.2.3 静态和随机数据类型 134

9.2.4 二进制数据 134

9.2.5 整数 134

9.2.6 块与组 135

9.3 行刺WarFTPD 136

9.3.1 FTP 101 137

9.3.2 创建FTP协议描述框架 138

9.3.3 Sulley会话 139

9.3.4 网络和进程监控 140

9.3.5 Fuzzing测试以及Sulley的Web界面 141

第10章 面向Windows驱动的Fuzzing测试技术 145

10.1 驱动通信基础 146

10.2 使用Immunity Debugger进行驱动级的Fuzzing测试 147

10.3 Driverlib——面向驱动的静态分析工具 151

10.3.1 寻找设备名称 152

10.3.2 寻找IOCTL分派例程 153

10.3.3 搜寻有效的IOCTL控制码 155

10.4 构建一个驱动Fuzzer 157

第11章 IDAPython——IDA PRO环境下的Python脚本编程 162

11.1 安装IDAPython 163

11.2 IDAPython函数 164

11.2.1 两个工具函数 164

11.2.2 段(Segment) 164

11.2.3 函数 165

11.2.4 交叉引用 166

11.2.5 调试器钩子 166

11.3 脚本实例 167

11.3.1 搜寻危险函数的交叉代码 168

11.3.2 函数覆盖检测 169

11.3.3 检测栈变量大小 171

第12章 PYEmu——脚本驱动式仿真器 174

12.1 安装PyEmu 174

12.2 PyEmu概览 175

12.2.1 PyCPU 175

12.2.2 PyMemory 176

12.2.3 PyEmu 176

12.2.4 指令执行 176

12.2.5 内存修改器与寄存器修改器 177

12.2.6 处理例程(Handler) 177

12.3 IDAPyEmu 182

12.3.1 函数仿真 184

12.3.2 PEPyEmu 187

12.3.3 可执行文件加壳器 188

12.3.4 UPX加壳器 188

12.3.5 利用PEPyEmu脱UPX壳 189

Python的底层语言是C。大多数高级语言都是在C语言的基础上开发的,比如Python、Java、C#……,这些的底层都是C。

Python是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良的LISP。

Python的设计哲学强调代码的可读性和简洁的语法。相比于C++或者Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。

与Scheme、Ruby、Perl、Tcl等动态类型编程语言一样,Python拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。其本身拥有一个巨大而广泛的标准库。

Python解释器本身几乎可以在所有的操作系统中运行。Python的其中一个解释器CPython是用C语言编写的,是一个由社群驱动的自由软件,当前由Python软件基金会管理。

字典是一种可变、无序容器数据结构。元素以键值对存在,键值唯一。它的特点搜索速度很快:数据量增加10000倍,搜索时间增加不到2倍;当数据量很大的时候,字典的搜索速度要比列表快成百上千倍。

在Python中,字典是通过散列表(哈希表)实现的。字典也叫哈希数组或关联数组,所以其本质是数组(如下图),每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket。

定义一个字典 dic = {},假设其哈希数组长度为8。

Python会根据哈希数组的拥挤程度对其扩容。“扩容”指的是:创造更大的数组,这时候会对已经存在的键值对重新进行哈希取余运算保存到其它位置;一般接近 2/3 时,数组就会扩容。扩容后,偏移量的数字个数增加,如数组长度扩容到16时,可以用最右边4位数字作为偏移量。

计算键对象 name 的哈希值,然后比较哈希数组对应索引内的bucket是否为空,为空返回 None ,否则计算这个bucket的键对象的哈希值,然后与 name 哈希值比较,相等则返回 值对象 ,否则继续左移计算哈希值。

注意:

1.键必须为可哈希的,如数字、元组、字符串;自定义对象需要满足支持hash、支持通过 __eq__() 方法检测相等性、若 a == b 为真,则 hash(a) == hash(b) 也为真。

2.字典的内存开销很大,以空间换时间。

3.键查询速度很快,列表查询是按顺序一个个遍历,字典则是一步到位。

4.往字典里面添加新键可能导致扩容,导致哈希数组中键的次序变化。因此,不要在遍历字典的同时进行字典的修改。