1. 中如下的编译选项什么意思
1.编译目标文件
icc -c -offload-attribute-target=mic -O3 -openmp -std=c99 -DMKL_ILP64 -I/opt/intel/composer_xe_2013_sp1.1.106/mkl/include fft.c -o fft_new.o
2.连接产生可执行文件
icc fft_new.o -openmp -Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -Ip-offload-option,mic,compiler,"-Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013mkl/lib/mic/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_core.a -Wl,--end-group" -o fft_new.out
这里的东西较多,看上去比较复杂。
1.对于第一步,编译出目标文件。这里面的几个编译选项:
-O3 :表示最大可能优化级别。各种循环优化都执行了,并且各种文件级性质也用来改善性能
-openmp:采用了openmp并行编程
-std=c99:ANSI C是89年成为了标准,被ISO认证。之后99年ISO更新了新的C标准。所以-std用来指明编译的C标准。在某些情况下,如果使用GCC,可能在有冲突的时候使用其他标准,比如:-std=gnu89
-DMKL_ILP64:这个是intel提供的编译选项,主要是一个平台的指示。
-I:指定头文件目录
-o:重命名。
2.对于第二步,链接过程。其中几个编译选项:
-openmp:同上
-Wl:Wl选项告诉编译器将后面的参数传递给链接器。
--start-group 和--stop-group:库文件参数传递的开始和结束。
--offload-option,mic:使用offload方式使用协处理器进行运算
转自CSDN社区beglorious的专栏
2. vc的各编译选项都是什么意思
VC编译选项
/Od 禁用优化(默认值) disable optimizations (default)
/Ox 最大化选项。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 启用全局优化 enable global optimization
/Oy[-] 启用框架指针省略 enable frame pointer omission
/Oi 启用内建函数 enable intrinsic functions
-代码生成-
/G3 为 80386 进行优化 optimize for 80386
/G4 为 80486 进行优化 optimize for 80486
/GR[-] 启用 C++ RTTI enable C++ RTTI
/G5 为 Pentium 进行优化 optimize for Pentium
/G6 为 Pentium Pro 进行优化 optimize for Pentium Pro
/GX[-] 启用 C++ 异常处理(与 /EHsc 相同) enable C++ EH (same as /EHsc)
/EHs 启用同步 C++ 异常处理 enable synchronous C++ EH
/GD 为 Windows DLL 进行优化 optimize for Windows DLL
/GB 为混合模型进行优化(默认) optimize for blended model (default)
/EHa 启用异步 C++ 异常处理 enable asynchronous C++ EH
/Gd __cdecl 调用约定 __cdecl calling convention
/EHc extern“C”默认为 nothrow extern "C" defaults to nothrow
/Gr __fastcall 调用约定 __fastcall calling convention
/Gi[-] 启用增量编译 enable incremental compilation
/Gz __stdcall 调用约定 __stdcall calling convention
/Gm[-] 启用最小重新生成 enable minimal rebuild
/GA 为 Windows 应用程序进行优化 optimize for Windows Application
/Gf 启用字符串池 enable string pooling
/QIfdiv[-] 启用 Pentium FDIV 修复 enable Pentium FDIV fix
/GF 启用只读字符串池 enable read-only string pooling
/QI0f[-] 启用 Pentium 0x0f 修复 enable Pentium 0x0f fix
/Gy 分隔链接器函数 separate functions for linker
/GZ 启用运行时调试检查 enable runtime debug checks
/Gh 启用钩子函数调用 enable hook function call
/Ge 对所有函数强制堆栈检查 force stack checking for all funcs
/Gs[num] 禁用堆栈检查调用 disable stack checking calls
-输出文件-
/Fa[file] 命名程序集列表文件 name assembly listing file
/Fo 命名对象文件 name object file
/FA[sc] 配置程序集列表 configure assembly listing
/Fp 命名预编译头文件 name precompiled header file
/Fd[file] 命名 .PDB 文件 name .PDB file
/Fr[file] 命名源浏览器文件 name source browser file
/Fe 命名可执行文件 name executable file
/FR[file] 命名扩展 .SBR 文件 name extended .SBR file
/Fm[file] 命名映射文件 name map file
-预处理器-
/FI 命名强制包含文件 name forced include file
/C 不吸取注释 don't strip comments
/U 移除预定义宏 remove predefined macro
/D{=|#} 定义宏 define macro
/u 移除所有预定义宏 remove all predefined macros
/E 将预处理定向到标准输出 preprocess to stdout
/I 添加到包含文件的搜索路径 add to include search path
/EP 将预处理定向到标准输出,不要带行号 preprocess to stdout, no #line
/X 忽略“标准位置” ignore "standard places"
/P 预处理到文件 preprocess to file
-语言-
/Zi 启用调试信息 enable debugging information
/Zl 忽略 .OBJ 中的默认库名 omit default library name in .OBJ
/ZI 启用调试信息的“编辑并继续”功能 enable Edit and Continue debug info
/Zg 生成函数原型 generate function prototypes
/Z7 启用旧式调试信息 enable old-style debug info
/Zs 只进行语法检查 syntax check only
/Zd 仅要行号调试信息 line number debugging info only
/vd{0|1} 禁用/启用 vtordisp disable/enable vtordisp
/Zp[n] 在 n 字节边界上包装结构 pack structs on n-byte boundary
/vm 指向成员的指针类型 type of pointers to members
/Za 禁用扩展(暗指 /Op) disable extensions (implies /Op)
/noBool 禁用“bool”关键字 disable "bool" keyword
/Ze 启用扩展(默认) enable extensions (default)
- 杂项 -
/?, /help 打印此帮助消息 print this help message
/c 只编译,不链接 compile only, no link
/W 设置警告等级(默认 n=1) set warning level (default n=1)
/H 最大化外部名称长度 max external name length
/J 默认 char 类型是 unsigned default char type is unsigned
/nologo 取消显示版权消息 suppress right message
/WX 将警告视为错误 treat warnings as errors
/Tc 将文件编译为 .c compile file as .c
/Yc[file] 创建 .PCH 文件 create .PCH file
/Tp 将文件编译为 .cpp compile file as .cpp
/Yd 将调试信息放在每个 .OBJ 中 put debug info in every .OBJ
/TC 将所有文件编译为 .c compile all files as .c
/TP 将所有文件编译为 .cpp compile all files as .cpp
/Yu[file] 使用 .PCH 文件 use .PCH file
/V 设置版本字符串 set version string
/YX[file] 自动的 .PCH 文件 automatic .PCH
/w 禁用所有警告 disable all warnings
/Zm 最大内存分配(默认为 %) max memory alloc (% of default)
-链接-
/MD 与 MSVCRT.LIB 链接 link with MSVCRT.LIB
/MDd 与 MSVCRTD.LIB 调试库链接 link with MSVCRTD.LIB debug lib
/ML 与 LIBC.LIB 链接 link with LIBC.LIB
/MLd 与 LIBCD.LIB 调试库链接 link with LIBCD.LIB debug lib
/MT 与 LIBCMT.LIB 链接 link with LIBCMT.LIB
/MTd 与 LIBCMTD.LIB 调试库链接 link with LIBCMTD.LIB debug lib
/LD 创建 .DLL Create .DLL
/F 设置堆栈大小 set stack size
/LDd 创建 .DLL 调试库 Create .DLL debug libary
/link [链接器选项和库] [linker options and libraries]
3. -Wno-deprecated-declarations编译选项什么意思
这个编译选项是用来关闭Xcode中关于废弃API的警告
比如 你代码中使用了某个已经被废弃的API 这是Xcode会出现一个警告
这时你就可以通过这个编译选项 关闭掉这个警告。
4. V8引擎示例中如下的编译选项什么意思
V8和V10指的是引擎里的气缸数缸数汽车发动机常用缸数有3、4、5、6、8、10、12缸。排量1升以下的发动机常用三缸,1-2.5升一般为四缸发动机,3升左右的发动机一般为6缸,4升左右为8缸,5.5升以上用12缸发动机。一般来说,在同等缸径下,缸数越多,排量越大,功率越高;在同等排量下,缸数越多,缸径越小,转速可以提高,从而获得较大的提升功率。6-12缸发动机一般采用V型排列,其中V10发动机主要装在赛车上。V型发动机长度和高度尺寸小,布置起来非常方便,而且一般认为V型发动机是比较高级的发动机,也成为轿车级别的标志之一。V8发动机结构非常复杂,制造成本很高,所以使用的较少,V12发动机过大过重,只有极个别的高级轿车采用。2006赛季F1赛车引擎由3.0升V10变为2.4升V8,目的是为了降低各车队的引擎研发等开支,同时提高比赛安全性。此项规则改动将导致引擎输出功率相比2005赛季(900马力左右)降低约200马力。对于无法在2006赛季开始时获得新规则规定的V8引擎的车队,也允许其在限制引擎转速的情况下,使用符合2005赛季技术规则的V10引擎。
5. Linux 编译选项
gcc -E source_file.c
-E,只执行到预编译。直接输出预编译结果。
gcc -S source_file.c
-S,只执行到源代码到汇编代码的转换,输出汇编代码。
gcc -c source_file.c
-c,只执行到编译,输出目标文件。
gcc (-E/S/c/) source_file.c -o output_filename
-o, 指定输出文件名,可以配合以上三种标签使用。
-o 参数可以被省略。这种情况下编译器将使用以下默认名称输出:
-E:预编译结果将被输出到标准输出端口(通常是显示器)
-S:生成名为source_file.s的汇编代码
-c:生成名为source_file.o的目标文件。
无标签情况:生成名为a.out的可执行文件。
gcc -g source_file.c
-g,生成供调试用的可执行文件,可以在gdb中运行。由于文件中包含了调试信息因此运行效率很低,且文件也大不少。
这里可以用strip命令重新将文件中debug信息删除。这是会发现生成的文件甚至比正常编译的输出更小了,这是因为strip把原先正常编译中的一些额外信息(如函数名之类)也删除了。用法为 strip a.out
gcc -s source_file.c
-s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。
gcc -O source_file.c
-O(大写的字母O),编译器对代码进行自动优化编译,输出效率更高的可执行文件。
-O 后面还可以跟上数字指定优化级别,如:
gcc -O2 source_file.c
数字越大,越加优化。但是通常情况下,自动的东西都不是太聪明,太大的优化级别可能会使生成的文件产生一系列的bug。一般可选择2;3会有一定风险。
gcc -Wall source_file.c
-W,在编译中开启一些额外的警告(warning)信息。-Wall,将所有的警告信息全开。
gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include
-l, 指定所使用到的函数库,本例中链接器会尝试链接名为libxxx.a的函数库。
-L,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。
-I, 指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。
6. coff这个编译选项是什么意思
COFF – 通用对象文件格式(Common Object File Format),是一种很流行的对象文件格式(注意:这里不说它是“目标”文件,是为了和编译器产生的目标文件(*.o/*.obj)相区别,因为这种格式不只用于目标文件,库文件、可执行文件也经常是这种格式)。大家可能会经常使用VC吧?它所产生的目标文件(*.obj)就是这种格式。其它的编译器,如GCC(GNU Compiler Collection)、ICL(Intel C/C++ Compiler)、VectorC,也使用这种格式的目标文件。不仅仅是C/C++,很多其它语言也使用这种格式的对象文件。统一格式的目标文件为混合语言编程带来了极大的方便。
7. gcc 的编译选项 -MD 是什么意思
MD 是一个参数.
gcc提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告:
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat
-Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration
-Wcomment -Wformat -Wmain (only for C/ObjC and unless
-ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses
-Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point
-Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1
-Wswitch -Wtrigraphs -Wuninitialized (only with -O1 and above)
-Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value
-Wunused-variable
unused-function:警告声明但是没有定义的static函数;
unused- label:声明但是未使用的标签;
unused-parameter:警告未使用的函数参数;
unused-variable:声明但 是未使用的本地变量;
unused-value:计算了但是未使用的值;
format:printf和scanf这样的函数中的格式字符 串的使用不当;
implicit-int:未指定类型;
implicit-function:函数在声明前使用;
char- subscripts:使用char类作为数组下标(因为char可能是有符号数);
missingbraces:大括号不匹配;
parentheses: 圆括号不匹配;
return-type:函数有无返回值以及返回值类型不匹配;
sequence-point:违反顺序点的代码,比如 a[i] = c[i++];
switch:switch语句缺少default或者switch使用枚举变量为索引时缺少某个变量的case;
strict- aliasing=n:使用n设置对指针变量指向的对象类型产生警告的限制程度,默认n=3;只有在-fstrict-aliasing设置的情况下有 效;
unknow-pragmas:使用未知的#pragma指令;
uninitialized:使用的变量为初始化,只在-O2时有 效;
8. 条件编译选项 什么意思
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”。(conditional compile) 条件编译语句排版时,需考虑以下三种位置: (1)条件编译语句块与函数定义体之间不存在相互嵌套(主要在(.h)文件中) ◆ 条件编译关键字语句顶格左对齐; ◆ 所含的#include语句(块) #define语句(块)甚至是被嵌套下级条件编译语句块,按照语句块嵌套的排版方式进行缩进排版 。 (2)条件编译语句块嵌套在函数体之外(主要在(.c)文件中) 这种情况下,条件编译语句块不影响函数体 ◆ 条件编译关键字语句顶格左对齐; ◆ 所含的函数体定义无需缩进,依旧按照单个函数体定义的排版方式进行。 (3)条件编译语句嵌套在函数体内 (主要在(.c)文件中) a)当条件编译语句块与被包语句所属的语句块之间没有逻辑路径交叉时,以下两种方式均可 ◆ 按照语句块嵌套方式进行缩进排版 (推荐); ◆ 条件编译语句不影响原先语句块排版,条件编译语句与所包含的关键字语句块左对齐 。 b)当条件编译语句块与被包语句所属的语句块之间存在逻辑路径交叉时 ◆ 条件编译语句顶格左对齐,其它语句按照正常顺序排版。 条件编译的形式如下所示(NNN、MMM等都是在某处已经定义为 1 或者 0 的): #if NNN statement1; #elif MMM statement2; #else statement3; #endif 条件编译指令将决定那些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。 1.#if指令 #if指令检测跟在制造另关键字后的常量表达式。如果表达式为真,则编译后面的代码,直到出现#else、#elif或#endif为止;否则就不编译。 2.#endif指令 #endif用于终止#if预处理指令。 #define DEBUG 0 main() { #if DEBUG printf("Debugging\n"); #endif printf("Running\n"); } 由于程序定义DEBUG宏代表0,所以#if条件为假,不编译后面的代码直到#endif,所以程序直接输出Running。 如果去掉#define语句,效果是一样的。 3.#ifdef和#ifndef #define DEBUG main() { #ifdef DEBUG printf("yes\n"); #endif #ifndef DEBUG printf("no\n"); #endif } #if defined等价于#ifdef; #if !defined等价于#ifndef 4.#else指令 #else指令用于某个#if指令之后,当前面的#if指令的条件不为真时,就编译#else后面的代码。#endif指令将中指上面的条件块。 #define DEBUG main() { #ifdef DEBUG printf("Debugging\n"); #else printf("Not debugging\n"); #endif printf("Running\n"); } 5.#elif指令 #elif预处理指令综合了#else和#if指令的作用。 #define TWO main() { #ifdef ONE printf("1\n"); #elif defined TWO printf("2\n"); #else printf("3\n"); #endif } 程序很好理解,最后输出结果是2。 6.其他一些标准指令 #error指令将使编译器显示一条错误信息,然后停止编译。 #line指令可以改变编译器用来指出警告和错误信息的文件号和行号。 #pragma指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息
9. 漏洞分析的内容导读
本书分为5篇,共33章。
第1篇 漏洞利用原理(初级)
第1章 基础知识
本章着重对漏洞挖掘中的一些基础知识进行介绍。首先是漏洞研究中的一些基本概念和原理;然后是对Windows平台下可执行文件的结构和内存方面的一些基础知识的介绍;最后介绍了一些漏洞分析中经常使用的软件工具。包括调试工具、反汇编工具、二进制编辑工具等。您会在后面的调试实验中反复见到这些工具的身影。在这章的最后一节,我们设计了一个非常简单的破解小实验,用于实践工具的应用,消除您对二进制的恐惧感,希望能够给您带来一些乐趣。
第2章 栈溢出原理与实践
基于栈的溢出是最基础的漏洞利用方法。本章首先用大量的示意图,深入浅出地讲述了操作系统中函数调用、系统栈操作等概念和原理;随后通过三个调试实验逐步讲解如何通过栈溢出,一步一步地劫持进程并植入可执行的机器代码。即使您没有任何汇编语言基础,从未进行过二进制级别的调试,在本章详细的实验指导下也能轻松完成实验,体会到exploit的乐趣。
第3章 开发shellcode的艺术
本章紧接第2章的讨论,比较系统地介绍了溢出发生后,如何布置缓冲区、如何定位shellcode、如何编写和调试shellcode等实际的问题。最后两小节还给出了一些编写shellcode的高级技术,供有一定汇编基础的朋友做参考。
第4章 用MetaSploit开发Exploit
MetaSploit是软件工程中的Frame Work(架构)在安全技术中的完美实现,它把模块化、继承性、封装等面向对象的特点在漏洞利用程序的开发中发挥得淋漓尽致。使用这个架构开发Exploit要比直接使用C语言写出的Exploit简单得多。本章将集中介绍如何使用这个架构进行Exploit开发。
第5章 堆溢出利用
在很长一段时间内,Windows下的堆溢出被认为是不可利用的,然而事实并非如此。本章将用精辟的论述点破堆溢出利用的原理,让您轻松领会堆溢出的精髓。此外,这章的一系列调试实验将加深您对概念和原理的理解。用通俗易懂的方式论述复杂的技术是本书始终坚持的原则。
第6章 形形色色的内存攻击技术
在了解基本的堆栈溢出后,本章将为大家展示更为高级的内存攻击技术。本章集中介绍了一些曾发表于Black Hat上的着名论文中所提出的高级利用技术,如狙击Windows异常处理机制、攻击虚函数、off by one、 Heap Spray等利用技巧。对于安全专家,了解这些技巧和手法不至于在分析漏洞时错把可以利用的漏洞误判为低风险类型;对于黑客技术爱好者,这些知识很可能成为激发技术灵感的火花。
第7章 手机里的缓冲区溢出
在PC机上的溢出攻击进行的如火如荼的时候,您是否也想了解手机平台上的缓冲区溢出问题?那就不要错过本章!本章以ARM和Windows Mobile为例,介绍手机平台上编程和调试技巧。并在最后以一个手机上的exploit me为大家揭开手机里缓冲区溢出的神秘面纱。
第8章 其他类型的软件漏洞
缓冲区溢出漏洞只是软件漏洞的一个方面,我们来看看其他一些流行的安全漏洞。如格式化串漏洞、SQL注入、XPath注入、XSS等安全漏洞产生的原因、利用技巧及防范措施。
第2篇 漏洞利用原理(高级)
第9章 Windows安全机制概述
微软在Windows XP SP2和Windows 2003之后,向操作系统中加入了许多安全机制。本章将集中讨论这些安全机制对漏洞利用的影响。
第10章 栈中的守护天使:GS
针对缓冲区溢出时覆盖函数返回地址这一特征,微软在编译程序时使用了一个很酷的安全编译选项——GS。本章将对GS编译选项的原理进行详细介绍,并介绍几种绕过GS的溢出技巧。
第11章 亡羊补牢:SafeSEH
攻击S.E.H已经成为windows平台下漏洞利用的经典手法。为了遏制日益疯狂的攻击,微软在Windows XP SP2及后续版本的操作系统中引入了着名的S.E.H校验机制SafeSEH。本章将会对这一安全机制进行详细的分析,并介绍其中的不足和绕过方法。
第12章 数据与程序的分水岭:DEP
溢出攻击的根源在于现代计算机对数据和代码没有明确区分这一先天缺陷, 而DEP这种看似釜底抽薪式的防护措施是否真的可以杜绝溢出攻击呢?答案马上揭晓。
第13章 在内存中躲猫猫:ASLR
程序加载时不再使用固定的基址加载,ASLR技术将溢出时使用的跳板在内存中隐藏了起来,没有了跳板我们如何溢出呢?本章将带领您在黑暗中寻找溢出的出口。
第14章 S.E.H终极防护:SEHOP
SafeSEH的败北,让微软推出一种更为严厉的S.E.H保护机制SEHOP。这里将为您展示这种保护机制的犀利之处。
第15章 重重保护下的堆
当堆溢出变成可能后,微软不能再无视堆中的保护机制了,让我们一览堆中的保护机制,并分析其漏洞。
第3篇 漏洞挖掘技术
第16章 漏洞挖掘技术简介
不论从工程上讲还是从学术上讲,漏洞挖掘都是一个相当前沿的领域。本章将从动态测试和静态审计两方面对漏洞挖掘技术的基础知识进行简单的介绍。
第17章 文件类型漏洞挖掘与Smart Fuzz
文件类型的漏洞层出不穷,持续威胁着互联网的安全。如何系统的测试文件格式,产生精确有效的畸形测试用例用以发掘文件解析器的安全漏洞,并不是一件容易的事情。本章将从理论和实践两个方面向您讲述灰盒测试技术。
第18章 FTP的漏洞挖掘
本章将简述FTP协议,并手把手地带领您完成几个初级的漏洞测试案例,让您亲身体会下真实的漏洞长什么模样。
第19章 E-mail的漏洞挖掘
E-mail系统涉及的安全问题不光只有缓冲区溢出,在本章的挖掘案例中,您会发现除了工具和常用方法外,威力最为强大的武器还是您的大脑。Evil thinking是安全测试中最重要的思维方式之一。
第20章 ActiveX控件的漏洞挖掘
控件类漏洞曾经是大量网马的栖身之地。本章将结合若干个曾经的0 day向您比较系统的介绍这类漏洞的测试、调试的相关工具和方法。
第4篇 操作系统内核安全
第21章 探索ring0
研究内核漏洞,需要首先掌握一些内核基础知识,例如内核驱动程序的开发、编译、运行和调试,内核中重要的数据结构等,本章将为读者开启探索ring0之门,逐步掌握一些内核基础知识。
第22章 内核漏洞利用技术
本章将带领读者从一个简单的内核漏洞程序exploitme.sys的编写开始,展示内核漏洞利用的思路、方法,以及利用程序和Ring0 Shellcode的编写和设计。
第23章 FUZZ驱动程序
掌握了内核漏洞的原理和利用方法,本章将进入内核漏洞挖掘阶段,学习较为高级的内核漏洞挖掘技术,最后实践该漏洞挖掘技术,分析挖掘出内核漏洞。
第24章 内核漏洞案例分析
本章对几种典型的内核漏洞,用几个真实的内核漏洞案例来详细分析,分析漏洞造成的具体原因和细节,并构造漏洞成功利用的方法。
第5篇 漏洞分析案例
第25章 漏洞分析技术概述
本章纵览了漏洞分析与调试的思路,并介绍了一些辅助漏洞调试分析的高级逆向工具。
第26章 RPC入侵:MS06-040 与MS08-067
由于可以做到主动式远程入侵,RPC级别的漏洞被誉为漏洞中的王者,此类漏洞也极其稀有,每一个都有一段曲折的故事。值得一提的是最近的两个RPC系统漏洞竟然出自同一个函数。本章将对这个缝来补去没有修好的函数进行详细分析,让您从攻防两方面深刻理解漏洞的起因和修复策略的重要性。
第27章 MS06-055分析:实战Heap Spray
通过网页“挂马”是近年来攻击者惯用的手法。本章通过分析微软IE浏览器中真实的缓冲区溢出漏洞,告诉您为什么不能随便点击来历不明的URL链接,并在实战中为大家演示Heap Spray技术。
第28章 MS09-032分析:一个“&”引发的血案
一个视频网页的背后可能是一只凶狠的木马,这就是着名的Microsoft DirectShow MPEG-2视频ActiveX控件远程代码执行漏洞。本章将为您分析该漏洞产生的原因及分析技巧。
第29章 Yahoo!Messenger栈溢出漏洞
在波涛汹涌的溢出大潮中Yahoo也没能幸免,作为国外非常流行的Yahoo!Messenger也存在过非常严重的漏洞。本章将重现当时的场景,并分析漏洞产生的原因。
第30章 CVE-2009-0927:PDF中的JS
您可能不会随便运行一个可执行文件,但是您会想到别人发过来的PDF文档中也有可能隐藏着一些东西吗?本章将以PDF文档为例,带您领略文件类型溢出漏洞的风采。
第31章 坝之蚁穴:超长URL溢出漏洞
安全软件不一定安全,即便是这款保护未成年人健康上网的计算机终端过滤软件,也有可能成为黑客攻击的窗口。本章将介绍绿坝软件中一个已经被修复了的安全漏洞。
第32章 暴风影音M3U文件解析漏洞
晚上回家后用暴风影音打开别人发过来的M3U列表文件,在你陶醉于其内容之时,一只精干的小马已悄然在后台运行。想要了解这只小马是如何进入你的电脑的?请阅读本章。
第33章 LNK快捷方式文件漏洞
是否我不去运行任何可疑文件,不去打开陌生的网址就安全了呢?答案是否定。LNK快捷方式漏洞无需打开文件,只要浏览恶意文件,所在文件夹就会中毒,俗称“看一眼就挂”。本章将带您分析这一神奇的漏洞。
Failwest
10. visual C++ 的优化选项分别都是什么意思
Od:编译器不做优化,通常debug的使用这个编译选项
O1:代码最小,使用这个选项编译出来的二进制文件是最小的,但是可能会牺牲一些执行效率
O2:编译出来的代码执行速度最快,但是大小会比O1大(release默认)
Ox:对程序进行最大优化,可能会牺牲一些兼容性问题等,对执行速度和二进制文件大小都尽可能优化