- 博客(58)
- 资源 (9)
- 收藏
- 关注
转载 内存屏障
内存屏障是为了防止编译器和硬件的不正确优化,使得对存储器的访问顺序和书写程序时的访问顺序不一致而提出的一种解决办法。 内存屏障的分类:编译器引起的内存屏障缓存引起的内存屏障乱序执行引起的内存屏障1、编译器引起的内存屏障:我们都知道,从寄存器里面取一个数要比从内存中取快的多,所以有时候编译器为了编译出优化度更高的程序,就会把一些常用变量放到寄存器中,下次使
2013-03-07 17:25:17 261
翻译 利用#pragma init_seg 控制构造顺序
前言C++标准中,处于同一编译单元(cpp)的全局对象按其声明次序初始化并倒序析构,但标准中没有定义处于不同编译单元的全局对象的初始化顺序。假如有个Log对象负责程序日志的记录,如果程序结束时,有某个全局对象出现类似于资源释放失败的错误,该对象会调用Log记录错误,这时,Log可能已经被销毁了,这就是所谓的dead-reference问题。使用VC中的#pragma init_seg预
2012-09-25 19:37:44 412
转载 CRT堆
N年前,在探讨C++对象创建及管理方法时,写了些代码,管理对象 (factory method、singleton、prototype),发现了windows进程及dll退出时的一些行为及由此引起的问题,本文将问题列举并进行讨论,以下讨论都是以程序静态连接为前提,在本文的最后将会回过头来讨论这个大前提,并提出一些解决问题的方法。CRT堆首先CRT就是C RunTime的缩写,意思是C运行库
2012-09-20 13:23:07 338
转载 干掉Windows文件保护
干掉Windows文件保护思路有以下几种:1.远程注入Winlogon进程卸载sfc_os.dll2.强制替换dllcache里的文件,监视弹窗,使用postmessage发送wm_close消息以关闭。3.调用sfc_os.dll的第5号导出函数以替换文件Windows File Protection is a waste,Solutions usually is:1.C
2012-09-07 16:23:18 361
转载 空间格局随机化ASLR
空间格局随机化ASLR1. 概述在前面安全编码实践中我们介绍过GS编译选项和缓存溢出,以及数据保护DEP。首先,缓存溢出的直接后果就是可能导致恶意代码的远程执行,于是编译器提供了GS保护。但是,GS选项有自身的局限,存在若干方法可以绕过GS选项的保护。于是进一步,操作系统提供了数据执行保护,即DEP,以及与之对应的NXCOMPAT编译选项。那么是不是现在我们就可
2012-05-15 10:46:35 468
翻译 The Windows NT 6 shutdown process【Windows NT 6 关机过程】
原文:http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/windows-nt-6-shutdown-process.html你来到这里看这个页面原因大概是你经常被问到下面类似的问题: Windows NT 版本6 ("Windows Vista") 关机过程是什么 样子的? 下面是常见的答案. Window
2012-02-23 02:06:02 427
原创 禁用MmIsAddressValid
WDK文档明确警告不推荐使用该函数。MmIsAddressValid例程检测读或写作为参数的虚地址是否会发生缺页。就算是MmIsAddressValid返回TRUE,访问参数地址仍然可能发生缺页,除非该地址是有效的非分页内存或者锁这块内存.SyntaxBOOLEAN MmIsAddressValid( __in PV
2012-02-20 01:01:42 1929
转载 Kernel stack not resident (Using .pagein)
You might find yourself debugging an issue and a thread you areinterested in is paged out. Here's the steps to use to page in the stackfor the kernel side and user side... Be careful when doing thi
2011-12-07 19:31:42 498
转载 TortoiseSVN settings for Beyond Compare
Beyond Compare 3:C:/Program Files/Beyond Compare 3/BComp.exeDiff Viewer "C:/Program Files (x86)/Beyond Compare 3/BComp.exe" %base %mine /title1=%bname /title2=%yname /leftreadonlyPut the S
2011-10-27 00:59:17 263
转载 Bugchecks Explained: NO_MORE_IRP_STACK_LOCATIONS
What Happened?All I/O operations in Windows are described by an I/O Request Packet (IRP). If you’re familiar with IRP handling, you alread
2011-09-28 17:26:31 800
转载 微软杯Exploit Me安全调试技术挑战赛 第七题
一、前言原始POC代码见:http://www.ntinternals.org/ntiadv0803/kerneld_Exp.zip。相对而言,改HalDispatchTable表中的xHalQuerySystemInformation要简单点,并且HalDispatch
2011-09-27 00:32:28 905
转载 MS08-066 : 绕过ProbeForRead/ProbeForWrite及修复
MS08-066 : Catching and fixing a ProbeForRead / ProbeForWrite bypassThe driver afd.sys is responsible for handling socket connections.
2011-09-26 16:24:40 512
翻译 后XP系统启动流程
自Vista开始的windows操作系统,启动初始化流程不同于WinXP。相同点止于MBR加载活动分区PBR这一刻。The OS after Windows Vista boot process differs from Windows® XP in the way th
2011-09-24 15:15:36 467
原创 中断向量表
中断向量 是指中断服务程序入口地址的偏移量与段基值,一个中断向量占据4字节空间。中断向量表是8088系统内存中最低端1K字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。在中断响应过程中,CPU通过从接口电路获取的中断类型号(中
2011-09-14 01:41:36 1801
原创 如何从EPROCESS辨别一个进程是否已退出
lkd> dt _EPROCESS FDCE6518nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x06c ProcessLock : _EX_PUSH_LOCK +0x070 Crea
2011-08-31 16:33:16 366
转载 Get PDO
NTSTATUS ntStatus = STATUS_SUCCESS; PDEVICE_OBJECT DeviceObject = NULL; PFILE_OBJECT FileObject = NULL;
2011-08-13 22:38:34 300
转载 DO_DEVICE_INITIALIZING 到底有什么用?
DO_DEVICE_INITIALIZING 到底有什么用?当设备驱动程序通过调用 IoCreateDevice 创建设备对象时,I/O 管理器在 DEVICE_OBJECT 结构的 Flags 字段中设置 DO_DEVICE_INITIALIZING。DO_DE
2011-08-11 01:51:19 276
原创 PAGED_CODE宏
PAGED_CODE这个宏可以确保调用线程运行在一个允许分页的足够低IRQL级别。PAGED_CODE only works in checked builds.如果IRQL > APC_LEVEL,则PAGED_CODE()会对系统产生一个断言。对这
2011-08-11 00:29:36 971
转载 分页式内核模式驱动--#ifdef ALLOC_PRAGMA代码段
By default, the kernel loader will load all driver executables and any global data that you may have defined in your driver into nonpaged me
2011-08-11 00:15:21 409
转载 Fast CRC32 in Assembly
Fast CRC32 in AssemblyTimings on 768 bytes, 1,000,000 times:Assembly: 1722msC (same algorithm, MSVC, -O2): 2099msRtlComputeCrc
2011-07-31 16:32:31 454
原创 12 ways to terminate a process
12 ways to terminate a processTerminateProcess or NtTerminateProcessEveryone knows about TerminateProcess. You simply open a handle to the t
2011-07-26 01:07:31 337
原创 Windows Hang之后,使用主动蓝屏STOP:0x000000E2
按住右侧Ctrl键的同时,再按Scroll Lock键两次,Windows就会出现蓝屏,显示信息为: *** STOP:0x000000E2 (0x00000000,0x00000000,0x00000000,0x00000000)。 这是Windows的一个进入蓝
2011-07-13 10:35:56 680
转载 Hooks Overview
Hooks OverviewA hook is a mechanism by which an application can intercept events, such as messages, mouse actions, and keystrokes. A functio
2011-07-10 17:59:56 239
原创 SetProcessShutdownParameters
SetProcessShutdownParameters The SetProcessShutdownParameters function sets shutdown parameters for the currently calling process. This function sets a shutdown order for a process relative to the
2011-06-30 12:19:00 705
转载 PEB地址随机化
Windows自从XP SP2后系统引入了一个特性:PEB地址随机化,每个进程的PEB地址不固定,大概有14种可能。系统创建进程时设置PEB的地址,不能认为PEB就处在0x7FFDF000处。NtCreateProcess / NtCreateProcessEx / PspCreateProcess / MmCreatePeb / MiCreatePebOrTeb在MiCreate
2011-06-20 01:17:00 342
原创 CreateThread 和_beginthreadex区别
为什么要用C运行时库的_beginthreadex代替操作系统的CreateThread来创建线程?来源自自1999年7月MSJ杂志的《Win32 Q&A》栏目 你也许会说我一直用CreateThread来创建线程,一直都工作得好好的,为什么要用_beginthreadex来代替CreateThread,下面让我来告诉你为什么。回答一个问题可以有两种方式,一种是简单的,一种
2011-06-16 18:43:00 252
转载 格式控制符[mark]
_int64类型与long long类型,double类型同为64个字节,十进制大概有20位数,输入输出的格式控制符为"%I64d","%lld","%f"。 符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%usigned -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%
2011-06-16 08:58:00 475
原创 C++中operator的另一种用法
operator<br />在C++中是重载操作符的关键字;<br />还可以用来定义隐式的类型转换。<br /> <br />参见如下代码,类A在需要的时候可以自动的转换成bool。classA{??? public:????? operatorbool(void)????? {????????? returnb;????? }??? private:????? boolb;};voidmain(void){??? Aa;??? boolb;??? if(a)??? {??????? b = ! a;?
2011-05-03 14:18:00 328
原创 CreateProcessAsUser needs privileges[UAC]
<br /><br />Currently I debug my service process from XP to Win7. One UAC problem appears.<br /> <br />It calls CreateProcessAsUser API. This API works well in all cases in XP and service mode for Win7.<br /> <br />But when I debug it in Win7, it fails. Af
2011-04-15 19:07:00 588
转载 Windows Vista for Developers
<br /><br />《Windows Vista for Developers》系列文章目录<br /> <br />介绍:《Windows Vista for Developers》系列介绍 (原文:Windows Vista for Developers – A New Series)<br />第一部分:Aero向导(原文:Aero Wizards)<br />第二部分:深入分析任务对话框(原文:Task Dialogs in Depth)<br />第三部分:桌面窗口管理器(原文:The Des
2011-04-01 02:18:00 230
原创 Detect a process whether running with elevated privileges sample code.
<br /><br />int UserAccountControl::GetProcessTokenElevationType()<br />{<br />HANDLE hToken = NULL;<br />try<br />{ <br /> if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) <br /> throw gcnew Win32Exception(GetLastE
2011-04-01 01:06:00 305
转载 Memory Debug Codes
<br />Microsoft's memory management functions often initialize memory with special values. The following article describes frequent used variants. <br />Microsoft Visual C++ Runtime library<br />C runtime library provides it own debug codes:<br /><br />0xC
2011-03-25 16:30:00 248
转载 Understanding the consequences of WAIT_ABANDONED
<br />One of the important distinctions between mutexes and the other synchronization objects is that mutexes have owners. If the thread that owns a mutex exits without releasing the mutex, the mutex is automatically released on the thread's behalf. <br />
2011-03-07 18:32:00 448
转载 Linux2.6 内核Initrd 机制解析
1.什么是 Initrd initrd 的英文含义是boot loader initialized RAM disk,就是由boot loader初始化的内存盘。在linux内核启动前,boot loader会将存储介质中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd 的
2007-02-07 17:18:00 1223
转载 深入理解Linux操作系统下的守护进程
Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现
2007-02-07 16:00:00 764
转载 用Diff和Patch维护源码
在linux系统下,维护源码可以使用很多方法,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,linux标配中的diff和patch工具就可以完成代码的简单备份和升级工作。 diff以"行"为单位比较两个文件(也可以是目录较),并将不同之处以某种格式输出到指定输出上;patch可以读入这种输出,并按照一定指令使源文件(目录)按照目标文件(目录)更新。Linux内核源
2007-01-23 14:22:00 1118
原创 man of diff
DIFFSection: GNU Tools (1)Updated: 22sep1993 名字diff - 找出两个文件的不同点 总览diff [选项] 源文件 目标文件 描述在最简单的情况是, diff 比较两个文件的内容 (源文件 和 目标文件). 文件名可以是 - 由标准输入设备读入的文本. 作为特别的情况是, diff - - 比较一份标准输入
2007-01-23 13:48:00 688
转载 关于嵌入式Linux系统的启动(转)
#1 关于嵌入式系统的启动(SHARE FOR ALL)嵌入式Linux启动分为两个部分,系统引导与Linux启动。系统引导将完成Linux装入内存前,初始化CPU和相关IO设备,并将Linux调入内存的工作。系统引导主要由BootLoader实现。在BootLoader将Linux内核调入内存之后,将权力交给LinuxKernel,进入Linux的启动部分。以下详细分析启动的过程与使用
2007-01-15 21:45:00 3315
原创 CDLinux 0.4.9版的SD卡安装
CDLinux 0.4.9版的SD卡安装 源材料:16M的SD卡、读卡器、linux环境、CDLinux-0.4.9.ISO 以前买dc的时候,随机附带了一个16M的SD卡,一直丢弃到一边,基本没什么用处。有天网上看到有个叫做CDlinux的mini型linux可以安装到各种介质上,于是就想把闲置很久的SD卡做成一个启动盘。 一般的U盘做成wi
2007-01-14 20:28:00 3024 1
原创 CDlinux HOWTOs 文档
CDlinux HOWTOs 文档如何“安装”CDlinux?CDlinux 是个从光盘启动、运行的小Linux,是以一个标准的 ISO 文件的格式发布的。所以最简单的“安装”方法是:把这个 ISO 文件刻录到光盘上,用它启动机器就是了。当然,你也可以把 CDlinux 安装到硬盘或 U 盘、USB 移动硬盘上。如何把 CDlinux 集成到我自己的光盘上?CDlinux
2007-01-14 19:52:00 1619
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人