扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以的,因为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中try...except函数可以用if..else函数代替。在while循环内部,fast指针每次向前走两步,这时候我们就要判断fast的next指针是否为None,不然对fast.next再调用next指针的时候就会报异常,这个异常出现也反过来说明链表不存在环,就可以returnFalse。所以可以把while代码放到一个try…except中,一旦出现异常就return。这是一个比较好的思路,在以后写代码的时候可以考虑替换某些if…else语句减少不必要的判断,也使得代码变的更简洁。
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中函数的定义与创建详解》。本文的主要内容有:函数的定义、函数的定义规则、函数的创建。
我们在中学的时候,在数学课中学过函数,函数是数学最重要的一个模块。在Python中,函数的应用非常广泛。在前面我们已经多次接触过函数。例如,用于输出的print()函数,用于输入的input()函数,以及用于生成一系列整数的range()函数。但这些都是Python内置的标准函数,可以直接使用。除了可以直接使用的标准函数外,Python还支持自定义函数。即通过将一段有规律的、重复的代码定义为函数,来达到一次编写、多次调用的目的。使用函数可以提高代码的重复利用率。
那什么是函数呢?
1、函数的定义
如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数。
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数的输入可称为参数,输出可称为返回值。
2、函数的定义规则
2.1、函数代码块要以 def 关键词开头,后接函数标识符名称与括号(),同时不要忘记冒号':'的使用
2.2、不主动调用函数时,函数不会被使用
2.3、圆括号之间可以用于定义参数,任何入参数和自变量必须放在圆括号中间。
2.4、函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
2.5、函数内容以冒号起始,并且缩进。
2.6、return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
3、函数的创建
创建函数也称为定义函数,可以理解为创建一个具有某种用途的工具。使用def关键字实现,具体的语法格式如下:
def functionname([parameterlist]): ['''comments'''] [functionbody]
参数说明如下:
functionname:函数名称,在调用函数时使用。
parameterlist:可选参数,用于指定向函数中传递的参数。如果有多个参数,各参数间使用逗号“,”分隔。如果不指定,则表示该函数没有参数。在调用时,也不指定参数。
'''comments''':可选参数,表示为函数指定注释,注释的内容通常是说明该函数的功能、要传递的参数的作用等,可以为用户提供友好提示和帮助的内容。
functionbody:可选参数,用于指定函数体,即该函数被调用后,要执行的功能代码。如果函数有返回值,可以使用return语句返回。
站长在线提醒你:
1、函数体“functionbody”和注释“'''comments'''”相对于def关键字必须保持一定的缩进。
2、如果想定义一个什么也不做的空函数,可以使用pass语句作为占位符。
例如,定义一个过滤危险字符的函数filterchar(),代码如下:
运行上面的代码,将不显示任何内容,也不会抛出异常,因为filterchar()函数还没有调用。
在下一个知识点,站长在线就来讲解《在Python中函数的调用》。关注站长在线,学习Python不迷路!欢迎你对站长在线进行关注,评论,点赞,分享、转发!
内容简介
《Python灰帽子》是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍。老牌黑客,同时也是Immunity Inc的创始人兼首席技术执行官(CTO)Dave Aitel为这本书担任了技术编辑一职。书中绝大部分篇幅着眼于黑客技术领域中的两大经久不衰的话题:逆向工程与漏洞挖掘,并向读者呈现了几乎每个逆向工程师或安全研究人员在日常工作中所面临的各种场景,其中包括:如何设计与构建自己的调试工具,如何自动化实现烦琐的逆向分析任务,如何设计与构建自己的fuzzing工具,如何利用fuzzing 测试来找出存在于软件产品中的安全漏洞,一些小技巧诸如钩子与注入技术的应用,以及对一些主流Python安全工具如PyDbg、 Immunity Debugger、Sulley、IDAPython、PyEmu等的深入介绍。作者借助于如今黑客社区中备受青睐的编程语言 Python引领读者构建出精悍的脚本程序来一一应对上述这些问题。出现在书中的相当一部分Python代码实例借鉴或直接来源于一些优秀的开源安全项目,诸如Pedram Amini的Paimei,由此读者可以领略到安全研究者们是如何将黑客艺术与工程技术优雅融合来解决那些棘手问题的。
相关推荐:《Python教程》
作者简介
Justin Seitz是一名Immunity公司的高级安全研究员,他在以往的工作中花费了大量的时间从事漏洞挖掘、逆向工程、编写漏洞利用以及编写Python代码的研究。
目录
第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内置函数有很多,为大家推荐5个神仙级的内置函数:
(1)Lambda函数
用于创建匿名函数,即没有名称的函数。它只是一个表达式,函数体比def简单很多。当我们需要创建一个函数来执行单个操作并且可以在一行中编写时,就可以用到匿名函数了。
Lamdba的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
利用Lamdba函数,往往可以将代码简化许多。
(2)Map函数
会将一个函数映射到一个输入列表的所有元素上,比如我们先创建了一个函数来返回一个大写的输入单词,然后将此函数应有到列表colors中的所有元素。
我们还可以使用匿名函数lamdba来配合map函数,这样可以更加精简。
(3)Reduce函数
当需要对一个列表进行一些计算并返回结果时,reduce()是个非常有用的函数。举个例子,当需要计算一个整数列表所有元素的乘积时,即可使用reduce函数实现。
它与函数的最大的区别就是,reduce()里的映射函数(function)接收两个参数,而map接收一个参数。
(4)enumerate函数
用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。
它的两个参数,一个是序列、迭代器或其他支持迭代对象;另一个是下标起始位置,默认情况从0开始,也可以自定义计数器的起始编号。
(5)Zip函数
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
当我们使用zip()函数时,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
python
a = eval(input)
b = eval(input)
c = eval(input)
print((a+b+c)/3)
a = eval(input)
b = eval(input)
c = eval(input)
print((a+b+c)/3)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流