2014年3月27日

当写一个32位及64位驱动通用代码时,应该注意什么

摘要: 一,有时候,在64位系统中只会有64位驱动的存在,那么如果你在驱动中要处理进程的一些东西时,最好分清楚上面是WOW的32位还是64的。IoIs32bitProcess()二,64位系统不只是X86_64,也就是AMD64,还有安腾。_WIN64 在针对任何 64 位版本的 Windows(包括 Itanium 版)编译时定义。#ifdef _M_AMD64//AMD64代码#elif defined (_M_IX86)//X86代码#else//_M_IX64 Itanium代码#error 错误,没有为 Itanium 开发代码#endif当然,如果想在sources 文件中写,你可以这样。 阅读全文

posted @ 2014-03-27 15:56 emissary 阅读(888) 评论(0) 推荐(0) 编辑

2014年2月26日

关于CR0寄存器

摘要: 开始的时候,我认为CR0.WP如果被置位,那么内存的页面只读属性将会失效,导致可以被写入数据。 这几天正好碰到一个问题,查看了资料才发现,之前的理解不完整。 引用Intel手册中的一句话: CR0.WP allows pages to be protected from supervisor-mode writes. If CR0.WP = 0, supervisor-mode writeaccesses are allowed to linear addresses with read-only access rights; if CR0.WP = 1, they are not.... 阅读全文

posted @ 2014-02-26 09:13 emissary 阅读(1120) 评论(0) 推荐(0) 编辑

2014年2月13日

MDL的一些理解

摘要: 驱动程序要操作一个用户模式下的内存(32位下小于2G),那么是有风险的,因为用户模式下当前进程的线程不断切换,用户模式下的地址可能会无效。这时的操作将会有未知结果。用MDL系统API可以将用户模式下的内存锁定并换到系统地址内存上(大于2G)。这样操作不会有风险。(其实都是同一块物理内存,只是,驱动和应用系统都只能操作虚拟内存,MDL的作用在于跟踪一段虚拟地址空间所对应的物理页面集合)IoAllocateMdl分配了一个MDL的结构(sizeof(MDL)+(sizeof(PFN_NUMBER)*IOP_FIXED_SIZE_MDL_PFNS),并根据传入参数VirtualAddress和Len 阅读全文

posted @ 2014-02-13 12:29 emissary 阅读(1239) 评论(0) 推荐(0) 编辑

2013年5月20日

关于 Socket 的安全问题

摘要: 今天看了些资料,了解了下 Socket 的安全问题,特别是端口复用方面。首先,微软从2003后就开始增强服务器操作系统的安全性比如,在03之前的操作系统中,只要第一个 Socket 不设置 SO_EXCLUSIVEADDRUSE,那么第二个 Socket 做Bind 使用 SO_REUSEADDR 都会成功。First bind callSecond bind callDefaultSO_REUSEADDRSO_EXCLUSIVEADDRUSEWildcardSpecificWildcardSpecificWildcardSpecificDefaultWildcardINUSEINUSESuc 阅读全文

posted @ 2013-05-20 00:03 emissary 阅读(1386) 评论(0) 推荐(0) 编辑

2013年1月17日

关于 WinDbg 调试驱动时的一个小问题

摘要: 问题来自我在看雪BBS上发的一个求助贴 【求助】关于系统回调 PsSetLoadImageNotifyRoutine 的时机问题。http://bbs.pediy.com/showthread.php?t=161196原由是我在做 IAT 注入时,发现当系统回调 PsSetLoadImageNotifyRoutine 函数的时候。我用 WinDbg 内存显示,发现那时候PE文件一些节并没有映射到内存中。从而认为那些无效内存是系统无法利用的。进而产生了疑惑。其实DDK里说得比较明白了,原文如下:The PsSetLoadImageNotifyRoutine routine registers a 阅读全文

posted @ 2013-01-17 15:27 emissary 阅读(1214) 评论(0) 推荐(0) 编辑

2013年1月6日

记录一些重要的运行时函数

摘要: Summary of Kernel-Mode Safe String FunctionsThe following table summarizes the safe string functions that are available to kernel-mode drivers, and it indicates the C/C++ language runtime library functions that they replace. If a function's name contains Cb, the function treats strings as byte-c 阅读全文

posted @ 2013-01-06 23:27 emissary 阅读(546) 评论(0) 推荐(0) 编辑

派遣例程和 IRQLs

摘要: Dispatch Routines and IRQLsMost drivers' dispatch routines are called in an arbitrary thread context at IRQL = PASSIVE_LEVEL, with the following exceptions:Any highest-level driver's dispatch routines are called in the context of the thread that originated the I/O request, which is commonly 阅读全文

posted @ 2013-01-06 19:08 emissary 阅读(249) 评论(0) 推荐(0) 编辑

记录几个网址

摘要: Driver to Hide Processes and Fileshttp://www.codeproject.com/Articles/32744/Driver-to-Hide-Processes-and-FilesDriver to Hide Processes and Files. Second Edition: Splicinghttp://www.codeproject.com/Articles/167583/Driver-to-Hide-Processes-and-Files-Second-EditionSimple antirootkithttp://apriorit.com/ 阅读全文

posted @ 2013-01-06 13:55 emissary 阅读(148) 评论(0) 推荐(0) 编辑

2012年12月13日

学习,再学习

摘要: 从当当一口气买了N本书,主要是考虑三个方面的东西:1.如果要作为管理者,那么在角色转变之前,应该学习什么。2.作为项目经理,怎么才能管理好项目,带领团队为公司创造财富。3.已做了多年的研发,但在汇编这一技术面上,我仅仅在反汇编,逆向工程上有点涉猎,但并不精通正向汇编(写代码)。以下是我优选的几本书,应该都是很好的书籍。 阅读全文

posted @ 2012-12-13 16:53 emissary 阅读(176) 评论(0) 推荐(0) 编辑

2012年10月11日

病毒与反病毒的战争

摘要: 病毒与反病毒的战争是永远不会停息的。入侵与防御的战争是永远不会停息的。其实现在这个圈子真的跟以前不一样了,什么东西都是商业化,而且有好技术好思路,也很少有人会公布,当然,你第一次公布,第二天安全软件就盯上了,第三天技术失效,谁也不傻。于是,现在网上基本上没啥有价值的信息了。长远下来,看起来好像是安全防御一方占了绝对的优势地位。但是在我看来,这只是表面现象,在真正大牛的眼中,什么反病毒软件,什么IDS,IPS,都是浮云。那些个大牛是用来膜拜的,我望望就行了,不指望某一天天上掉个“漏洞”下来正好砸到我。但仔细想想,安全防御还真是短板原理,只要有一处有问题,那么,整个系统都是浮云了。你弄个几米厚的钢 阅读全文

posted @ 2012-10-11 01:30 emissary 阅读(245) 评论(0) 推荐(0) 编辑

导航