- 博客(68)
- 资源 (6)
- 收藏
- 关注
原创 关于naked (C++)
MSDN中关于naked关键字的介绍:For functions declared with the naked attribute, the compiler generates code without prolog and epilog code. You can use this feature to write your own prolog/epilog code sequen
2012-08-09 23:48:25 4129
原创 wireshark过滤语法总结
做应用识别这一块经常要对应用产生的数据流量进行分析。抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后参考。(脑子记不住东西)wireshark进行过滤时,按照过滤的语法可分为协议过滤和内容过滤。对标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值进行的过滤如tc
2011-12-09 22:38:50 195612 4
原创 NDISLWF how to modify the packet
http://www.osronline.com/showThread.cfm?link=172579You are not generally permitted to modify something that your driver doesnot 'own'. A
2011-08-15 15:25:34 5843 2
原创 NDISLWF how to block stream
下面的代码中部分是伪代码,但关键的流程整理出来了,过滤databuffer,将允许通过的NBL和不允许通过的NBL分别加入NBL_QUEUE_HEADER NblSendQueue;或NBL_QUEUE_HEADER NblDropQueue;链表中。然后将两个NBLs分别进
2011-08-10 12:58:00 3593
原创 ndis6.0 NetBufferSend相关函数与数据结构
FilterSendNetBufferListsComplete:NDIS calls the FilterSendNetBufferListsComplete function to complete a send request that a filter driver
2011-08-01 19:35:08 6516 4
原创 微博内容过滤
今天精神不太好,突然想到如何针对weibo的内容做流量过滤,以前做过应用识别方面的东西,对这方面比较熟悉,于是安装wireshark抓包,看看在微博上发消息数据包到底是什么样子的。我用的是新浪微博,发了三条内容如下:通过wireshark过滤找到了相应的session,对应包的内
2011-07-25 21:00:57 3548
原创 全排列,递归实现
最近在看linux C一站式学习(http://learn.akae.cn/media/index.html),里面关于C的基础大部分都了解,对GDB、汇编和后面关于linux编程的内容比较感兴趣,不过还是重头把文档看了下,8.3后面的一个习题尝试自己写了下。
2011-07-04 18:56:49 662
原创 linux学习资料,更新ing
最近在看oldlinux的源码,可惜基础薄弱,囫囵吞枣了一遍,虽然没能学到很多,但对于操作系统中的一些基本概念,如copy on write, load on demand,页式管理等,有了比较好的理解。 下面链接中,对“逻辑地址、线性地址、物理地址和虚拟地址”的概念讲得挺透彻。http://bbs.chinaunix.net/thread-2083672-1-1.html 这个链接中,对于old
2011-06-28 16:21:00 697
原创 CHash、spinlock等知识点小结
CHash即cache hash,主要是考虑buket中有多个item时,考虑到cache的大小,如mips中是128字节,可以把buket指向的item设置为128字节,里面用一个bitmap和几个指针地址指向具体的item。spinlock:自旋锁,如果没有申请到锁,会一直占用到它的时间片结束。注意调用spinlock时往往要关闭中断,防止死锁。相关知识有:进程翻转。找到了一个参考网页:http://www.ibm.com/developerworks/cn/linux/l-cn-spinlock/
2011-04-08 18:04:00 2393
原创 queue(3)--freebsd中的queue结构使用
<br />前几天看代码,发现有类似这样的结构:<br /> <br /> TAILQ_FOREACH(np, &head, entries){ printf("%d %d/n", np->a1, np->a2); } <br />我没太多代码编写经验,初读的时候能模糊知道和for_each()函数类似,但十分好奇是如何实现了,后来在发现引用了queue.h头文件,是freebsd里定义的一头文件,采用宏定义的形式实现了4种基本的数据结构,没做太多深入的理解,我简单把其中的Tail queue拿
2011-03-28 15:13:00 2213
原创 DNS域名压缩
<br />前几天大家讨论DNS协议时,突然发现一些字段长度与实际编码不一致。<br /> <br /> <br />后来仔细看了DNS协议,发现,在返回结果中有许多域名可能是重复的,为了避免不必要的开销,DNS协议中使用了压缩方法。<br /> <br />当一个域名中的标识符是压缩的,它的单记数字节中的最高两位被置为11,剩下的14bit说明实际域名所在位置相对DNS起始表示字段的偏移。<br /> <br />插图片太麻烦了...就简单的写写记录下来,感兴趣的自己再去深入看看。<br />
2011-03-25 09:49:00 4236
原创 c语言小的知识点int* a[5] int (*b)[5]
<br /><br />int main()<br />{<br />int* a[5];<br />int (*b)[5];<br />int i = 2, j = 3, k = 4; <br />b = a;<br />a[0] = &i;<br />printf("%d %d %d/n", *a, *a[0], i);<br />printf("%d %d %d/n", a, a[0], &i);<br />printf("%d ", b);<br />b++;<br />printf("%d/
2011-03-14 10:21:00 4949
原创 int型在内存中的存储方式与高低字节(大小端)
首先明确一点:结构体中的成员是从低地址向高地址排列的,这一点和数组类似,即排在结构体前面的成员占用内存低地址,排在结构体后面的成员占用内存高地址。union int_char {int a;char b[4];}ton;ton.a = 0x02ff03ff;
2011-03-08 18:05:00 13302 1
原创 AC算法
可以参考:http://hi.baidu.com/lightxianjian/blog/item/d0f0b8de8041125095ee3710.htmlhttp://blogold.chinaunix.net/u/12592/showart_284591.html第一个链接中,里面对于trie树的构建讲解得比较清楚,也介绍了失效函数(文中是失效指针)的原理,不过对算法并未做仔细讲解。第二个链接中,对于转向函数、失效函数、输出函数都有详细介绍,而且可以下载相关文档资料和代码,势不可多得的参考资料。
2011-02-10 22:34:00 3627
原创 KMP算法的实现
// kmp.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"char pattern[] = "abaabaabbcdf";char text[] = "abaabaabbcdfkashdfirabcabcedbyuvabcabddcdscgyuvwb,mbkabcabcedabaabaabbcdfdcdsjciuzxqwmd,sanfixcvjwqkfniozxyciuwqfksgiuytsw";int next[sizeof(pattern)-1]
2011-02-06 18:21:00 882
原创 批处理-保留空行并去掉注释行
<br />下午写的,看abap代码时,有些注释行不想要,正好用批处理来解决。<br />其中扩展了下,使得代码中的空行也能输出。<br /> <br /> <br />@rem 注释在行首的才能判断出来...<br />@echo off<br />@rem .则输出空行<br />@echo.>editaaa.txt<br /> SetLocal EnableDelayedExpansion <br />for /f " tokens=1,* delims=:" %%i in ('findstr /n
2010-09-16 17:10:00 4040
原创 在文本中找出重复的数据记录的批处理怎么写
<br />最新想学习批处理,在网上搜索信息时看到百度上的一个问题就自己写了下。<br />问题地址:<br />http://zhidao.baidu.com/question/101833311<br /> <br />对很多东西不熟,费了一下午才完成要求,写的批处理程序如下:<br />@rem 这个程序实现了把文件中相同行的内容提取出来@rem 注意SetLocal与EndLocal,用它使得上面for中的环境变量不会对下面for循环中的环境变量产生影响@rem 现在程序执行不能得到正确结果
2010-09-15 19:11:00 3284
原创 如何阅读passthru?
环境是:window 2003 server工具:Windows Server 2003 DDK(迅雷下载地址:ftp://www.driverdevelop.com/en_ws2003_sp1_ddk.iso)Driverstudio3.2 (迅雷下载地址:http://cracklab.ru/_dl/_/DriverStudio_3.2_CRACKLAB.rU.rar)Vi
2010-05-19 12:35:00 1255 1
原创 C++ STL学习笔记十二 hash_map映照容器
/* * ************************************************************************************ * hash_map映照容器的基础说明: ***********************************************************************************
2010-05-16 11:06:00 10378 1
原创 C++ STL学习笔记十一 hash_set哈希集合容器
/* * ************************************************************************************ * hash_set哈希集合容器的基础说明: **********************************************************************************
2010-05-16 11:05:00 46815 3
原创 C++ STL学习笔记十 multimap多重映照容器
/* * ******************************************** * multimap多重映照容器的基础说明: ******************************************** * * multimap多重映照容器:容器的数据结构采用红黑树进行管理 * multimap的所有元素都是pair:第一元素为键值(key),不能修改;第二元素为
2010-04-25 13:56:00 4299 2
原创 C++ STL学习笔记九 map映照容器
/* * ******************************************** * map映照容器的基础说明: ******************************************** * * map映照容器:容器的数据结构采用红黑树进行管理,插入的元素键值不允许重复 * map的所有元素都是pair:第一元素为键值(key),不能修改;第二元素为实值(va
2010-04-25 13:35:00 1659
原创 C++ STL学习笔记八 multiset多重集合容器
/* * ******************************************** * multiset多重集合容器的基础说明: ******************************************** * * multiset多重集合容器使用RB-Tree的平衡二叉检索树的数据结构。 * 允许将重复键值的元素插入到multiset中 * 插入过程中要进行平衡处
2010-04-25 12:49:00 4388
原创 C++ STL学习笔记三 deque双端队列容器
/* * ******************************************** * deque双端队列容器的基础说明: ******************************************** * * * 可进行随机访问,在**头部和尾端**插入、删除元素,时间复杂度为O(1) * Random Access Container Back Inserti
2010-04-16 21:33:00 7239 1
原创 C++ STL学习笔记六 bit_vector位向量容器
/* * ******************************************** * bit_vector位向量容器的基础说明: ******************************************** * * 具有vector容器一样的成员函数,常用于硬件端口的控制。 * 区别于vector,bit_vector更节省内存空间,一个
2010-04-12 18:38:00 5594
原创 C++ STL学习笔记五 slist单向链表容器
/* * ******************************************** * slist单向链表容器的基础说明: ******************************************** * * slist是SGI C++STL自设的一个容器,要安装配置stlport才可以使用 * * Front Insertion Sequence * slist
2010-04-05 12:31:00 5777 1
原创 C++ STL学习笔记四 list双向链表容器
/* * ******************************************** * list双向链表容器的基础说明: ******************************************** * * list双向链表容器采用双向链表的数据结构来存储元素数据,可以高效查找、插入、删除容器元素 * * Reversibe Container Back Inse
2010-04-04 15:37:00 9982 3
原创 C++ STL学习笔记七 set容器
/* * ******************************************** * set集合容器的基础说明: ******************************************** * * set集合容器使用RB-Tree的平衡二叉检索树的数据结构,不允许插入重复键值 * 每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的所有键值 *
2010-03-31 19:28:00 7380 1
原创 C++ STL学习笔记二 vector向量容器
/* * ******************************************** * vector容器的基础说明: ******************************************** * * 可进行随机访问,并且实现了在容器的尾端插入新元素 * Random Access Container 和 Back Insertion Sequence * 在尾
2010-03-31 19:17:00 1795
原创 C++ STL学习笔记一
为何要学习STL:数据结构与算法是编程的核心,STL中包含各种数据结构和优秀的算法,确实值得深入学习,本文中虽然着重使用,但希望有心的朋友能多看看相关数据结构的实现,对于C++语言确实会有较大帮助。 STL库有多个版本,我采用的是SGI版本,编译安装方法请参考如下链接:http://blog.csdn.net/hong201/archive/2009/07/06/4322975.a
2010-03-31 18:37:00 1737
转载 VC编程小技巧
1. 如何获取系统日期 CTime tm = CTime :: GetCurrentTime(); CString strTime = tm.Format(_TEXT(“%Y-%M-%d %H:%M:%S)); MessageBox(strTime); 2 动态分配二维数组 int **array; array = new int*[col]; if(array = = 0) exit(-1);
2010-03-16 23:17:00 8630
原创 CApp,CMainFrame,CDoc,CView
想写VC编程的朋友一定要看孙鑫老师的视频,里面讲得很好。 网上寻找到的资料总结: CMainFrame是CApp类的主程序窗口(如果是选MDI或SDI结构的话),也就是程序的一个框架。CApp中如无特殊的要求不用加什么代码,CMainFrame中也是根据需要,如按照微软提供的框架也不需要加什么代码。 CDocument一般和CView一起使用,这样的程序叫文档/视图结构。CD
2010-03-10 10:31:00 2040 1
转载 宏定义详解
宏定义有无参数宏定义和带参数宏定义两种。 无参数的宏定义的一般形式为 # define 标识符 字符序列其中# define之后的标识符称为宏定义名(简称宏名),要求宏名与字符序列之间用空格符分隔。这种宏定义要求编译预处理程序将源程序中随后所有的定名的出现(注释与字符串常量中的除外)均用字符序列替换之。前面经常使用的定义符号常量是宏定义的最简单应用。如有:
2010-03-10 09:59:00 1248
原创 MFC标题设置
方法一:BOOL C***App::InitInstance()中添加:m_pMainWnd->SetWindowText("cumirror");方法二:增加一个String Table资源 ID=AFX_IDS_UNTITLED,CAPTION="CUMIRROR" 若把两者都进行了设置,则方法一中的名字优先显示。
2010-03-06 20:29:00 4583
原创 window编程学习总结
这段时间把《C语言也能干大事》的前21章看完了,在里面学习了许多对控件的操作函数,后面的讲解也使我对与数据库的连接、DLL的建立有了一定的了解,现在将一些基本的操作以及基本的知识点在这里进行下归纳总结,便于以后的查阅。WINAPI基本函数1.MessageBox()int MessageBox( HWND hWnd, // handle to owner win
2010-02-11 10:30:00 2545
转载 内存字节对齐
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧./******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐,是在时间和空间上的一
2010-02-09 14:56:00 542
转载 一些基本的SQL命令
--显示版本号,当前日期 SELECT VERSION(),CURRENT_DATE(),NOW(); --免费的计算器 SELECT (20+5)*4 AS RESULT,SIN(PI()/3); --创建数据库 CREATE DATABASE databasename; --删除数据库 DROP DATABASE databasename
2010-02-07 17:58:00 603
原创 WIN32编程:__stdcall,__cdecl,__fastcall,thiscall
__cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要注意了,只有用相同的方法才能够调用成功.另外,像printf这样接受可变个数参数的函数只有用cdecl才能够实现. __declspec主要是用于说明DLL的引出函数的,在某些情况下用__de
2010-02-03 10:49:00 1072
socket编程—实现文件传输、线程、进程范例
2009-11-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人