只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2013-03-29 20:41 bamb00 阅读(391) 评论(4) 推荐(1) 编辑
摘要: Windows在加载DLL的时候,需要一个入口函数,就如同控制台或DOS程序需要main函数、WIN32程序需要WinMain函数一样。在前面的例子中,DLL并没有提供DllMain函数,应用工程也能成功引用DLL,这是因为Windows在找不到DllMain的时候,系统会从其它运行库中引入一个不做任何操作的缺省DllMain函数版本,并不意味着DLL可以放弃DllMain函数。 根据编写规范,Windows必须查找并执行DLL里的DllMain函数作为加载DLL的依据,它使得DLL得以保留在内存里。这个函数并不属于导出函数,而是DLL的内部函数。这意味着不能直接在应用工程中引用DllMai. 阅读全文
posted @ 2011-12-23 21:24 bamb00 阅读(1319) 评论(0) 推荐(0) 编辑
摘要: 1 SHELLEXECUTEINFO ShellInfo; 2 3 4 memset(&ShellInfo, 0, sizeof(ShellInfo)); 5 6 ShellInfo.cbSize = sizeof(ShellInfo); 7 8 ShellInfo.hwnd = NULL; 9 10 ShellInfo.lpVerb = _T("open");11 12 ShellInfo.lpFile = szFilePath;13 14 ShellInfo.nShow = SW_SH... 阅读全文
posted @ 2011-12-05 20:14 bamb00 阅读(1183) 评论(0) 推荐(0) 编辑
摘要: 下面是一段win32 console程序(Debug版)的反汇编代码,很程式化的东西。本文不讨论这段码的具体作用,而是来学习下stos指令。stos((store into String),意思是把eax的内容拷贝到目的地址。用法:stos dst,dst是一个目的地址,例如:stos dword ptr es:[edi]。dword ptr前缀告诉stos,一次拷贝双字(32个字节)的数据到目的地址。为什么一次非要拷贝双字呢?这和eax寄存器有关,到底神马关系,慢慢道来。。执行stos之前必须往eax(32为寄存器)放入要拷贝的数据。上图中,eax的内容是cccccccc,不用说都明白int 阅读全文
posted @ 2011-10-06 10:07 bamb00 阅读(1317) 评论(0) 推荐(1) 编辑
摘要: 一、编译NT式驱动1> 建立一个win32应用程序工程。2> 修改工程属性。Project --àSetting-àC/C++中的Project Options内容替换成/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c3> 修改Link选项卡,将原来的Project Options内容替换成ntoskrnl. 阅读全文
posted @ 2011-08-16 11:33 bamb00 阅读(1027) 评论(0) 推荐(0) 编辑
摘要: C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。4种类型转换的格式,如:TYPE B = static_cast(TYPE)(a)。const_cast去掉类型的const或volat 阅读全文
posted @ 2011-07-20 18:38 bamb00 阅读(47155) 评论(0) 推荐(12) 编辑
摘要: 1、概述Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关。好了,我们先看下最原始的多模式匹配算法:主串T,n=strlen(T)。模式串Pi mi = strlen(pi) for(i=0;i<n-MIN(m);++i) for(j=0;j<k;++j) if(n-mk<=n-i &&memcmp(T[i],Pk,mk)==0) printf(“match\n”) 阅读全文
posted @ 2011-06-28 16:16 bamb00 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 1.先序遍历非递归算法#define maxsize 100typedef struct{Bitree Elem[maxsize];int top;}SqStack;void PreOrderUnrec(Bitree t){SqStack s;StackInit(s);p=t;while (p!=null || !StackEmpty(s)){while (p!=null) //遍历左子树{visite(p->data);push(s,p);p=p->lchild; }//endwhileif (!StackEmpty(s)) //通过下一次循环中的内嵌while实现右子树遍历{ 阅读全文
posted @ 2011-06-17 16:24 bamb00 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 木马,也称特洛伊木马,名称源于古希腊的特洛伊神话,此词语来源于古希腊的神话故事,传说希腊人围攻特洛伊城,久久不能得手。后来想出了一个木马计,让士兵藏匿于巨大的木马中。大部队假装撤退而将木马摈弃于特洛伊城下,让敌人将其作为战利品拖入城内。木马内的士兵则乘夜晚敌人庆祝胜利、放松警惕的时候从木马中爬出来,与城外的部队里应外合而攻下了特洛伊城。尽管资深的黑客不屑于使用木马,但在对以往网络安全事件的分析统计里,我们发现,有相当部分的网络入侵是通过木马来进行的,包括去年微软被黑一案,据称该黑客是通过一种普通的蠕虫木马侵入微软的系统的,并且窃取了微软部分产品的源码。木马的危害性在于它对电脑系统强大的控制和. 阅读全文
posted @ 2011-06-09 09:53 bamb00 阅读(928) 评论(0) 推荐(0) 编辑
摘要: (1).窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面举一个例子(假设发送窗口尺寸为2,接收窗口尺寸为1): 分析:①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,等待接收0号帧;②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变;③ 阅读全文
posted @ 2011-05-09 09:33 bamb00 阅读(376) 评论(0) 推荐(0) 编辑