- 博客(36)
- 资源 (36)
- 收藏
- 关注
原创 一点KeepAlive的知识
在一个正常的TCP连接上,当我们用无限等待的方式调用下面的recv或send的时候: ret=recv(s,&buf[idx],nLeft,flags);或 ret=send(s,&buf[idx],nLeft,flags);如果TCP连接被对方正常关闭,也就是说,对方是正确地调用了closesocket(s)或者shutdown(s)的话,那么上面的recv或
2015-01-16 12:11:09
652
转载 linux文件系统实现浅析
之前有两篇文章整理过linux虚拟文件系统的结构,和linux文件读写的流程。其中一些由具体文件系统类型来实现的地方并没有深入叙述,只是说这是由具体的文件系统来实现的。比如,读写文件的时候,文件的读写位置怎么对应到实际的磁盘块呢?这是由具体的文件系统来实现的;再比如,寻找一个文件路径的时候,怎么知道XXX目录下是否有YYY文件存在呢?这也是由具体的文件系统来实现的。前些天同事问起linux下i
2014-11-03 10:58:04
688
转载 linux虚拟文件系统浅析
虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(namespace)"来描述的, 不同的进程可能拥有不同的namespace, 不同的namespace可能有着不
2014-11-03 10:56:56
651
转载 linux文件读写浅析
在《linux内核虚拟文件系统浅析》这篇文章中,我们看到文件是如何被打开、文件的读写是如何被触发的。对一个已打开的文件fd进行read/write系统调用时,内核中该文件所对应的file结构的f_op->read/f_op->write被调用。本文将顺着这条路走下去,大致看看普通磁盘文件的读写是怎样实现的。linux内核响应一个块设备文件读写的层次结构如图(摘自ULK3):
2014-11-03 10:55:23
760
转载 linux页面回收浅析
在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来分配缓存;创建进程时,内核也是通过这种方式分配连续的两个页面,作为进程的thread_info结构和内核栈;等等
2014-11-03 10:54:55
707
转载 Linux内存管理原理
本文以32位机器为准,串讲一些内存管理的知识点。 1. 虚拟地址、物理地址、逻辑地址、线性地址 虚拟地址又叫线性地址。linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻辑地址专指下文说的线性偏移前的地址)是一个概念。物理地址自不必提。内核的虚拟地址和物理地址,大部分只差一个线性偏移量。用户空间的虚拟地址和物理地址则采用了多级页表进行映射,但仍
2014-11-03 10:53:11
538
转载 如何允许 WinXP 和 Win7 自动创建 dump 文件
Part 1,在 Windows 7 下,默认情况下 dump 文件的自动生成是关闭的。要开启这个功能需要新建这样一个key --HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/Windows Error Reporting/LocalDumps,并在该 key 下按照下表进行如下配置。WinXP 和 Win7 自动创建 dump 文件"
2014-09-26 12:33:25
565
原创 文件过滤驱动学习笔记(三)
typedef struct _SECTION_OBJECT_POINTERS { PVOID DataSectionObject; PVOID SharedCacheMap; PVOID ImageSectionObject;} SECTION_OBJECT_POINTERS,*PSECTION_OBJECT_POINTERS;DataSectionObject:
2014-09-19 11:55:28
1491
转载 OLE Drag&Drop 介绍
一、基本概念 拖放,是指用鼠标拖动的方法,在不同程序的窗口之间、同一程序的不同窗口之间或同一程序同一窗体的不同控件之间,进行移动、复制、粘贴数据等操作的技术。拖放操作是依靠操作系统来完成的,被拖动的对象首先向操作系统注册一种它所使用数据的格式,并且按照这种格式来提供数据,拖放结束时,目标窗口提取出数据,并根据提取的数据生成相应的对象。 拖放方式有两种,一种是OLE拖放(
2014-08-15 14:04:55
2536
转载 Sessions, Desktops and Windows Stations
Today we are going to briefly go over the basics of some concepts that can be pretty confusing even at the best of times - Sessions, Desktops and Windows Stations. So let's dive right in ...A sessi
2014-08-14 15:39:28
576
转载 IO_REMOVE_LOCK(删除锁)
IO_REMOVE_LOCK(删除锁)的具体结构没有公开,WDK的文档中中查不到IO_REMOVE_LOCK。最开始看到IO_REMOVE_LOCK是在WDK的例子event中。下面是参考网上的一些资料之后的一点总结,错误的地方请指正。为什么要用IO_REMOVE_LOCK?WDM 驱动程序在处理设备删除 IRP 并释放驱动程序分配的内存后可能接收到附加的 IRP。在处理附加的 I
2013-12-27 10:24:46
1809
转载 绕过admin 黑客突破微软UAC研究初露成效
第1页:Instruder突破安全防范方法现在WIN7操作系统以经大量普及,UAC的安全机制以成为渗透过程中最为明显的绊脚石,UAC会使大量渗透工具失效,木马无法运行,如何突破UAC的层层防护是一直以来研究的重点。在9月24日亚洲知名安全技术峰会SyScan上,Instruder做了《深入思考UAC背后的安全问题》演讲,据其提供的方法在当前用户权限下,绕过UAC提示直接运行程序,并
2013-12-03 12:09:35
1623
1
转载 Credential Provider
Windows操作系统的登录WinXP利用GINA机制来登录,从Vista开始采用新的登录机制,名为Credential Provider. 在 Windows Vista 之前的环境中,每个会话都有一个 winlogon 实例,它负责控制该会话的交互式登录序列,它运行在Session 0. 计算机上已注册的 GINA 加载到 winlogon 进程空间中。(还可能加载一
2013-11-27 17:30:01
1521
4
转载 AcceptEx
1. AcceptEx:BOOLPASCAL FARAcceptEx ( IN SOCKET sListenSocket, IN SOCKET sAcceptSocket, IN PVOID lpOutputBuffer, IN DWORD dwReceiveDataLength, IN DWORD dwLocalAddressLen
2013-11-27 11:01:59
1539
转载 COM线程模型
线程模型是一种数学模型,专门针对多线程编程而提供的算法,但也仅是算法,不是实现。本文讲解COM提出的各个类型的线程模型,再说明COM运行时期库是如何实现它们的,就像说明Windows是如何实现线程这个数学模型的一样,最后指明一下跨套间调用和各种类型套间编写的要求以帮助理解。希望读者对于Windows操作系统的线程这个概念相当熟悉,对何谓“线程安全的”亦非常了解。COM线程模型 C
2013-11-26 14:36:49
955
转载 IOCP是一整套高性能的IO操作异步模型
IOCP是一整套高性能的IO操作异步模型,可以用在文件操作也可以用在网络SOCKET操作上面。当用在网络SOCKET上时,在服务器端主要配合AceeptEx WSASend WSASendto来使用,在客户机端主要配合ConnectEx WSARecv和WSARecvFrom来使用。这几天用IOCP模型模仿IPMSG软件时有一些感触,分享如下:(这里没有具体的使用常识,这部分请参考《Windows
2013-11-26 14:28:25
1748
转载 gcc和g++的区别
gcc和g++都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。2.编译阶段,g++会调用gcc,对于c++代码,两者是等
2013-11-23 22:15:30
662
转载 编译选项
GCC编译选项gcc 编译选项,自己翻译的.- - gcc 编译选项,自己翻译的. -o 设定输出文件名 -c 只编译,不连接. -E 只做预编译. -pipe 在多个编译过程之间使用管道. --version 显示版本. -static 静态连接. -ansi C 模式下支持所有
2013-11-23 21:59:36
786
原创 打印流程分析笔记
本地打印的流程: 1. 应用程序2. GDI引擎3. 本地打印提供者(localspl.dll)4. 如果是EMF格式交给EMF打印处理器(winprint.dll)转成RAW格式下面是到打印处理的函数栈063df19c73d542b7 05f3e188 063df30c 00000000winprint!PrintDocumentOnPrintProces
2013-08-29 15:53:33
2753
原创 Windows系统的线程调度与软件中断分发
在Windows操作系统内核把软件中断分为三个中断级别:DISPATCH_LEVEL,APC_LEVEL,PASSVIE_LEVEL。同时他们与线程的调试相关,WINDOWS内核中没有一个专门的程序来做线程的调度工作,它是散落在系统各个部分的。总结一下主要以下几种情况。
2013-08-29 15:11:15
2585
原创 KGDB 调试笔记1
以前搞了一个LINUX的调试互环境。环境建好后有一个问题,Guest机启动进入调试模式,HOST机连接不上。重启GUEST机进入正常模式测试ttyS0是连通的,reboot再进入调试模式,HOST机竟可以连接了。呵呵,一直没有搞明白怎么回事。后来因为一个事情需要调整一下GRUB的配置文件。才发现本来(kgdboc=ttyS0,115200 kgdbwait )可我在115200前面多加了一个空格
2013-08-09 16:28:02
689
原创 C++反汇编学习笔记-多重继承
class A{public: A(){ptr= "abcdefg";}; ~A(){}; virtualvoid print(){ printf("%s\r\n",ptr); } virtualvoid printA(){ printf("A::%
2013-06-19 17:05:57
899
原创 虚拟链路历史版本
虚拟链路早早发布了一个版本,后来很长时间没有更新十分惭愧。最近终于发布了虚拟链路的第一个正式版本。希望大家多多支持。新版功能:1.增加了UDP广播包隐藏功能,网络隐身更彻底2.增加了两种网关与主机MAC的获得方法,可以在ARP攻击的情况下智能分析出真实的网关和主机MAC3.增加了主机绑定功能即使对方不安装软件也可以与之通信下载链接:针对标准备系统版本:http://
2013-04-28 12:57:47
1438
5
原创 虚拟链路的1.5.0版本发布了
虚拟链路1.5.0版本发布更新:1.更新了网关分析算法2.解决了上个版本中内存泄漏的问题3.提供了Win7 64位版本的支持5.合并了部分功能6.调整了界面显示7.增加了更新检查功能32 位下载:http://download.csdn.net/detail/lziog/5279535http://surfnet.dl.sourceforge.net/pro
2012-02-08 17:34:31
12259
202
原创 产品给力需要每一个角色
国外的开发不太清楚,工作五年了时间不算长。小作坊干过,大点的公司也干过。感觉在大部分公司在开发上的区别还没有到天壤之别的地步,特别是面向政府行业应用的。作为一个研发经常能听到产品实施人员对产品的抱怨,诸如产品问题太多,实施复杂,用户体验性不高等。他们认为研发是问题的底端,这也不错!到了产品实施的阶段研发的确是问题解决的最后保障。无论是研发,还是测试和实施人员他们都是想产品给力。可谁能才
2011-06-14 13:00:00
783
原创 基于AFD驱动的进程流量控制
基于AFD驱动的进程流量控制摘要:目前有些软件可以监控进程流量,功能实现的都很多错的。对于进程流量的控制很很多种方案,每一种方案也都有其缺点。比如有应用层基于LSP来做的,也有通过TDI和NDIS中间层来做的。其实现的效果和复杂度也各不相同。而我们要讨论的是一种基于AFD驱动来做的一种进程流量控制方案。 关键词:AFD 进程流量 控制驱动1. 总述目前有些软件可以监控进
2011-06-07 21:48:00
7574
1
原创 【原创】WINDOWS 64位SSDT定位思路
在32位Windows中我们有很多定位SSDT的方法,最直接的就是利用导出符号来找到SSDT。再有就是通过在nt!KeAddSystemServiceTable函数中进行反汇编搜索。可是在64位WINDOWS中这两种方法都行不通。在64位Windows中不在导出SSDT了,同时nt!KeAddSystemServiceTable中也不再出SSDT了。这样要HOOK SSDT表就出现了第一个问题如何找到它?我想了三种思路。
2010-12-06 22:10:00
6020
3
转载 [转载]实现IPv6:KAME项目的经验
<br />这是我在最初接触KAME的时候找到的一篇文章,把它译了出来。在KAME项目行将解散的今天,再来读读这篇文章,实在是感慨良多啊。。。<br /> <br /><br />Implementing IPv6:experiences at KAME project<br />Jun-ichiro itojun Hagino <itojun@iijlab.net><br />Research Laboratory , Internet Initiative Japan Inc.<br />http://
2010-10-09 10:47:00
4445
原创 文件过滤驱动学习笔记(二)
文件过滤驱动学习笔记(二)1. 概述刚学习文件系统过滤时只是做一些简单的应用也没有深究其中的细节;说起来对文件系统过滤也只是一知半解惭愧的很。后与人讨论发现很多细节自己很模糊;比如其中涉及的驱动对象之间的区别、卷设备加载对文件过滤驱动的影响等。自己还是需要仔细研究一下,最近查了一些官方及前辈们的资料似乎有些理解在此记录下来做个笔记。2.
2010-08-01 21:28:00
1123
原创 剖析VC6.0中为类对象申请内存的过程
摘要:在用VC开发时常常需要对内存进行操作,其中C++中提供了运算符new与delete;而C语言库中提供有malloc与free。它们在具体使用时存在着一些差别,本文主要剖析一下VC6.0中为类对象申请内存的过程。方便大家理解在为类对象申请或释放内存时的一个问题。 关键词:VC6.0,内存申请,C++,new,delete1. 总述在用VC开发时常常需要对内存进行操作,其中C++中提供了运算符new与delete;而C语言库中提供有malloc与free。它们在具体使用时存在着一些差别,大家也可
2010-08-01 10:41:00
2038
原创 进程间通信之内存映射文件
进程间通信之内存映射文件 摘要:我们实际的开发中经常可能遇到我们的后台系统需要通过回前台UI进程通知用户一些消息,这样两个进程之间就不可避免的产生的通信的需求。幸运的是Windows给我们提供了很多进程间能通信的方法,如:剪贴板、窗口消息、共享内存、管道、套接字等,我们这里讨论一下共享内存方式进程间通信。 关键词:进程间通信,内存映射文件,VC++,Windows
2009-04-28 13:57:00
5356
6
原创 Windows服务编写
摘要:几乎所有的操作系统在启动的时候都会启动一些不需要与用户交互的进程,这些进程在Windows中就被称作服务。它由服务程序、服务控制程序(SCP,service control program)和服务控制管理器(SCM,service control manager)三个组件构成。本文针对服务程序与服务控制程序的编写进行综合讲述。 关键词:Windows,服务,VC++•1
2009-04-10 17:11:00
1627
原创 一个动态的栈实现的括号匹配程序
# include "stdio.h"# include "stdlib.h"# include "string.h"typedef struct _tegstackitem { char param; int index;}Sitem,*pSitem;typedef struct _tegstack{ pSitem pItem; struct _tegstack *after;}Stack,*
2008-03-02 15:25:00
737
原创 用APPLET来写树形菜单
我们在做网页的时候常什么用到树形菜单,大多用脚本编写。这样固然有它灵活多样的好处,但是做起来相对复杂。我们不为什么不借助于JAVA SWING的强大功能来做我们的WEB服务呢?于是这里和大家一起讨论一下利用APPLET的强大功能来做个树形菜单。代码如下: package application;import java.awt.*;import java.awt.event.*;impo
2007-10-13 15:09:00
1365
原创 一个算符文法分析的实现
算符优先分析法程序模拟作者:李朝中摘要:大家在学编译原理文法分析时都会先学习弱文法和算符文法,然后是LR系列的文法,算符文法做为一种简单易于理解的文法,可以帮助大家学习深刻复杂的文法。本文介绍算符分析程序实现方法,希望能帮助大家理解算符分析的实际分析流程。关键词:算符分析、VC++、编译原理一、简介算符优先分析法的关键是比较两个相继出现的终结符号的优先级而决定应采取的动作。要完
2007-10-13 15:05:00
1886
原创 Windows中通过ipconfig获得网卡信息
我们在网络程序设计中有时可能会用MAC地址,如果我们用VC++的话可以用UCHAR Netbios( PNCB pncb /* pointer to the network control block*/)获取;但是我在实际的应用过程中发现它并不是每次都管用的.在一个有无线网卡的笔记本上,我一个装有虚拟机的笔记本上都现我了获取不到MAC的情况,也许我对这个函数的用法没有深入了解吧! 我借
2007-10-13 15:03:00
4093
1
Windows下主机软件硬件共享等信息获取例示
2008-10-11
Windows下ZIP压缩示例
2008-10-11
ARP攻击代码实例
2007-10-31
密码强度进度条
2007-10-19
算符分析试例
2007-08-29
虚拟链路1.5.0
2013-04-20
虚拟链路1.5.0 Win7 64位版本
2013-04-20
虚拟链路1.4.5
2012-10-18
虚拟链路1.4.3
2012-05-30
虚拟链路 准64位版本
2012-05-21
虚拟链路1.4.2
2012-05-21
虚拟链路准64位版本
2012-05-21
进程流显控制示例程序
2011-06-07
NDIS Filter Drivers指南
2011-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人