1.调试器是什么
2.Windows C++开发环境配置:VSCODE + MinGW + CMake
3.二十年重回首——CIH病毒源码分析
4.RUST语言mingw-64开发环境安装和设置
5.Windows系统中vscode的c/c++开发环境配置(一):下载和安装
6.针对Office软件的渗透攻击实例MS10-087安全漏洞分析学习(index: metasploit)
调试器是什么
调试器,这个开发环境的关键组件,扮演着程序调试的主角。它使开发者能够细致入微地查看和控制代码的运行,通过单步执行和变量检查来定位问题。调试器分为源代码级和二进制两种类型,电子合同软件源码对于有经验的开发者,可能并不频繁地依赖,但对于初学者来说,它仍是必不可少的辅助工具。Visual C++的调试器虽然长久以来有所改进,但稳定性仍有提升空间。它通过实时监控程序运行,帮助程序员快速定位错误,提供了暂停点设置和单步控制的功能。调试工具栏上的元素,如参数变化和窗口扩展,帮助开发者理解对象的内部结构。当进行程序调试时,选择编译器并确保包含调试信息是首要步骤。目前,Ollydbg作为一款备受推崇的调试工具,因其对SEH异常处理、VXD和MMX等指令集的出色支持,成为了众多开发者的首选。
Windows C++开发环境配置:VSCODE + MinGW + CMake
一、VSCODE的下载、安装与卸载
1.1 前往VSCODE官方网站下载installer。
1.2 执行installer,完成安装过程,注意确保安装路径全英文且无空格,并确保将VSCODE添加至Path环境变量中。
二、MinGW的下载与安装
2.1 访问MinGW-W官网,选择x__win-seh版本的Windows资源包进行下载。
2.2 解压缩资源包,并将bin目录路径添加至系统环境变量Path中。浩森源码php
2.3 通过命令行验证MinGW安装情况,输入`g++ --version`和`gdb --version`。
三、CMake的下载与安装
3.1 访问CMake官网,下载windos x版本的installer,完成安装并确保安装路径全英文无空格,添加至系统Path中。
3.2 在VSCODE中安装CMake和CMake Tools插件,以方便使用。
四、配置与运行流程
4.1 在VSCODE中实现源码编辑。
4.2 编写CMakeLists.txt文件,使用命令`cmake quick start`生成基础模板,并根据需求修改模板内容。
4.3 关键语法包括:使用`project()`定义项目名称,`include()`添加自定义库头文件路径,`add_library()`与`add_executable()`分别用于创建库与可执行文件,`target_link_libraries()`用于链接库文件。
参考资源:
VScode + MinGW-w 编程环境搭建(C/C++)超详细
Windows下CMake安装教程_window 安装cmake_好好学图算的博客-CSDN博客
在Windows端使用VSCode和CMake快速构建C++项目 - 橘崽崽啊 - 博客园
二十年重回首——CIH病毒源码分析
CIH病毒源码分析
随着双十一的临近,我在考虑为自己的电脑添置一块NVME协议的固态硬盘。然而,我发现自己老款主板并不支持NVME协议。在探索解决方案时,我偶然回想起了CIH病毒,一款曾引起巨大破坏的古老病毒。出于好奇,我决定深入分析CIH源码,回顾那段历史,并分享分析过程与心得。
CIH源码在GitHub上能找到,版本1.4。源码的编写者习惯良好,代码中包含了功能更新的时间和具体细节。时间线如下:
1.0版于年4月日完成,基本功能实现,代码长度字节。蚂蚁帮扶系统源码
1.1版于5月日完成,增加了操作系统判断,若为WinNT则不执行病毒,长度字节。
1.2版于5月日,加入删除BIOS和破坏硬盘功能,长度字节。
1.3版于5月日,修复了感染WinZIP自解压文件的错误,长度字节。
1.4版于5月日,彻底修复错误,长度字节。
CIH病毒于年7月日在美国大面积传播,8月日全球蔓延,引发公众恐慌。最终,病毒作者陈盈豪公开道歉,提供了解毒程序和防毒软件,病毒逐渐被控制。
源码的第一部分是PE文件头,用于符合PE文件格式,确保Windows识别和执行。接下来,病毒开始运行,通过修改SEH(Structured Exception Handling)来识别操作系统类型。如果为WinNT或之后版本,病毒将自行产生异常并停止运行。
病毒通过修改中断描述符表,获得Ring0权限。然而,在WinNT操作系统中,这种方法已失效。因此,修改SEH的目的是判断当前操作系统,以避免在非Win9x系统上感染。起名公司网站源码
病毒在Win9x系统中,通过修改中断描述符表,将异常处理函数指向病毒自定义的MyExceptionHook。病毒利用此函数安装系统调用钩子,当执行文件操作时,会运行到病毒代码中。
病毒在MyExceptionHook中,通过dr0寄存器记录病毒安装状态,分配系统内存,并将病毒代码复制到内存中。之后,病毒安装钩子,当有文件读写调用时,会执行病毒代码。
当系统调用参数为关闭文件时,病毒进行时间判断,直到每月日,统一开始破坏BIOS和硬盘。破坏BIOS的方法包括映射BIOS内容、设置BIOS可写性。硬盘破坏则通过VXD驱动调用命令。
综上所述,CIH病毒利用了Win9x系统的漏洞,通过修改SEH和中断描述符表进入内核,安装系统调用钩子,感染文件并在特定时间执行破坏操作。然而,其在WinNT及后续系统上的感染能力已失效。尽管如此,CIH病毒的源码和分析过程对了解历史和安全漏洞仍具有重要价值。
RUST语言mingw-开发环境安装和设置
在Windows环境下,想要为RUST语言创建mingw-开发环境,首先需要访问rust官方网站下载rustup工具。rustup是RUST环境设置的关键,它会自动管理安装过程,包括cargo和相关文档等。封面网站php源码 下载后,当你启动rustup时,可能会遇到需要链接器和Windows API库的提示。这里有三种解决方案:通过Visual Studio Community安装(免费,适用于个人、学术和开源项目)
手动安装必要的预设条件(适合企业级和高级用户)
不安装预设条件(如果你的目标是GNU ABI)
对于Windows开发,可能需要安装C++ Build Tools,这通常与Visual Studio捆绑。然而,Visual Studio安装包很大,下载速度不稳定。对于配置较低或不希望下载大量文件的用户,可以选择不安装预设条件,转而使用mingw-w,它是一个GCC的Windows版本,源码可以从sourceforge.net下载大约MB的x_-win-seh版本。 安装mingw-后,需要在系统环境变量中添加其bin目录。具体操作是,打开“此电脑”属性,进入高级系统设置,修改PATH变量。输入mingw安装路径,如C:\mingw\bin,然后确认。 验证安装成功的方法是在命令提示符中输入gcc -v。如果看到输出,说明mingw-已安装。接下来,在rustup中选择自定义安装(2),设置默认主机三联(x_-pc-windows-gnu),工具链选择稳定版,设置默认配置,并允许修改PATH。 等待rustup完成下载和安装,最后在命令提示符中输入rustc -V,确认RUST已成功安装。接下来安装VSCode,作为代码编辑器。安装完成后,创建一个新的RUST项目并在VSCode中运行它,可能需要下载并安装codeLLDB插件以支持调试功能。Windows系统中vscode的c/c++开发环境配置(一):下载和安装
在Windows系统中,Visual Studio Code(vscode)作为一款轻量级源代码编辑器,为C/C++开发提供了一个小而强大的跨平台环境。要开始开发,首先需要下载和安装vscode及其对应的GCC编译器MinGW-w。本文主要介绍了如何下载不同版本的MinGW-w,以及如何配置其环境变量以确保系统能找到编译器。
下载vscode,访问官网Visual Studio Code - Code Editing. Redefined,根据你的平台选择安装包。对于C/C++开发,还需安装MinGW-w,选择合适的版本(比如带seh的win版本,适合Windows平台)。下载后,解压到不含中文的文件夹,并记录mingw/bin目录的路径。
接着,配置环境变量:进入“环境变量”设置,添加mingw/bin路径到Path,然后通过cmd验证g++版本。路径配置成功后,系统将能够通过path找到并执行可执行文件。
虽然基础配置已完成,但为了实现一键编译和执行C/C++代码,还需要安装相关插件和配置vscode的调试功能,这部分内容将在后续文章中详细介绍。
针对Office软件的渗透攻击实例MS-安全漏洞分析学习(index: metasploit)
针对Office软件的渗透攻击实例——MS-安全漏洞分析与学习
在Metasploit中搜索“ms_”,加载该模块并显示基本信息。该漏洞的原因是Office程序在处理特殊构造的RTF文件时,相应解析程序在处理名为pFragments的参数时存在栈缓冲区溢出错误,导致异常发生。RTF格式文件属于Word应用程序所处理的文件格式,一个后缀名为rtf的文件在更改后不影响其使用。Office 默认启用了DEP,同时存在ASLR机制,这使得对Office +Windows 7中该漏洞的利用变得更加困难,但并非不可能。利用MS-漏洞的实验并未以Win7为目标。
设置渗透模块的攻击载荷为运行一个计算器,以便于观察。在Metasploit中使用命令“use exploit/windows/fileformat/ms__rtf_pfragments_bof”加载模块,设置攻击载荷为“set payload windows/exec”并设置命令为“set CMD calc.exe”。设置文件名为“ms.rtf”并执行“exploit”。将生成的文件复制给目标机器,双击打开。
深入研究MS-漏洞的渗透攻击模块源代码。该模块范围从到,是一个典型的利用SEH(Structured Exception Handling)的方式,包含Ret和偏移量。变量sploit被填充到名为pFragments的属性参数中,导致缓冲区溢出。逆向分析该漏洞的机理,打开OD(OllyDbg)工具,打开Word进程(winword.exe)并设置断点,观察具体执行过程。
启动IDA Pro,加载mso.dll文件进行反汇编分析。在函数入口处设置断点,运行Word进程并打开测试文件。在函数执行过程中,观察到的数据复制指令会导致栈溢出。利用IDA Pro的图形反汇编视图查看关键信息,发现函数主要功能是复制字符串,涉及三个参数:数据源位置、复制次数和数据源寻址。
通过研究函数的反汇编代码,发现程序没有对输入参数进行检查或限制,这是产生漏洞的根本原因。修改mso.dll文件设置软件断点,观察测试文件利用SEH的过程。在经过超长的数据复制后,栈底附近的SEH链被修改。运行程序时,由于断点的设置或调试过程中的问题,导致报错并跳转到不可达地址。
文件格式分析部分详细介绍了RTF文档格式,包括文档头、图形相关信息、绘图属性、属性名和属性值等。分析了RTF漏洞的原因:在进行复制时未对复制次数进行检测,导致栈溢出。通过源代码展示了RTF解析pFragments属性的部分过程,揭示了复制次数控制的实现方式以及漏洞产生的原理。
基于Metasploit的POC(Proof of Concept)展示了漏洞利用原理,包括栈溢出导致SEH机制触发、异常处理和shellcode执行的过程。具体过程涉及栈溢出时将基本信息压入栈、后续压入直接跳转和执行shellcode的地址。通过构建RTF文档,设置了恰当的pFragments属性值,填充shellcode、directe和Ret等关键信息,最终实现攻击目的。
文件的基本格式构造强调了在构造RTF文档时,正确设置pFragments属性的重要性。构造过程涉及到属性值的前部填充、复制次数、shellcode填充、直接跳转和shellcode执行的地址构建。通过实验和分析,揭示了如何利用MS-漏洞进行渗透攻击。
用CLion和CMake搭建DolphinDB插件开发环境
本文详细说明了如何在Windows 系统上,使用CLion和CMake搭建DolphinDB插件开发环境,并结合实例展示了如何使用CLion调试插件代码,帮助初学者快速入门DolphinDB插件开发。使用CLion能实现对DolphinDB节点进程的附加调试,利用图形界面进行操作,相比命令行调试工具gdb,更加直观友好,极大地降低了开发者调试DolphinDB插件的难度。环境准备
1.1 安装和配置MinGW 安装时选择包含C++多线程特性的x_-posix-seh版本的MinGW,以确保与DolphinDB server保持一致。详细安装步骤请参考《windows下安装mingw-w - tnnmigga - 博客园》。避坑提示:避免下载安装版本为x_-posix-sjlj的MinGW,因为使用该版本可能导致加载插件时出现“The specified module could not be found”的错误。 1.2 安装CMAKE 从cmake.org下载并双击安装,记得勾选“Add CMake to the system PATH for all users”以自动配置环境变量。 1.3 CLion安装 下载并双击安装CLion,按指示进行即可。若需要激活软件,可输入激活码或开始试用。CLion为付费软件,教师或学生可申请免费教育许可证。 1.4 安装Git 从Git官网下载并安装Git,确保CMD中运行git --version后能够显示Git版本信息。 1.5 部署DolphinDB集群和客户端软件 如本机未部署DolphinDB节点或GUI客户端,建议参照《单节点部署教程》部署和启动一个单节点,并下载并运行客户端软件。下载插件代码
从dolphindb/DolphinDBPlugin中下载插件代码。确保分支版本与DolphinDB Server版本匹配,如Server为1.版本,插件应使用release分支。编写插件
案例需求为导入二进制格式的level2股票行情文件至数据库中,根据文件类型(快照、逐笔成交、逐笔委托)分别导入不同表。文件格式包含快照、逐笔成交、逐笔委托三种类型数据。编写插件格式文件
插件函数分为运算符函数和系统函数,分别用于特定参数数量和操作。编写插件函数原型并描述其与DolphinDB函数的映射关系。用CLion创建工程
创建工程目录结构,导入格式文件与源代码,并配置CLion以生成工程。删除自动生成的头文件,添加export文件,以实现动态库函数的导出。修改CMake文件
编写CMakeList.txt文件,配置编译规则。通过已有插件的CMakeList.txt文件作为参考,确保构建过程正确。调试代码
使用CLion附加进程并设置断点,通过图形界面进行单步调试,查看函数调用堆栈和变量值,确保代码逻辑正确。说明
本文适用于Windows 系统环境。在Linux环境下,建议安装GNOME或KDE桌面环境,CLion在此环境下提供与Windows类似的调试体验。对于更详细的插件代码编写指南,推荐查阅《DolphinDB插件开发教程》和《DolphinDB插件开发深度解析》。 完整工程代码已提供链接和提取码,方便下载使用。