获得驱动器信息卷设备&&Ring3得到磁盘文件系统(NTFS WIN10)
摘要:1 // GetLogicalDriveStrings.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 #include 7 8 using namespace std; 9 10 void Sub_1();//枚举计算机的卷--->磁盘 && NTFS(win10) 11 12 13...
阅读全文
posted @
2017-09-29 21:46
czhang4
阅读(469)
推荐(0)
基础 - 获得系统版本
摘要:1 // 获得系统版本.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 7 #include //非MFC字符串对象 8 #include //MFC字符串对象 9 10 #include 11 12 using namespace std; 13 14 15 16 17 int...
阅读全文
posted @
2017-09-20 21:16
czhang4
阅读(345)
推荐(0)
基础 - 是否存在摄像头
摘要:1 // 是否存在摄像头.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 7 #include 8 #pragma comment(lib,"Vfw32.lib") 9 10 #include 11 12 using namespace std; 13 14 15 BOOL IsCa...
阅读全文
posted @
2017-09-20 21:03
czhang4
阅读(164)
推荐(0)
基础 - 获得CPU主频
摘要:1 // 获得cpu主频.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 #include 7 8 using namespace std; 9 10 DWORD CPUClockMHz(); 11 12 int main() 13 { 14 DWORD CPUMHz; 15...
阅读全文
posted @
2017-09-20 20:54
czhang4
阅读(382)
推荐(0)
文件管理 - Ring3创建目录
摘要:1 //多字符集 2 3 #include "stdafx.h" 4 #include 5 #include 6 7 using namespace std; 8 9 BOOL MakeSureDirectoryPathExists(char* DirectoryFullPath); 10 11 int main() 12 { 13 char* Direct...
阅读全文
posted @
2017-09-16 14:49
czhang4
阅读(184)
推荐(0)
笔记函数 - Ring0 Sleep()
摘要:1 #define DELAY_ONE_MICROSECOND (-10) 2 #define DELAY_ONE_MILLISEND (DELAY_ONE_MICROSECOND*1000) 3 void Sleep(LONG Millisend) 4 { 5 LARGE_INTEGER Interval; 6 Interval.QuadPart = DELAY_ONE_M...
阅读全文
posted @
2017-09-16 14:46
czhang4
阅读(250)
推荐(0)
DeviceIOControl与驱动层 - 缓冲区模式
摘要:IO交互模式中的DeviceIOControl与驱动层交互有三种:缓冲区模式、直接访问模式、其他模式,这里本人学习的是缓冲区访问模式,原理如图: 驱动中最好不要直接访问用户模式下的内存地址,使用缓冲区方式可以避免程序员访问内存模式下的内存地址。Win32API DeviceIoControl的内部,
阅读全文
posted @
2017-09-15 10:06
czhang4
阅读(1079)
推荐(0)
安卓权威编程指南 - 第五章学习笔记(两个Activity)
摘要:学习安卓编程权威指南第五章的时候自己写了个简单的Demo来加深理解两个Activity互相传递数据的问题,然后将自己的学习笔记贴上来,如有错误还请指正。 IntentActivityDemo学习笔记 题目:ActivityA登录界面(用户名、密码、登陆按钮),ActivityB(Edit,返回按键:
阅读全文
posted @
2017-09-12 18:57
czhang4
阅读(375)
推荐(0)
Ring0 - 链表
摘要://一般驱动层不使用数据结构,一般Ring3层 双向链表可以将链表形成一个环.BLINK指针指向前一个元素,FLINK指针指向下一个元素.typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink
阅读全文
posted @
2017-09-10 11:35
czhang4
阅读(314)
推荐(0)
Ring0 - Lookaside结构
摘要:由于频繁的申请,回收内存会导致在内存上产生大量的内存"空洞".这时使用Lookaside. 1.每次申请固定大小的内存. 2.申请和回收的操作十分频繁. 实现原理: 他先向windows申请了一块比较大的内存.而后以后申请内存都从Lookaside对象申请.这样就会避免内存"空洞",Lookasid
阅读全文
posted @
2017-09-10 11:35
czhang4
阅读(371)
推荐(0)
Ring0创建事件Ring3设置事件
摘要:同步事件(synchronizationEvent)当事件对象为激发时,如遇到KeWaitForXX等内核函数,事件对象则自动变回未激发态通知事件(NotificationEvent)当事件对象为激发时,如遇到KeWaitForXX等内核函数,事件对象则不会自动变回未激发态 Ring0(创建事件).
阅读全文
posted @
2017-09-09 12:37
czhang4
阅读(398)
推荐(0)
Ring3创建事件Ring0设置事件
摘要:应用程序中创建的事件和在内核中创建的事件对象,本质上是同一个东西,在用户模式中,他用句柄表示,在内核模式下,他用KEVENT表示数据结构表示。在应用程序中,所有的内核对象都不会被用户看到,用户看到的知识代表内核对象的对象句柄。这个代码就是要在Ring3与RIng0之间用一个事件对象。解决的第一个问题
阅读全文
posted @
2017-09-09 12:34
czhang4
阅读(445)
推荐(0)
计时器
摘要:1 // 计时器.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 #include 7 #include 8 using namespace std; 9 10 BOOL __IsLoop = TRUE; 11 12 13 void GetSystemTime(); 14 DWORD W...
阅读全文
posted @
2017-09-08 21:18
czhang4
阅读(164)
推荐(0)
让可等待的计时器添加APC调用
摘要:1 // TimerAPCRoutine.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 #include 7 #include 8 9 10 using namespace std; 11 12 13 void GetSystemTime(); 14 VO...
阅读全文
posted @
2017-09-08 21:18
czhang4
阅读(336)
推荐(0)
IRQL Ring0实现
摘要:一,IRQL的定义Interrupt ReQuest Level DDK对IRQL的定义是:中断请求级(IRQL)标示中断的优先级。处理器在一个IRQL上执行线程代码,IRQL是帮助决定线程如何被中断的。每个处理器都有自己的中断IRQL。 在同一处理器上,线程只能被更高级别IRQL的线程能中断。也就
阅读全文
posted @
2017-09-08 20:47
czhang4
阅读(1001)
推荐(0)
基础 - 获得系统时间
摘要:1 #include "stdafx.h" 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 void Method_1(); 9 void Method_2(); 10 void Method_3(); 11 void Method_4(); 12 void Method_5...
阅读全文
posted @
2017-09-06 10:33
czhang4
阅读(185)
推荐(0)
方法 - ShellCode测试
摘要:1.下断点 2.调试->反汇编 3.进入VirtualAddress (F11) 还有一些软件,x86下我用这个作为参考: 链接:http://pan.baidu.com/s/1c2Elh52 密码:2utn
阅读全文
posted @
2017-09-06 10:31
czhang4
阅读(447)
推荐(0)
方法 - 调试Dll方法
摘要:1.exe加载dll 2.Dll属性设置2.1运行exe生成Debug/...exe2.2属性->调试->命令-> 改成 ./Debug/调试Dll.exe ../Debug/调试Dll.exe 也可以 3.Dll设置断点 4.Dll设为启动项目 5.F5调试
阅读全文
posted @
2017-09-01 10:32
czhang4
阅读(723)
推荐(0)