idc脚本编写
‘壹’ 详细比较在ASP中通过ADO接口实现对数据库访问的三种不同格式的特点
在ASP脚本中可以通过三种方式访问数据库:
● IDC(Internet Database Connector)方式
● ADO(ActiveX Data Objects)方式
● RDS(Remote Data Service)方式
从概念上来讲,这三种访问方式对数据库的访问是由Internet Information Server来完成的。Web浏览器用HTTP协议向Internet信息服务器(IIS)递交请求。Internet信息服务器执行访问数据库的操作,并以一个HTML格式的文档作为回答。
1.Internet数据库接口(IDC)
IDC是一个传统的数据库查询工具,用来定义和执行数据库查询的SQL命令,并向浏览器返回一个指定数据格式的页面。使用IDC访问数据库最大的特点是简单,几乎不需要编程就能实现对数据库的访问。
2.ActiveX数据对象(ADO)
与IDC不同,用ADO访问数据库更类似于编写数据库应用程序,ADO把绝大部分的数据库操作封装在七个对象中,在ASP页面中编程调用这些对象执行相应的数据库操作。ADO是ASP技术的核心之一,它集中体现了ASP技术丰富而灵活的数据库访问功能。ADO建立了基于Web方式访问数据库的脚本编写模型,它不仅支持任何大型数据库的核心功能,而且支持许多数据库所专有的特性。ADO使用本机数据源,通过ODBC访问数据库。这些数据库可以是关系型数据库、文本型数据库、层次型数据库或者任何支持ODBC的数据库。ADO的主要优点是易用、高速、占用内存和磁盘空间少,所以非常适合于作为服务器端的数据库访问技术。相对于访问数据库的CGI程序而言,它是多线程的,在出现大量并发请求时,也同样可以保持服务器的运行效率,并且通过连接池(Connection Pool)技术以及对数据库连接资源的完全控制,提供与远程数据库的高效连接与访问,同时它还支持事务处理(Transaction),以开发高效率、高可靠性的数据库应用程序。
正是因为使用ADO需要编写脚本程序,所以ADO能够实现更复杂、更灵活的数据库访问逻辑。目前,ADO包括Command、Connection、Recordset等七个对象和一个动态的Properties集合,绝大部分的数据库访问任务都可以通过它们的组合来完成。
1.3 ODBC与ADO对象
1.3.1 ASP访问数据库的几种方式
3.远程数据服务(RDS)
RDS是IIS 1.0中新提出的概念,它是由ASP中原来的Advanced Data Connector(ADC)发展而来的。在IIS 1.0中,RDS与ADO集成到一起,使用同样的编程模型,提供访问远程数据库的功能。
ADO虽然能够提供非常强大的数据库访问功能,但是它不支持数据远程操作(DataRemoting)。换句话说,ADO只能执行查询并返回数据库查询的结果,这种结果是静态的,服务器上的数据库与客户端看到的数据没有“活的连接关系”。假如,客户端需要修改数据库中的数据,就必须构造修改数据的SQL语句,执行相应的查询动作。而RDS就比ADO更进一步,它支持数据远程操作。它不仅能执行查询并返回数据库查询结果,而且这种结果是“动态的”, 服务器上的数据库与客户端看到的数据保持“活的连接关系”。即把服务器端的数据搬到客户端,在客户端修改数据后,调用一个数据库更新命令,就可以将客户端对数据的修改写回数据库,就象使用本地数据库一样。
由于RDS与ADO集成,RDS的底层是调用ADO来完成的,所以也可以将RDS理解为ADO的RDS,即ActiveX数据对象的远程数据服务。RDS在ADO的基础上通过绑定的数据显示和操作控件,提供给客户端更强的数据表现力和远程数据操纵功能。可以说RDS是目前基于Web的最好的远程数据库访问方式。
以上就是ASP访问数据库的三种方式,它们三者各有各的特色。IDC十分简单,使用.idc文件和.htx文件分别完成数据库的访问与输出任务,但是使用起来不灵活。ADO是ASP中推荐使用的方式,它功能强大,使用方便,是ASP的核心技术之一,但是它在提供用户远程操作数据库的功能时,比较复杂,实现起来有一定的难度。而RDS是基于ADO的,并提供远程操作数据库的强大工具。所以在需要提供高性能、高可靠性的远程数据操作功能时,RDS是更为理想的选择。
‘贰’ IDA Pro代码破解揭秘的编辑推荐
《IDA Pro代码破解揭秘》:如果你想掌握IDA Pro,如果你想掌握逆向工程编码的科学和艺术,如果你想进行更高效的安全研发和软件调试,《IDA Pro代码破解揭秘》正适合你!
《IDA Pro代码破解揭秘》是安全领域内的权威着作,也是少有的一本面向逆向工程编码的书籍!
书中阐述了IDA Pro逆向工程代码破解的精髓,细致而全面地讲述了利用IDA Pro挖掘并分析软件中的漏洞、逆向工程恶意代码、使用IDC脚本语言自动执行各项任务,指导读者在理解PE文件和ELF文件的基础上分析逆向工程的基本组件,使用IDA Pro调试软件和修改堆和栈的数据,利用反逆向功能终止他人对应用的逆向,还介绍了如何跟踪执行流、确定协议结构、分析协议中是否仍有未文档化的消息,以及如何编写IDC脚本和插件来自动执行复杂任务等内容。《IDA Pro代码破解揭秘》注重实践,提供了大量图示和示例代码供大家参考使用,可读性和可操作性极强。
安全编程修炼之道!看雪学院等着名安全论坛强烈推荐,安全专家兼IOActive公司渗透测试总监Dan Kaminsky经典力作。
‘叁’ idc和ida python的区别
idc 脚本 是ida 自带,相对简陋
idapython 是插件实现脚本功能,因为用python,更全面强大
‘肆’ IDA Pro权威指南的目录
第一部分IDA简介
第1章反汇编简介 2
1.1反汇编理论2
1.2何为反汇编3
1.3为何反汇编3
1.3.1分析恶意软件 4
1.3.2漏洞分析4
1.3.3软件互操作性 4
1.3.4编译器验证 4
1.3.5显示调试信息 5
1.4如何反汇编5
1.4.1基本的反汇编算法5
1.4.2线性扫描反汇编6
1.4.3递归下降反汇编7
1.5小结 10
第2章逆向与反汇编工具 11
2.1分类工具 11
2.1.1file 11
2.1.2PE Tools 13
2.1.3PEiD 14
2.2摘要工具 14
2.2.1nm 15
2.2.2ldd 16
2.2.3objmp 17
2.2.4otool 18
2.2.5mpbin 18
2.2.6c++filt 19
2.3深度检测工具 20
2.3.1strings 20
2.3.2反汇编器 21
2.4小结 22
第3章IDA Pro背景知识 23
3.1Hex-Rays公司的反盗版策略 23
3.2获取IDA Pro 24
3.2.1IDA版本 24
3.2.2IDA许可证 24
3.2.3购买IDA 25
3.2.4升级IDA 25
3.3IDA支持资源 25
3.4安装IDA 26
3.4.1Windows安装 26
3.4.2OS X和Linux安装 27
3.4.3IDA目录的结构 28
3.5IDA用户界面 29
3.6小结 29
第二部分IDA基本用法
第4章IDA入门 32
4.1启动IDA 32
4.1.1IDA文件加载 34
4.1.2使用二进制文件加载器 35
4.2IDA数据库文件 37
4.2.1创建IDA数据库 38
4.2.2关闭IDA数据库 38
4.2.3重新打开数据库 39
4.3IDA桌面简介 40
4.4初始分析时的桌面行为 42
4.5IDA桌面提示和技巧 43
4.6报告bug 44
4.7小结 44
第5章IDA数据显示窗口 45
5.1IDA主要的数据显示窗口 45
5.1.1反汇编窗口 45
5.1.2Names窗口 50
5.1.3消息窗口 51
5.1.4Strings窗口 52
5.2次要的IDA显示窗口 53
5.2.1十六进制窗口 53
5.2.2导出窗口 54
5.2.3导入窗口 54
5.2.4函数窗口 55
5.2.5结构体窗口 55
5.2.6枚举窗口 56
5.3其他IDA显示窗口 56
5.3.1段窗口 56
5.3.2签名窗口 57
5.3.3类型库窗口 58
5.3.4函数调用窗口 58
5.3.5问题窗口 59
5.4小结 59
第6章反汇编导航 60
6.1基本IDA导航 60
6.1.1双击导航60
6.1.2跳转到地址 62
6.1.3导航历史记录 62
6.2栈帧 63
6.2.1调用约定64
6.2.2局部变量布局 67
6.2.3栈帧示例67
6.2.4IDA栈视图 70
6.3搜索数据库74
6.3.1文本搜索75
6.3.2二进制搜索 75
6.4小结 76
第7章反汇编操作 77
7.1名称与命名77
7.1.1参数和局部变量 77
7.1.2已命名的位置 79
7.1.3寄存器名称 80
7.2IDA中的注释 80
7.2.1常规注释82
7.2.2可重复注释 82
7.2.3在前注释和在后注释 82
7.2.4函数注释82
7.3基本代码转换 83
7.3.1代码显示选项 83
7.3.2格式化指令操作数 85
7.3.3操纵函数86
7.3.4数据与代码互相转换 91
7.4基本数据转换 91
7.4.1指定数据大小 92
7.4.2处理字符串 93
7.4.3指定数组 94
7.5小结 96
第8章数据类型与数据结构 97
8.1识别数据结构的使用 98
8.1.1数组成员访问 98
8.1.2结构体成员访问 102
8.2创建IDA结构体 107
8.3使用结构体模板 111
8.4导入新的结构体 114
8.4.1解析C结构体声明 114
8.4.2解析C头文件 115
8.5使用标准结构体 115
8.6IDA TIL文件 118
8.6.1加载新的TIL文件 118
8.6.2共享TIL文件 118
8.7C++逆向工程基础 119
8.7.1this指针 119
8.7.2虚函数和虚表 120
8.7.3对象生命周期 122
8.7.4名称改编 124
8.7.5运行时类型识别 125
8.7.6继承关系 126
8.7.7C++逆向工程参考文献 127
8.8小结 127
第9章交叉引用与绘图功能 128
9.1交叉引用 128
9.1.1代码交叉引用 129
9.1.2数据交叉引用 131
9.1.3交叉引用列表 133
9.1.4函数调用 134
9.2IDA绘图 135
9.2.1IDA的遗留绘图功能 135
9.2.2IDA的集成图形视图 141
9.3小结 143
第10章IDA的多种面孔 144
10.1控制台模式IDA 144
10.1.1控制台模式的共同特性 144
10.1.2Windows控制台 145
10.1.3Linux控制台 146
10.1.4OS X控制台 148
10.2使用IDA的批量模式 150
10.3非Windows平台上的GUI IDA 151
10.4小结 152
第三部分IDA高级应用
第11章定制IDA 154
11.1配置文件 154
11.1.1主配置文件:ida.cfg 154
11.1.2GUI配置文件:idagui.cfg 155
11.1.3控制台配置文件:idatui.cfg 157
11.2其他IDA配置选项 158
11.2.1IDA颜色 159
11.2.2定制IDA工具栏 159
11.3小结 161
第12章使用FLIRT签名来识别库 162
12.1快速库识别和鉴定技术 162
12.2应用FLIRT签名 163
12.3创建FLIRT签名文件 166
12.3.1创建签名概述 166
12.3.2识别和获取静态库 167
12.3.3创建模式文件 168
12.3.4创建签名文件 169
12.3.5启动签名 171
12.4小结 172
第13章扩展IDA的知识 173
13.1扩充函数信息 173
13.1.1IDS文件 175
13.1.2创建IDS文件 176
13.2使用loadint扩充预定义注释 178
13.3小结 179
第14章修补二进制文件及其他IDA 限制 180
14.1隐藏的补丁程序菜单 180
14.1.1更改数据库字节 181
14.1.2更改数据库中的字 181
14.1.3使用“汇编”对话框 182
14.2IDA输出文件与补丁生成 183
14.2.1IDA生成的MAP文件 183
14.2.2IDA生成的ASM文件 184
14.2.3IDA生成的INC文件 184
14.2.4IDA生成的LST文件 185
14.2.5IDA生成的EXE文件 185
14.2.6IDA生成的DIF文件 185
14.2.7IDA生成的HTML文件 186
14.3小结 186
第四部分扩展IDA的功能
第15章编写IDC脚本 188
15.1执行脚本的基础知识 188
15.2IDC语言 189
15.2.1IDC变量 190
15.2.2IDC表达式 190
15.2.3IDC语句 190
15.2.4IDC函数 191
15.2.5IDC程序 192
15.2.6IDC错误处理 192
15.2.7IDC永久数据存储 193
15.3关联IDC脚本与热键 194
15.4有用的IDC函数 195
15.4.1读取和修改数据的函数 196
15.4.2用户交互函数 196
15.4.3字符串操纵函数 197
15.4.4文件输入/输出函数 197
15.4.5操纵数据库名称 198
15.4.6处理函数的函数 199
15.4.7代码交叉引用函数 199
15.4.8数据交叉引用函数 200
15.4.9数据库操纵函数 200
15.4.10数据库搜索函数 201
15.4.11反汇编行组件 201
15.5IDC脚本示例 202
15.5.1枚举函数 202
15.5.2枚举指令 202
15.5.3枚举交叉引用 203
15.5.4枚举导出的函数 205
15.5.5查找和标记函数参数 206
15.5.6模拟汇编语言行为 208
15.6小结 209
第16章IDA软件开发工具包 211
16.1SDK简介 212
16.1.1安装SDK 212
16.1.2SDK的布局 212
16.1.3配置构建环境 213
16.2IDA应用编程接口 214
16.2.1头文件概述 214
16.2.2网络节点 217
16.2.3有用的SDK数据类型 223
16.2.4常用的SDK函数 224
16.2.5IDA API迭代技巧 229
16.3小结 232
第17章IDA插件体系结构 233
17.1编写插件 233
17.1.1插件生命周期 235
17.1.2插件初始化 236
17.1.3事件通知 237
17.1.4插件执行 238
17.2构建插件 239
17.3插件安装 243
17.4插件配置 244
17.5扩展IDC 244
17.6插件用户界面选项 247
17.7小结 254
第18章二进制文件与IDA加载器模块 255
18.1未知文件分析 256
18.2手动加载一个Windows PE文件 256
18.3IDA加载器模块 263
18.4编写IDA加载器 263
18.4.1“傻瓜式”加载器 265
18.4.2构建IDA加载器模块 269
18.4.3IDA pcap加载器 269
18.5其他加载器策略 274
18.6小结 275
第19章IDA处理器模块 276
19.1Python字节码 277
19.2Python解释器 277
19.3编写处理器模块 277
19.3.1processor_t结构体 278
19.3.2LPH结构体的基本初始化 278
19.3.3分析器 282
19.3.4模拟器 286
19.3.5输出器 288
19.3.6处理器通知 293
19.3.7其他processor_t成员 294
19.4构建处理器模块 296
19.5定制现有的处理器 299
19.6处理器模块体系结构 301
19.7小结 302
第五部分实际应用
第20章编译器变体 304
20.1跳转表与分支语句 304
20.2RTTI实现 308
20.3定位main函数 308
20.4调试版与发行版二进制文件 315
20.5其他调用约定 317
20.6小结 317
第21章模糊代码分析 319
21.1反静态分析技巧 319
21.1.1反汇编去同步 319
21.1.2动态计算目标地址 322
21.1.3导入的函数模糊 327
21.1.4有针对性地攻击分析工具 331
21.2反动态分析技巧 331
21.2.1检测虚拟化 331
21.2.2检测“检测工具” 333
21.2.3检测调试器 333
21.2.4防止调试 334
21.3使用IDA对二进制文件进行“静态去模糊” 335
21.3.1面向脚本的去模糊 335
21.3.2面向模拟的去模糊 339
21.4小结 349
第22章漏洞分析 350
22.1使用IDA发现新的漏洞 351
22.2使用IDA在事后发现漏洞 356
22.3IDA与破解程序开发过程 359
22.3.1栈帧细目 360
22.3.2定位指令序列 362
22.3.3查找有用的虚拟地址 363
22.4分析shellcode 364
22.5小结 366
第23章实用IDA插件 367
23.1Hex-Rays 367
23.2IDAPython 368
23.3IDARub 371
23.4IDA Sync 371
23.5collabREate 374
23.6ida-x86emu 377
23.7mIDA 377
23.8小结 379
第六部分IDA调试器
第24章IDA调试器 382
24.1启动调试器 382
24.2调试器的基本显示 384
24.3进程控制 387
24.3.1断点 388
24.3.2跟踪 390
24.3.3栈跟踪 393
24.3.4监视 393
24.4调试器任务自动化 393
24.4.1使用IDC为调试器操作编写 脚本 394
24.4.2使用IDA插件实现调试器操 作自动化 398
24.5小结 400
第25章反汇编器/调试器集成 401
25.1背景知识 401
25.2IDA数据库与IDA调试器 402
25.3调试模糊代码 404
25.3.1简单的解密和解压循环 404
25.3.2导入表重建 407
25.3.3隐藏调试器 410
25.3.4处理异常 414
25.4小结 418
第26章Linux、OS X平台的IDA和 远程调试 419
26.1控制台模式的调试 419
26.2使用IDA进行远程调试 420
26.2.1远程调试中的异常处理 422
26.2.2在远程调试中使用脚本和 插件 423
26.3小结 423
附录A使用IDA 4.9免费版 424
附录BIDC/SDK交叉引用 426
附录CIDA 5.3的新功能 444
‘伍’ 反汇编和二进制分析工具清单
反汇编和二进制分析工具清单
在二进制分析的世界里,有多种工具可供选择,涵盖了反汇编、调试器、反汇编框架和二进制分析框架。以下是其中的一些核心工具:
反汇编工具
- IDA Pro(Windows、Linux、macOS):作为行业标准,IDA Pro是强大且交互式的,支持Python和IDC脚本,但价格较高(最低700美元)。旧版虽免费,但功能有限。
- Hopper(Linux、macOS):价格较低,易用且具备部分IDA功能,尤其是Python脚本和反编译功能。
- ODA(所有操作系统):免费且轻便,适用于快速实验,支持在线上传和二进制文件输入。
- Binary Ninja(Windows、Linux、macOS):前景广阔,交互式且支持多体系结构,C、C++和Python脚本,个人版需付费149美元。
- Relyze(Windows):交互式,通过Ruby提供二进制文件对比,商业产品,价格低于IDA Pro。
- Mesa(Windows、Linux):免费开源,支持多体系结构,具有Python脚本功能。
- radare(Windows、Linux、macOS):命令行工具,灵活且开源,提供线性和递归反汇编,支持脚本编写。
- objmp(Linux、macOS):免费开源,GNU binutils一部分,适用于线性反汇编。
调试器
- GDB(Linux):Linux标准调试器,支持交互式和远程调试。
- OllyDbg(Windows):通用Windows调试器,有高级执行跟踪功能,免费但非开源。
- Windbg(Windows):Microsoft的Windows调试器,适用于内核和用户层代码分析。
- Bochs(Windows、Linux、macOS):跨平台的PC模拟器,开源,可用于调试仿真代码。
其他框架
- Capstone:开源反汇编引擎,用于自定义工具开发,支持多体系架构。
- distorm3:专注于x86反汇编的API,提供多种语言绑定。
- udis86:简约的x86反汇编库,适合C语言工具构建。
- angr:Python框架,用于高级二进制分析,开源且在积极开发中。
- Pin:动态二进制检测引擎,Intel开发,适合实时修改行为。
- Dyninst:动态二进制工具API,免费开源,注重研究。
- Unicorn:轻量级CPU仿真器,支持多种体系结构,用于仿真分析。
- libdft:动态污点分析库,开源且易用,适用于污点分析。
- Triton:动态二进制分析框架,支持符号执行和污染分析,开源。
这些工具为二进制分析提供了坚实的基础,无论你是初学者还是经验丰富的专家,都可以根据需要选择合适的工具进行深入学习和实践。