自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 内核上项目【通信】

获取ExRegisterAttributeInformationCallback中ExpDisSetAttributeInformation、ExpDisQueryAttributeInformation全局变量位置,并将其置为0,以实现执行到注册的目标回调函数。箭头所标记位置进行判断全局变量ExpDisSetAttributeInformation、ExpDisQueryAttributeInformation是否为空,如果不为空就不进行注册,所以需要在操作步骤一中将其进行置0。进行通信,最后一项的。

2023-12-12 22:27:44 240 1

原创 内核上项目【获取模块】

在Win7 64位系统编写驱动获取目标进程的模块地址。

2023-11-04 19:13:14 196

原创 APC学习记录

插入过程主要是根据参数决定APC插入链表的位置执行过程主要是先执行参数的KernelRoutine的代码,如果有NormalRoutine则跳到三环去遍历执行再回到内核,以此往复将链表中的所有APC执行完毕。

2023-10-28 19:16:16 616

原创 指定PID句柄提权

上一节句柄降权是降权驱动将我们CE中的私有句柄表的DbgVIew成员权限给换了,所以我们的方案就是将这个权限提升回去,但是这样就会出现一闪一闪的样子,因为降权驱动一遍在降权提权驱动一遍在提权,所以这时候的思路是让降权驱动失效。根据上节我们可以看到降权驱动是在判断CE中的私有句柄表中是否有DbgView的句柄,那么办法就是换掉这个CE私有句柄表中的DbgView句柄,但是新的DbgView句柄中内容和原来保存的是一致的,代码如下。3.在驱动中抹除CR3、PID、名称只是为了防止更深层检测,并不影响提权。

2023-07-28 12:39:26 542

原创 指定PID句柄降权

遍历指定PID进程的私有句柄表,如果发现其有DbgView.exe进程的EPROCESS则将其句柄权限进行修改,俗称句柄降权。

2023-07-26 16:01:25 244

原创 隐藏句柄表防止结束进程

三环传入一个指定的PID,驱动将保护通过删除目标进程的句柄表和PID,这样在任务管理器中将无法结束进程(注意:虽然任务管理器无法结束,但是由于VMware注册了一个回调函数,导致只要自身关闭会发生蓝屏,所以需要把VM3DMP.sys去掉)我所使用的系统是Win7 sp1,不同的系统特征码等也会不一样,请自行提取。

2023-07-24 15:30:01 239

原创 微过滤驱动实现保护特定程序

minifiter驱动,实现对特定的文件进行保护,防止打开、删除、修改属性等。三环程序C语言实现Minifilter动态安装与卸载。1.首先链接器的附加依赖项中导入。原型如下,其中第二参数是最重要的。

2023-07-14 15:07:51 316

原创 Windows内核编程【对象和注册表通知】

那么接下来就可以直接使用了,注册时给各个参数赋值,然后在回调函数中对获取的信息进行操作(以下代码是从链接中改写过来的)可以看到有两个参数,第一个参数是为了更好的描述回调中的相关信息,第二个参数是返回注册后的回调句柄。不好理解,这是因为回调的时候有处理操作前和处理操作后,还有删除注册表和设置键值等等这种类型,所以在。实验结果如下,在任务管理器中无法直接终止目标程序,但是程序自身可以将自己退出,原理就是在。那么接下来就要看申请的空间中存放的是什么数据,可以观察到在上方。所对应的不同的值,上图中结构类型就是。

2023-07-12 22:51:27 357

原创 句柄表学习记录

句柄表分为全局句柄表与私有句柄表。

2023-07-11 11:24:21 59

原创 线程被动切换【时钟中断】

线程切换的三种情况1.当前线程主动调用API:API函数–>KiSwapThread–>KiSwapContext–>SwapContext2.当前线程的时间片到期:KiDispatchInterrrupt–>KiQuantumEnd–>KiSwapContext–>SwapContext3.有备用线程:KiDispatchInterrrupt–>SwapContext4.如果时钟中断的时候时间片没有到期且没有备用线程,那么函数会直接返回,不会发生线程切换第一种是主动调用到内核API发送的,所以叫。

2023-07-10 17:32:16 80

原创 反沙箱相关学习记录【SetErrorMode】

这个反沙箱个人感觉和反调试类似,一个是查看调试与非调试状态的区别,一个是查看真实主机与虚拟机或沙箱的区别。之前也遇到很多但是没有做总结,所以将常见的总结到这个文章中。

2023-07-07 11:58:13 67

原创 反调试与反反调试相关学习记录

除了以上的方式外,修改EPROCESS的flags或者_OBJECT_HEADER中的Flags等等,各种方法其实本质就是对整个系统中所出现调试状态与非调试状态的区别,然后加以利用判断出其是非调试还是调试状态。

2023-07-07 10:43:12 168

原创 Windows内核编程【进程和线程通知】

Windows 内核编程》作者: [美] 帕维尔·约西福维奇(Pavel Yosifovich)(可以获取命令行等更多信息,创建注销是同一个函数)(注销,没有回调机制)

2023-07-05 15:57:53 234

原创 KiSwapThread逆向分析

这个函数主要功能是寻找一个新的线程,然后切换线程并判断是否是同一进程,进而判断是否要切换CR3,而切换线程的本质就是切换堆栈也就是esp(从下面的分析图片中可以看出)在这个函数当中会有很多与主线无关的汇编代码,但是并不影响主线的分析,所以基本遇到这种直接跳过,那么我们接下来说一下主线的逆向分析结果。

2023-07-03 00:23:15 522

转载 恶意代码分析工具集

字符串查找工具查看资源节内容。

2023-06-28 14:08:24 1161

原创 KiFindReadyThread逆向分析

每个核都有32个链表,在运行时该核触发时钟中断后,会寻找32位数组链表从大到小遍历每个线程,如果遍历的目标线程的亲核性就是运行的本核心,那么从就绪链表中摘除它,并将该线程的NextProcessor进行更改为新的核心的KPRCB.Number这里其实很好理解,就好比这个32位数组链表就是一个线程池,每个CPU需要切换线程的时候就从里面遍历看看谁的亲核性是自己,然后再从里面拿出该线程。

2023-06-27 14:55:20 429

原创 内核断链(ActiveProcessLinks)

3.在这个程序中没有直接使用EPROCESS+0xE8是为了兼容所有系统,而且通过搜寻特征的方法可以躲避各种检测。2.将其转换为大写匹配是否是目标程序,如果是则通过寻找目标EPROCESS结构体的。1.首先通过遍历所有的PID,使用。函数得到目标进程的全路径名称。

2023-06-23 17:07:34 195

原创 SSDT HOOK

1.首先通过MmCreateSection、MmMapViewInSystemSpace将ntdll加载到内存中,然后进行导出表搜索找到目标函数的服务号。2.然后通过内核导出的变量KeServiceDescriptorTable进而找到SSDT表。3.最后通过在SSDT表修改目标函数地址为自定义地址即可。

2023-06-22 21:49:59 177

原创 内核线程同步【待更新实现代码】

1.互锁操作如:InterlockedCompareExchange2.分发器对象也被称为可等待对象,通过KeWaitForSingleObject 和 KeWaitForMultipleObjects实现等待的目标函数都属于可等待对象3.互斥量注意:如果某个线程是一个互斥量的拥有者,那么此线程是唯一能释放该互斥量的线程(KeInitializeMutex)4.快速互斥量只能在内核中使用,也是比较常用的一种,故名思意速度要比普通的互斥量块(ExAcquireFastMutex )

2023-06-13 15:12:11 52

原创 Havoc开源框架编译过程

这里是大坑,因为这个是作者写的一个脚本,它通过下载一个名为x86_64-w64-mingw32-cross.tgz文件,然后解压这个文件,问题就出在这里,有时候它下载失败或者解压不成功它不提示,所以这里需要找到作者提供的那个Install.sh的脚本,通过里面的命令自己去下载解压,然后才能使用下面这个命令来编译服务端。不得不说这linux坑就是多,整个过程完全看脸,有的人能直接编译通过一个问题遇不到,有的全程都有问题。这里是个坑,用go mod需要设置一下两个环境变量,这样才能使用go mod下载成功。

2023-06-09 12:08:10 618 4

原创 IDA中文函数命名

1.在ida.cfg文件中搜索Block_CJK_Unified_Ideographs,去掉Block_CJK_Unified_Ideographs这一行前面的注释。2.将ida.dll文件放入IDA64中,然后字符串搜索。,将其有下划线这一行nop掉。

2023-06-05 14:14:07 195

原创 免费的反反调试插件汇总【实时更新】

在对抗反调试时经常需要用到的一些反反调试插件,于是将其中免费的总结如下。

2023-06-05 12:17:45 321

原创 Windows 内核编程【驱动程序:从头到尾】

本章主要因为Windows的API功能太弱,只能对线程设置几个级别,于是调用驱动的API来进行设置线程优先级别,于是客户端与驱动的代码如下。

2023-05-31 15:58:00 385

原创 OpenSSL之RSA学习

我使用的是OpenSSL 1.1.1版本,在对项目的设置中在我前面的文章有提到,除此之外因为这个代码有部分地方会触发堆栈异常,但是我并没有找到是在哪里,所以还需要在代码生成选项中->基本运行时检测改为默认值。

2023-05-30 17:54:57 376

原创 OpenSSL之SHA256学习

用到的函数主要有以下几个:1.用于初始化一个SHA256_CTX结构体2.用于添加文件块来更新SHA2563.获取文件的SHA2564.SHA256获取字符串的SHA256。

2023-05-30 11:04:39 1393

原创 从0到1简单开始使用OpenSSL

2.在VS中新建一个空白项目,然后在设置中将OpenSSL中的include包含目录和lib库目录都填写到VC++目录中,如下图。3.最后在链接器的附加依赖库中添加所需的lib,我使用的是libssl.lib和libcrypto.lib。答:安装OpenSSL时有两个版本的,安装了x64就只能编译x64版本的程序,不然会出现各种错误,如图所示。1.下载好合适的版本后,直接安装(一直下一步),最后在环境变量中添加安装后的bin目录,如下图。1.明明已经安照步骤填写了,为什么依然找不到目标文件?

2023-05-30 10:34:13 66

原创 关于OpenSSL1.1.1版本AES_decrypt奇怪问题

原本这里在malloc分配内存时应该有相应的信息标志,也就是4个0xfd,但是在调用完之后会给我清空了,这就导致我直接free这块内存直接失败。第一次使用OpenSSL库,想用用里面的算法,发现在使用AES_decrypt时会直接将解密后的内存尾部的四字节全部清0。既然它给我们清空了,那我们就自己修复吧,在它解密完后的字符串末尾再增加4个0xfd,于是代码如下。

2023-05-29 17:42:41 179

原创 驱动隐藏模块

以下代码为驱动隐藏代码,代码比较简单,只需要修改一下PsCreateSystemThread函数最后一个成员,改为自己的驱动名称就可以了(注意不加后缀),这份代码与很多网上的相似,但是当我用网上的代码运行时各种蓝屏,不是少写了个取地址就是IoDriverObjectType没有声明为指针的指针,于是修复了他们写的bug。

2023-04-22 19:23:01 413

原创 SDK编程

以上内容是我在学习SDK时的收获,以后也会不断补充相应的内容,当然很多我没有写到,因为知识永远是来用的,学的多用不上也没有用。

2022-12-11 23:39:59 474

原创 office文档病毒分析整体思路

1.打开office文档时,看看加载页面是否有相关下载连接服务器等字眼,如果出现则说明利用的远程注入,直接以压缩包方式打开该文档到/word/_rels/settings.xml.rels 这个文件中查看相应的连接地址。2.进入文档后看看是否有提示说启用宏或者启用应用程序等字眼,有该提示说明有宏文件或者DDE命令,直接去宏编辑器查看宏命令,将。5.对于VBA工程锁定不可查看这种情况,可以试着使用EvilClippy工具进行解除锁定,命令如下。打开即可在文档页面查看到该DDE命令。

2022-11-14 10:39:50 1293

原创 一道关于进程通信的CTF题

【代码】一道关于进程通信的CTF题。

2022-10-24 16:24:03 117

原创 关于word中的DDE如何查看

在word当中可以内置一些代码,而这些代码有个专业名词叫做域代码,一般情况下这个代码是被隐藏了,需要在。其中里面有会置入大量数字,其实都是ASCII码,如图所示。勾选上即可看见(我使用的是WPS)

2022-10-11 15:47:31 373

原创 socket整体介绍

以上是在编写套接字的基本流程所使用的函数,不管对于服务端还是客户端而言首先调用WSAStartup,目的是为了使用socket库,不然刚开始连使用哪个库都不清楚就没有办法继续执行。随后建立socket,这样我们就有了服务端的socket,把它bind到对应的端口和地址上,这样服务端就可以监听消息了,所以接下来listen进行监听,等监听到消息那么肯定是接受客户端的请求建立连接,所以随后调用accept,最后对数据进行处理,并清理所使用的socket与库。...

2022-08-30 15:38:38 479

原创 滴水网络编程socket学习【三】

【代码】滴水网络编程socket学习【三】

2022-08-29 16:27:22 85

原创 滴水网络编程socket学习【二】

滴水网络编程阻塞式并发模式,课后习题编写处理并发的服务器,客户端在上一篇文章写过,那个就可以使用,以下是相关代码。

2022-08-29 09:43:45 95

原创 滴水网络编程socket学习【一】

滴水网络编程TCP阻塞迭代,课后习题是编写出客户端及课堂演示的服务器,进行通信,以下为我写的代码示例(后续会对这方面内容进行详细解释)

2022-08-25 17:47:40 505

原创 改变文件后缀顺序

对于正常的文件而言,文件名后缀是在最后面的.xxx,但是实际上这个顺序是可以修改的,在进行重命名的时候在重命名文本框中点击右键,选择插入unicode字符,我们可以将文件名命名成如下格式gnp.exe,这样在最前面插入unicode字符选择RLO字符,显示方式将倒过来,从而使文件名成了exe.png,这就是为什么有些奇怪的名字但是却执行的是exe。

2022-08-20 14:34:36 248

原创 结束任务与结束进程

在进行HOOK NtTerminateProcess实验时,我们使用任务管理器的结束进程将无法直接将notepad.exe结束,原因是调用了NtTerminateProcess,而我们成功HOOK了,但是对于结束任务却失败了,根本原因是因为程序自己把自身退出了,退出任务只是关闭窗口,随后notepad自己调用NtTerminateProcess将自己退出。...

2022-08-18 15:12:12 182

原创 标准以及非标准base64算法详解

标准与非标准base64算法介绍

2022-08-04 13:51:02 410

原创 修复VM tools无法安装问题

修复VM tools无法安装问题

2022-07-21 19:20:51 6121 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除