10 2021 档案
反调试——11——检测TF标志寄存器
摘要:反调试——11——检测TF标志寄存器 在intel的x86寄存器中有一种叫标志寄存器: 标志寄存器中的TF(Trap Flag)位,CPU在执行完一条指令后,如果检测到标志寄存器的TF位为1,则会产生一个int 1中断,然后再将TF置为0,后进行int 1中断后继续执行。操作系统上可以视为异常。 再
阅读全文
反调试——10——检测进程和窗口
摘要:反调试——10——检测进程和窗口 检测一些常见的调试器的进程以及窗口是否存在也可以作为一种反调试的手段。 这个比较简单就直接上代码了: #include<Windows.h>#include<iostream>#include<tlhelp32.h>using namespace std;void
阅读全文
Windows内核开发-10-监听对象
摘要:Windows内核开发-10-监听对象 Windows内核除了可以监听进程,线程、dll还可以监听特定的对象和注册表。这里先讲一下监听对象。 监听对象 内核提供了一种可以监听对特定的对象类型的句柄进行打开或复制的机制。正式支持的对象类型有进程和线程,Windows10还支持一个桌面对象(桌面对象这个
阅读全文
Windows内核开发-9-32位和64位的区别
摘要:Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行。这是为什么呢。 原因是在x64的Windows操作系统上,模拟了x86操作系统的操作,并且引入了一个WOW64子系
阅读全文
Windows内核开发-额外篇-杂乱知识
摘要:这个博客没啥大用,就感觉对Windows内核开发的概念就记在这里了,应该会长期更新。 驱动类型: 驱动可以分为很多类型,常见的有NT,WDM,WDF驱动,其中NT是最简单的。 WDM是NT上引入的一套驱动模型,支持一些额外的东西。WDF是对WDM的封装和升级简化了驱动。驱动大同小异,NT驱动是驱动中
阅读全文
反调试——9——调试器原理
摘要:反调试——9——调试器原理 调试一个程序分两种情况: 1 打开这个程序。 2:这个程序已经是一个运行状态了,将其进程进行附加。 打开进程 通过打开运行进程方式来调试进程需要调用一个API: BOOL CreateProcessA( LPCSTR lpApplicationName, LPSTR lp
阅读全文
反调试——8——虚拟机检测
摘要:反调试——8——虚拟机检测 其实虚拟机检测也无外乎就是检测一些虚拟机特有的特征,然后来判断是否是在虚拟机里面,比如说这里(查看系统中运行的服务): 但是不能直接盲目的通过VMware这六个关键字母就判断是在虚拟机里面了,因为你的电脑如果开了虚拟机,也会有一些VMware开头的虚拟机服务: 所以我们必
阅读全文
反调试——7——CRC检测
摘要:反调试——7——CRC检测 CRC32: CRC的全称是循环冗余校验,作用是为了检测数据的完整性。 CRC32的检测原理: 程序被编译后,代码段是固定的,因为已经被写死了。 我们在调试程序的时候,打断点或者修改代码都会影响CRC32的值,这个时候只需要检测CRC32的某一时刻值和最初的CRC32值是
阅读全文
反调试--CRC检测
摘要:#include"CRC32.h" #include<Windows.h> #include<iostream> using namespace std; void test1() { int a = 1; cout << "1111111111111111111111" << endl; } vo
阅读全文
反调试——6——附加进程反调试(1)
摘要:反调试——6——附加进程反调试 经常在给调试器附加进程时进程直接崩溃了,比如说用比较常见的ollydbg没有加任何处理来附加DNF就会直接崩溃。 附加调试流程 debugger(调试器)在调用DebugActiveProcess来附加进程后,进程中有多少个线程,调试器就会发送多少个CREATE_TH
阅读全文
反调试——5——检测调试对象
摘要:反调试——5——检测调试对象 有一些内容采用的是WRK里面的定义。因为这个算是没有公开的文档,公开的不能这样使用。 查询父进程实现反调试 正常打开(双击运行)的程序的父进程是explorer.exe(资源管理器)(Windows的内置机制),通过查询父进程的ID是否是explorer.exe来判断程
阅读全文
反调试——4——硬件断点反调试
摘要:反调试——4——硬件断点反调试 首先需要明白什么是硬件断点,硬件断点其实是通过一个调试寄存器来实现的,这个调试寄存器是CPU上的东西,就是前面截图的这个东西,叫做Debug Registers,在intel手册卷3 17章第二节里面)。 DR0-DR3为设置断点的地址,DR4和DR5为保留内容。DR
阅读全文
浙公网安备 33010602011771号