摘要: #include <windows.h>#include <stdio.h>#define MAC_FILENAMELENOPATH 256void FindFileInDir(char* rootDir, char* strRet)//第一个参数是输入的目录名,第二个参数是存放所有文件的缓冲{ char fname[MAC_FILENAMELENOPATH]; ZeroMemory(fname, MAC_FILENAMELENOPATH); WIN32_FIND_DATA fd; ZeroMemory(&fd, sizeof(WIN32_FIND_DATA)) 阅读全文
posted @ 2012-12-07 10:07 小金马 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 如果是32 位的OS,一般HANDLE 是一个4个字节,所以每次移动只能4个字节,速度表较慢,能不能更快呢?下面让我们看一下文件映射的优势。(1) (CreateFileMapping) 创建一个文件映射内核对象。(2) (MapViewofFile) 将一个文件映射对象映射到当前应用程序的地址空间。---------------------------------------------------------------------------------------------------------CreateFileMapping : 创建一个新的文件映射内核对象。HANDLE Cr 阅读全文
posted @ 2012-12-07 10:05 小金马 阅读(757) 评论(0) 推荐(0) 编辑
摘要: DirectX9.0 SDK 开发包版本较多,DirectX9.0b 版本之前的SDK 包基本是完整的, DirectX9.0c 版本的SDK 包大多是升级包,里面并未附带DirectShow 部分,故不能 单独使用。 微软DirectX9.0b SDK 完整包的下载地址: http://download.microsoft.com/download/b/6/a/b6ab32f3-39e8-4096-9445-d38e6675de8 5/dx90bsdk.exe 完整的安装过程: 1. 解压并运行dx90bsdk.exe,按默认设置完成资源文件的安装。 2. 用Visual C++编译Dire 阅读全文
posted @ 2012-12-07 10:03 小金马 阅读(7275) 评论(0) 推荐(0) 编辑
摘要: //---------------------------------------创建进程流程---------------------------------------------call kernel32!CreateProcessABOOL WINAPI CreateProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWO 阅读全文
posted @ 2012-12-07 10:01 小金马 阅读(2951) 评论(0) 推荐(0) 编辑
摘要: 1. BC++ 程序启动反汇编A1 A8534BB00 MOV EAX,DWORD PTR DS:[4B53A8]C1E0 02 SHL EAX,2A3 AC534B00 MOV DWORD PTR DS:[4B53AC],EAX57PUSH EDI51 PUSH ECX33C0 XOR EAX,EAXBF 88DA4C00 MOV EDI,BC++.004CDA88B9 C0358D00 MOV ECX,BC++.008D35C03BCF CMP ECX,EDX76 05 JBE SHORT BC++.004010242BCF SUB ECX,EDIFC CLD............... 阅读全文
posted @ 2012-12-07 09:59 小金马 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 1.什么是句柄. 句柄是应用程序建立或使用的对象所使用的一个唯一的整数值(通常是32位),Windows要使用各种各样的句柄来标识诸如应用程序实例,窗口,图标,菜单,输出设备,文件等对象. Windows是一个以虚拟内存为基础的操作系统,这种环境下,Windows内存管理器经常在内存中来回移动对象,依次满足各种应用程序的需要,对象被移动了,意味着地址就变.因此,Windows操作系统用一块内存地址,用来专门登记各种应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的,Windows内存管理器在移动对象在内存的位置后,把对象新的地址告知这个句柄保存,这样我们只需记住这个句柄地址就 阅读全文
posted @ 2012-12-07 09:46 小金马 阅读(4175) 评论(0) 推荐(0) 编辑
摘要: 用户态轻松ntdll中的native api 调用方式一(一般方式):第一步:声明函数指针 比如我们需要调用NtCreateFile函数,那么我们就需要根据NtCreateFile的定义来声明一个相同类型的函数指针(这样做会让编译器比较高兴)typedefNTSTATUS(*MyNtCreateFile)(OUTPHANDLEFileHandle,INACCESS_MASKDesiredAccess,INPOBJECT_ATTRIBUTESObjectAttributes,//OUTPIO_STATUS_BLOCKIoStatusBlock,OUTPVOIDIoStatusBlock,INPL 阅读全文
posted @ 2012-12-07 09:44 小金马 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 用户、认证和对象安全Windows系统具有很完善的安全和认证机制,称作访问控制机制。程序的执行主体(线程)在访问对象(文件、事件等)时,系统会根据线程的“权限”和线程需要访问的对象所具有的访问控制列表(ACL)中的“安全描述符”是否匹配来进行认证,决定一个线程是否可以操作一个对象。1. 关于权限、访问控制列表、安全描述符等在安全认证中所依赖的数据结构,并重点讲解安全认证的过程A需要访问(Access)B,A就是访问的主体,B就是访问的客体。A的“访问令牌”和B的安全描述符共同决定了A是否可以访问B.访问的主体是进程。在系统中,线程才是程序执行的流程,因此只有线程才能操作对象。每个线程都是属于一 阅读全文
posted @ 2012-12-07 09:41 小金马 阅读(1813) 评论(0) 推荐(1) 编辑
摘要: Wnndows 用户1.1 创建用户NetUserAdd API函数可以实现在系统中创建用户的功能,函数原型如下:NET_API_STATUS NetUserAdd( LPCWSTR servername, //用户的主机名,如果是本机设置为NULL DWORD level, //设置为1,2,3,4决定buf参数的结构 LPBYTE buf, //USER_INFO_1, USER_INFO_2, USER_INFO_3, USER_INFO_4 LPDWORD parm_err//);typedef struct _USER_INFO_1 { LPWSTR usri1_name; LPWS 阅读全文
posted @ 2012-12-07 09:36 小金马 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 1. 数据类型 LIST_ENTRY说明:内核使用该结构将所有对象维护在一个双向链表中。一个对象分属多个链表是很常见的, Flink 成员是一个向前链接指向下一个 LIST_ENTRY 结构, Blink 成员则是一个向后链接,指向前一个 LIST_ENTRY 结构。通常情况下,这些链表都成环形,也就是说,最后一个 Flink 指向链表中的第一个 LIST_ENTRY 结构,而第一个 Blink 指向最后一个。这样就很容易双向遍历该链表。如果一个程序要遍历整个链表,它需要保存第一个 LIST_ENTRY 结构的地址,以判断是否已遍历了整个链表。如果链表仅包含一个 LIST_ENTRY 结构,那 阅读全文
posted @ 2012-12-07 09:35 小金马 阅读(752) 评论(0) 推荐(0) 编辑