![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件分析
CharlesPrince
程序是所有情况的预测和达到目的的逻辑
展开
-
【转】开源代码审计工具备忘
开源和非商业公司2.3.1.1 .NET (C#, VB.NET and all .NET compatible languages)• Reflector.CodeMetrics — (an add-in for the essential Reflector) • CCMetrics • CRPlugin (plugin for DxCore) • FxCop — Free原创 2013-04-07 09:14:28 · 3709 阅读 · 0 评论 -
使NT支持长路径名的参考代码
在某些情况下,会有使用长路径(大于MAX_PATH/260字符)的需求,如网络文件管理之类的,WindowsNT之后的NTFS文件系统其实是支持这样的操作的,但需求毕竟比较特殊,而且Explorer资源浏览器都不支持它,所以很少被认识到. 这里我写了一个子目递归调用函数,原型:INT32 LongPathFileFind(LPWSTR lpPath, //被搜索路径原创 2009-02-11 18:57:00 · 1105 阅读 · 0 评论 -
写一段小型溢出代码(译自:Writing Small Shellcode)
背景: 这篇文章描述了一次以尽可能小体积来实现一个WIN32 ShellCode的尝试,来完成一个通用的且有很多特性受限制的任务,试验的最终结果是一个绑定某端口的,没有空字符的(/0),大小为191字节的服务器端ShellCode,同时过程也描述了写一个小型的ShellCode的通用方法。 体积对于ShellCode来说是非常重要的,因为当对已经编译好的二进制码来说,Shell翻译 2009-01-08 17:30:00 · 2451 阅读 · 0 评论 -
软件开发中的自动化技术
实际的工作中,很多时候都需要在项目编译完成后做一些工作,或是在编译前做一些准备工作,它们是重复性的,如果手动操作是一件很麻烦的事情,VS中提供了生成前/生成后执行命令,使用脚本就可以完成大部分需要的操作.例子(生成后自动将头文件和库文件放置在合适的位置)whenbuilded.batcopy /y ..*.h .D:/MyLib/Includecopy /y ../Debug/*.lib原创 2008-11-05 13:37:00 · 1316 阅读 · 0 评论 -
Linux boot flow
Linux BootFlow: BIOS Post Setup->MBR(GRUB/LILO)->Kernel->Kernel self-extract->Kernel StartKernel Start:Create the process that ID is 1->The first process create other kernel threads->The kernel th原创 2008-12-10 17:16:00 · 1182 阅读 · 0 评论 -
使用OutputDebugString输出调试信息,使用DebugWindow来捕获它
OutputDebugString API函数包括MultiChar和Unicode两种版本:OutputDebugStringA和OutputDebugStringW,原型:如下:void__stdcallOutputDebugStringA( const char* lpOutputString );void__stdcallOutputDebugStringW( co原创 2008-12-15 16:35:00 · 9312 阅读 · 0 评论 -
fs:[0]到底表示什么?fs段寄存器在WINDOWS系统中的作用
fs:[0]到底表示什么?TEB,PEB,TIB,PCRB结构的表示。fs段寄存器在WINDOWS系统中的作用原创 2011-04-29 15:13:00 · 17500 阅读 · 1 评论 -
ARP协议,ARP攻击的原理,网络执法官的具体实现
ARP协议解析:ARP协议的格式:typedef struct _ARP_HDR{ USHORT HdType; USHORT ProtType; BYTE HdSize; BYTE ProtSize; USHORT Opcode; BYTE SenderMacAddr[ 6 ]; ULONG SenderIPAddr; BYTE DstMacAddr[ 6 ]; ULONG DstIPAddr; } ARP_HDR, *PARP_HDR; 其中:HdType 表示数据链路层的类型。(一般会原创 2011-02-09 13:53:00 · 2966 阅读 · 0 评论 -
TDI FILTER 网络过滤驱动完全解析
WDM TDI Filter驱动的组织架构原创 2010-10-06 22:57:00 · 12649 阅读 · 3 评论 -
VC内联汇编实现strcpy+汇编性能分析
这是VC编译器生成的代码:char *__memsetc (dst, value, count)char *dst;char value;unsigned int count;{//push ebp //mov ebp,esp //sub esp,44h //push ebx //push esi //push edi //// char *start = dst;//mov eax,dword原创 2010-06-21 15:28:00 · 2181 阅读 · 1 评论 -
VS2005的并行计算功能支持
<br />VS2005中的VC是支持OPENMP2.0协议的,使用OPENMP2.0可以让编译器为你的多核CPU提供并行程序编译支持。<br />一个例子:<br />#include <omp.h><br />#include <stdio.h><br />int main() {<br />#pragma omp parallel<br />printf("Hello from thread %d, nthreads %d/n", omp_get_thread_num(), omp_get_num_t原创 2010-06-27 09:37:00 · 1625 阅读 · 0 评论 -
Windows蓝屏代码含意速查表
代码 含意 0 0x0000 作业完成。 1 0x0001 不正确的函数。 2 0x0002 系统找不到指定的档案。 3 0x0003 系统找不到指定的路径。 4 0x0004 系统无法开启档案。 5 0x0005 拒绝存取。 6 0x0006 无效的代码。 7 0x0007 储存体控制区块已毁。 8 0x0008 储存体空间不足,无法处理这个指令。原创 2009-06-24 15:05:00 · 1626 阅读 · 0 评论 -
基本INF文件格式
[Version]Signature="$Windows NT$" ;通知用户此驱动使用在什么平台Class=Sample ;驱动的类型ClassGUID={C3077FCD-AE7F-3D86-9C1A-46A8181923E} ;驱动类型的GUIDProvider=%MFGNAME% ;开发商名称CatalogFile=basic.bat DriverVer=01/23/20原创 2009-06-16 15:30:00 · 3512 阅读 · 0 评论 -
软件的创新思想与他人思想的整合
当今软件知识到处都是,一问题在互联网上会搜到一大把的相关信息,软件开发越发的变为了对别人思想和接口的调用和纯粹的拷贝. 这样的工作方式需要你的两种能力:1.对计算机语言知识的基本掌握,2.计算机的基本应用能力.门槛很低,软件开发变成了计算机语言的代码组合过程. 这样的开发可能也可以生产出软件产品,但有什么问题呢?1.首先就是不会有专业知识的理解,你仅仅只是知道一个接口而原创 2009-04-23 15:22:00 · 1068 阅读 · 0 评论 -
MATROSKA 文件格式
MATROSKA 文件格式1.EBML (Extensible Binary Meta Language):EBML语言使用不定长整数,这种方式相对于固定长度的32位/64位字长的整数值更节约空间.放置的位置也不受字节对齐约束..这种长度编码方式来自于UTF-8编码规范. 不定长度的无符号整数值(“vint”):长度的计算方法:长度 = 1 + 整数前缀0比特的个数.使原创 2009-03-07 23:47:00 · 4891 阅读 · 0 评论 -
wchar_t类型的实质
VC++编译器中包括一种本机类型,用来支持长字符串,它就是wchar_t,它所占用的内存长度为2个字节,同时VC++编译器2个字节长度的类型有short, unsigned short。(参考链接:http://msdn.microsoft.com/zh-cn/library/dh8che7s(VS.80).aspx)它们相互之间其实是可以进行类型转换而不会发生内存定位错误的,如: (在打原创 2008-09-03 15:31:00 · 3142 阅读 · 0 评论 -
#pragma directive
一:#pragma warning指令该指令允许有选择性的修改编译器的警告消息的行为指令格式如下:#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]#pragma warning( push[ ,n ] )#pragma warning( po转载 2008-09-03 10:08:00 · 1167 阅读 · 0 评论 -
使用WinDbg调试程序
什么是WinDBG? WinDbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。由于大部分程序员不需要做Kernel模式调试, 我在这篇文章中不会介绍Kernel模式调试。Kernel模式调试对学习Windows核心极有帮助。如果你对此感兴趣,可以阅读Inside Windows 2000和Windbg所带的帮助文件。 这篇文章得主转载 2008-07-29 01:41:00 · 13934 阅读 · 1 评论 -
C++下多平台支持方法
C++实现多平台的方法:1.使用宏条件判断:如:#ifdef WIN32 //The fucntion or type on windows platform#else //The function or type on linux platform#endif2.使用一个纯虚类来定义框架,使用实现类来完成不同平台的实现如:class CBaseFunction{ virtual int原创 2008-03-12 15:49:00 · 1469 阅读 · 0 评论 -
使用宏来实现类似于template的功能
原创 2008-02-19 15:00:00 · 963 阅读 · 0 评论 -
VC使用CRT调试功能来检测内存泄漏
C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的转载 2008-02-23 13:38:00 · 1633 阅读 · 0 评论 -
谁都想拥有完美的界面,它可以给你一些启示
美化你的应用程序的外观界面 作者:桂林电子工业学院990312 隋振国 下载本文源程序1(对话框版本)下载本文源程序2(SDI版本) 很多编程爱好者都有这样的经历,自己写的程序非常漂亮,但是在Windows平台下开发的程序却总是逃不出Windows默认风格的约束。标题栏、工具栏,一成不变的风格使得再有创意的作品也黯然失色。下面我们给对话框应用程序进行一次外科手术,旨于向各位读转载 2007-01-27 14:42:00 · 1119 阅读 · 0 评论 -
关于select和WSASelect
与socket有关的一些函数介绍1、读取当前错误值:每次发生错误时,如果要对具体问题进行处理,那么就应该调用这个函数取得错误代码。 int WSAGetLastError(void ); #define h_errno WSAGetLastError()错误值请自己阅读Winsock2.h。2、将主机的unsigned long值转换为网络字节顺序(32位):为转载 2007-01-23 12:54:00 · 6839 阅读 · 1 评论 -
About the address of variable
1. 以不同的类型访问变量这个话题有点像C语言中的数据类型强制转换,C语言中的类型转换指的是把一个变量的内容转换成另外一种类型,转换过程中,数据的内容已经发生了变化,如把浮点数转换成整数后,小数点后的内容就丢失了。在MASM中以不同的类型访问不会对变量造成影响。举一个简单的例子,先以db方式定义一个缓冲区:szBuffer db 1024 dup (?)然后从其他地方取得了数据,但转载 2007-01-24 14:23:00 · 939 阅读 · 0 评论 -
逆向RING0工程
接触RING 0之前,以为得学很多东西,一大堆驱动开发的知识。不过后来想了想,驱动壳等其他不直接访问硬件的程序为了兼容性,不可能真的直接访问硬件,也就是那些是基于硬件抽象层之上的,而且大部分使用的还是系统提供的API(RING0下使用的API称为NATIVE API)。事情一下子变简单了,除非你想通过逆向硬件厂商驱动,自己编写优化硬件或者超频程序。虽然这是纯静态分析,但是我希望通过分析整个驱动,你转载 2007-01-24 10:50:00 · 1407 阅读 · 0 评论 -
WINDOWS2000/XP无驱动得到RING0权限
大家知道,Windows NT/2000为实现其可靠性,严格将系统划分为内核模式与用户模 式,在i386系统中分别对应CPU的Ring0与Ring3级别。Ring0下,可以执行特权级指令, 对任何I/O设备都有访问权等等。要实现从用户态进入核心态,即从Ring 3进入Ring 0必 须借助CPU的某种门机制,如中断门、调用门等。而Windows NT/2000提供用户态执行系 统服务(Ring 0转载 2007-01-24 10:29:00 · 2882 阅读 · 1 评论 -
IO模式之WSAEventSelect模式
摘自www.coolsir.org/boxcounter/index.php?id=50看〈windows网络编程〉时,自己写的最简单的SERVER程序,写的过程中调整了自己对WSAEventSelect模式不少错误理解。 #include #include #include using namespace std; void main() { WORD wVersionReques转载 2007-01-23 12:30:00 · 1912 阅读 · 0 评论 -
VC++与Dephi的区别
unit interfaceuses;The component used by the unit Example:ActiveX{在这里加入的unit,在之后的代码中就可以直接使用它的成员,不需要unit加.限定成员位置,和VC的using很相像}type TypeName = class(BaseTypeName) procedure functionName(param原创 2008-03-15 11:32:00 · 1896 阅读 · 0 评论 -
Windows系统下的线程和进程
1. 进程与线程有那些区别和联系? 每个进程至少需要一个线程。 进程由两部分构成:进程内核对象,地址空间。线程也由两部分组成:线程内核对象,操作系统用它来对线程实施管理。线程堆栈,用于维护线程在执行代码时需要的所有函数参数和局部变量。 进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整转载 2008-07-24 18:15:00 · 1611 阅读 · 0 评论 -
敏捷(agile)开发与极限编程(XP)(转载)
在按照我的理解方式审查了软件开发的生命周期后,我得出一个结论:实际上满足工程设计标准的惟一软件文档,就是源代码清单。-- Jack Reeves简介 2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷联盟。敏捷开发过程的方法很多,主要有:SCRUM,Crystal,特征驱动软件开发转载 2008-07-22 09:55:00 · 2059 阅读 · 0 评论 -
Windows下的基础头文件冲突
Window编程时,一般都要引用Windows.h头文件,其实这个文件也只是引用了一些其它的Windows的基础的头文件,提供了API级别的Windows系统各个方面的编程支持。 但是,winsock.h和winsock2.h头文件这两个对Windows网络编程提供支持的头文件之间没有提供头文件定义的重引用支持,也就是说如果你同时引用了两个头文件的话就会在编译时提示出类型重定义冲突:c:/Prog原创 2008-07-09 17:03:00 · 3569 阅读 · 0 评论 -
使用C语言来写一个动态图形程序(像万花筒)(参考了网络上的名为细胞游戏的文章)
这个程序生成的图形很好看(以我的眼光),希望可以给你带来一些灵感:这个程序的 源码如下:在Win-tc下调试通过。#include "stdio.h"#include "conio.h"#include "graphics.h"main(){ int orgData[100][100]; //这是初始值存放区 int resData[100][100]; //这是对初始值进原创 2007-12-29 17:46:00 · 14199 阅读 · 4 评论 -
使用XP的界面
在XP中做开发,并不是你直接开发出的程序就是使用XP的界面,你必须做以下步骤来通知XP使用系统界面:1.新建一个XML文件,它通知XP使用系统界面,内容: xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> processorArchitecture="x86" version="5.1.原创 2008-03-20 19:05:00 · 890 阅读 · 0 评论 -
VC中的堆,欢乐和痛苦
堆:欢乐和痛苦Murali R. KrishnanMicrosoft Corporation1999 年 2 月摘要: 讨论常见的堆性能问题以及如何防范它们。(共 9 页)前言您是否是动态分配的 C/C++ 对象忠实且幸运的用户?您是否在模块间的往返通信中频繁地使用了“自动化”?您的程 序是否因堆分配而运行起来很慢?不仅仅您遇到这样的问题。几乎所有项目迟早都会遇到 堆问题。大家转载 2006-12-15 16:27:00 · 1355 阅读 · 0 评论