上一页 1 2 3 4 5 6 7 ··· 39 下一页

2021年11月2日

摘要: x86-6-特权级-1-调用门(32-Bit Call Gate) 调用门有一个关键的作用,就是用来提权。调用门其实就是一个段。 调用门: 这是段描述符的结构体,里面的s字段用来标记是代码段还是数据段还是系统段,前面解析的时候讲的是 S==1的情况,也就是Code or data的情况,这次的调用门 阅读全文
posted @ 2021-11-02 03:12 Sna1lGo 阅读(787) 评论(0) 推荐(0)

2021年10月26日

摘要: 反调试——11——检测TF标志寄存器 在intel的x86寄存器中有一种叫标志寄存器: 标志寄存器中的TF(Trap Flag)位,CPU在执行完一条指令后,如果检测到标志寄存器的TF位为1,则会产生一个int 1中断,然后再将TF置为0,后进行int 1中断后继续执行。操作系统上可以视为异常。 再 阅读全文
posted @ 2021-10-26 00:16 Sna1lGo 阅读(686) 评论(0) 推荐(0)

2021年10月25日

摘要: 反调试——10——检测进程和窗口 检测一些常见的调试器的进程以及窗口是否存在也可以作为一种反调试的手段。 这个比较简单就直接上代码了: #include<Windows.h>#include<iostream>#include<tlhelp32.h>using namespace std;​void 阅读全文
posted @ 2021-10-25 19:12 Sna1lGo 阅读(250) 评论(0) 推荐(0)

2021年10月22日

摘要: Windows内核开发-10-监听对象 Windows内核除了可以监听进程,线程、dll还可以监听特定的对象和注册表。这里先讲一下监听对象。 监听对象 内核提供了一种可以监听对特定的对象类型的句柄进行打开或复制的机制。正式支持的对象类型有进程和线程,Windows10还支持一个桌面对象(桌面对象这个 阅读全文
posted @ 2021-10-22 02:23 Sna1lGo 阅读(781) 评论(0) 推荐(1)

2021年10月19日

摘要: Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行。这是为什么呢。 原因是在x64的Windows操作系统上,模拟了x86操作系统的操作,并且引入了一个WOW64子系 阅读全文
posted @ 2021-10-19 21:17 Sna1lGo 阅读(869) 评论(2) 推荐(5)

2021年10月15日

摘要: 这个博客没啥大用,就感觉对Windows内核开发的概念就记在这里了,应该会长期更新。 驱动类型: 驱动可以分为很多类型,常见的有NT,WDM,WDF驱动,其中NT是最简单的。 WDM是NT上引入的一套驱动模型,支持一些额外的东西。WDF是对WDM的封装和升级简化了驱动。驱动大同小异,NT驱动是驱动中 阅读全文
posted @ 2021-10-15 15:36 Sna1lGo 阅读(264) 评论(0) 推荐(0)

2021年10月11日

摘要: 反调试——9——调试器原理 调试一个程序分两种情况: 1 打开这个程序。 2:这个程序已经是一个运行状态了,将其进程进行附加。 打开进程 通过打开运行进程方式来调试进程需要调用一个API: BOOL CreateProcessA( LPCSTR lpApplicationName, LPSTR lp 阅读全文
posted @ 2021-10-11 23:12 Sna1lGo 阅读(612) 评论(2) 推荐(1)
 
摘要: 反调试——8——虚拟机检测 其实虚拟机检测也无外乎就是检测一些虚拟机特有的特征,然后来判断是否是在虚拟机里面,比如说这里(查看系统中运行的服务): 但是不能直接盲目的通过VMware这六个关键字母就判断是在虚拟机里面了,因为你的电脑如果开了虚拟机,也会有一些VMware开头的虚拟机服务: 所以我们必 阅读全文
posted @ 2021-10-11 02:28 Sna1lGo 阅读(1033) 评论(2) 推荐(0)

2021年10月9日

摘要: 反调试——7——CRC检测 CRC32: CRC的全称是循环冗余校验,作用是为了检测数据的完整性。 CRC32的检测原理: 程序被编译后,代码段是固定的,因为已经被写死了。 我们在调试程序的时候,打断点或者修改代码都会影响CRC32的值,这个时候只需要检测CRC32的某一时刻值和最初的CRC32值是 阅读全文
posted @ 2021-10-09 23:25 Sna1lGo 阅读(1433) 评论(0) 推荐(0)
 
摘要: #include"CRC32.h" #include<Windows.h> #include<iostream> using namespace std; void test1() { int a = 1; cout << "1111111111111111111111" << endl; } vo 阅读全文
posted @ 2021-10-09 23:24 Sna1lGo 阅读(326) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 39 下一页