【置顶】【编程】开发笔记
日常开发遇到的一些坑,记录一下挺有意思的 多态的概念 和继承不同的是,他是根据“动作”的不同进行的分类。 在c中想要有一个数组存放既有int类型又有string类型,类似python中的{123, "AAA", "BBB", 456},但是c数组中只能存在一个类型,所以不可能。 但是我们可以定义一个type类型,int和string是他的子类,由多态的概念,可以创建一个 type* a[0x10]这样的数组,将int和string类型放在里面,其中需要的是父类引用。虽然在c++中我们可以直接传入对象的地址到数组中即可。 多态允许我们使用统一的接口来操作不同的对象,而具体执行哪个操作,则由对象自身的实际类型来决定。 多态存在的三个必要条件 继承:必须存在继承关系。 重写:子类必须对父类的方法进行重写(Override)。 父类引用指向子类对象:这是实现多态的关键代码形式。 // 父类:动物class Animal { String name; public Animal(String ...
翻译-Scoop the Windows 10 pool!
公众号:https://mp.weixin.qq.com/s/ikuiJNzbCf532qzPVqZ1YA 或许我们的公众号会有更多你感兴趣的内容 原文:SSTIC2020-Article-pool_overflow_exploitation_since_windows_10_19h1-bayet_fariello https://www.sstic.org/media/SSTIC2020/SSTIC-actes/pool_overflow_exploitation_since_windows_10_19h1/SSTIC2020-Article-pool_overflow_exploitation_since_windows_10_19h1-bayet_fariello.pdf [toc] Scoop the Windows 10 pool! Corentin Bayet and Paul Fariello [email protected] [email protected] Synacktiv 摘要:堆溢出是应用程序中一种相当常见的...
【免杀】花指令入门
公众号:https://mp.weixin.qq.com/s/dMkrp5Wi8VDIa7b57I8ikw 或许我们的公众号会有更多你感兴趣的内容 花指令(junk code)是一种专门用来迷惑反编译器的指令片段,这些指令片段不会影响程序的原有功能,但会使得反汇编器的结果出现偏差,从而使破解者分析失败。比较经典的花指令技巧有利用 jmp 、call、ret 指令改变执行流,从而使得反汇编器解析出与运行时不相符的错误代码。 这里使用这个网站进行汇编到机器码的快速查询 https://defuse.ca/online-x86-assembler.htm#disassembly 如何添加花指令 要知道如何去除,首先就要想到如何添加 1. x32 手动添加 从简单的开始,从x86 (32位)开始,因为在windows上还支持在32位中进行汇编内联 这里先用个简单的吧 jmp $+2#0: eb 00 jmp 2 <_main+0x2> 这条汇编长度是2,跳转到当前地址+2的地方,也就是说没有执行任何操作 但是MSVC的内联...
windows内核驱动 12-内核hook-1.5
前一篇写了 inline hook和ssdt两种方式,但是相关的的某些东西没讲清楚。 windows rookit防护-Kernel Hook 1.5 前一篇写了 inline hook和ssdt两种方式,但是相关的的某些东西没讲清楚。 TL,DR:介绍驱动加载的方法,PatchGuard简介,如何在测试中关闭/开启KVAS保护(Shadow SSDT中的KiSystemCall64Shadow相关),然后测试ssdt/shadow ssdt hook方法,最后内容是Shadow SSDT枚举。 Ring3 加载一个sys文件 首先有一个hello world的驱动,尝试使用命令行加载他(使用管理员权限) sc create <使用的名称> type= kernel start= demand binPath="/??/<驱动文件路径,这里应该用的是描述符格式>"sc start <使用的名称>sc stop <使用的名称>sc delete <使用的名称> sc是Service Contro...
windows内核驱动 11-内核hook-1
之前的文章 【逆向】MinHook框架代码解读简述了在用户模式下最简单的hook原理和一种框架。但是在内核当中使用hook遵循一样的原理,但是需要在部分细节上进行修改。 TL,DR:讲了内核中使用inline hook和ssdt表这两种比较基础的方式 windows rookit防护-Kernel Hook 1 基础 inline Hook 这里再次简述: 找到函数的地址 保存前n条合法的汇编指令 覆盖前n跳指令为一段跳到我们hook_func的跳板代码 在保存旧有n条指令的区域加上返回到后续地址的跳板代码,确保原始函数能被调用 所以在内核当中我们尝试依旧这样做(这里我开了测试模式,关闭了内核隔离,而且调试器开着的,暂时不需要担心patchguard。在现代windows上肯定是不行的) 那么在内核中如何找到要调用的函数呢? 在内核变成中可以使用MmGetSystemRoutineAddress获得内核函数的地址 #include <ntifs.h>#include <windef.h>VOIDDriverUnload(PDRIVER_OBJE...
windows内核驱动 10-对抗进程回调保护与注册表回调保护
越来越感觉科技树点歪了 注册表回调保护对抗 可以得到所有回调的cookie信息,从而进行对抗。 通过MmGetSystenRoutineAddross找到CmUnRegisterCallback的位置,解析保存的回调函数链表做patch。 找到全局保存的当前注册表的回调值,直接清空。 对象回调保护对抗 可以得到所有回调的handle信息,从而进行对抗。 通过MmGetSystenRoutineAddross找到ObUnRegisterCallbacks的位置,解析保存的回调函数链表到回调函数做patch。 从这里 obReg.ObjectType = PsProcessType; //注册进程的回调 解析_OBJECT_TYPE的CallbackList +0x000 TypeList : _LIST_ENTRY+0x010 Name : _UNICODE_STRING+0x020 DefaultObject : Ptr64 Void+0x028 Index : UChar+...
windows内核驱动 9-进程回调保护与注册表回调保护
又开始学内核编程 注册表回调保护 使用系统API CmRegisterCallback NTSTATUS CmRegisterCallback( [in] PEX_CALLBACK_FUNCTION Function, [in, optional] PVOID Context, [out] PLARGE_INTEGER Cookie); 指向LARGE_INTEGER变量的指针,该变量接收标识回调例程的值。 注销回调例程时,请将此值作为 Cookie 参数传递给 CmUnRegisterCallback [in] Function 指向要注册的 RegistryCallback 例程的指针。 [in, optional] Context 配置管理器将作为 CallbackContext 参数传递给 RegistryCallback 例程的驱动程序定义值 [out] Cookie 指向LARGE_INTEGER变量的指针,该变量接收标识回调例程的值。 注销回调例程时,请将此值作为 Co...
【逆向】AI如何辅助逆向工程
公众号:https://mp.weixin.qq.com/s/HuZfvvlZbM5ImOR_IoB0fw 工欲善其事必先利其器,大预言模型LLM快速发展的今天已经诞生了众多工具,从ChatGPT -> AutoGPT -> Agent -> MCP -> Skill,并且从众多CTF竞赛中已经体现出了AI的强大生产力。本篇文章将简述如何通过常用逆向工程软件,使用AI进行赋能。 或许我们的公众号会有更多你感兴趣的内容 Part I. 何为AI AI本质上是一个方程式(很粗暴的讲法) f(x)=a0+a1x+a2x2+...+anxn=∑i=0naixif(x) = a_0+a_1x+a_2x^2+...+a_nx^n = \sum_{i=0}^{n} a_ix^i f(x)=a0+a1x+a2x2+...+anxn=i=0∑naixi 其中的 xxx 可以是一个向量,不仅仅是一个数字,其中 nnn 可以理解为ai模型参数的个数。通过样本的训练我们就可以得到数列 ai{a_i}ai 的值,这样输入后就能根据公式直接得到结果了。 大语言模型...
【CTF】2026 VNCTF Re 复现与WriteUp
好久没打CTF了,得快三年了吧。有一道安卓逆向就不写了,12月重装系统后没有环境 1. ez_maze 最短路径即为flag MFC程序,常规IDA 一眼壳,上动态调试,还好是签到题,假设没有反调试 快速定位 直接运行到程序开始,定位字符串 下个断点,然后dump 然后IDA 发现验证算法的方向是反着来的。可以翻过去看看迷宫生成算法,其实在附件没更新之前的版本更好观察一点,但是直接在内存里面看更快些。 部分操作迷宫可能直接走死,没有到这个判断,跟一下rcx就行了的值,然后看rcx+0x260 还原迷宫 from collections import dequetest = [0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0...
【免杀】天堂之门
如何在32位程序塞入64位代码从而绕过hook拦截 公众号:https://mp.weixin.qq.com/s/DljrsqfemEZcblCyVYNDsQ 这里是两段汇编代码 section .data msg db "Hello, World!", 10 len equ $ - msgsection .text global _start_start: ; ssize_t write(int fd, const void *buf, size_t count) mov eax, 4 ; sys_write mov ebx, 1 ; stdout mov ecx, msg mov edx, len int 0x80 ; void exit(int status) mov eax, 1 ; sys_exit xor ebx, ebx int 0x80 使用int 0x80系统调用完成输出 section .data ms...
【实战】很坏很坏的默认配置策略
腾讯云默认云服务器SSH配置引发的“血案” 长话短说就是博主以为腾讯云默认root不能ssh登录,所以就设置了简单的密码,因为博主旧云服务器就是这样的(话说大多数Linux默认都是这样的吧,我还记得以前开kali的ssh得修改配置让root登录),之后自然而然地就被干了。 起因 腾讯云告警 top/htop发现不常见软件,这里截图丢了一张 时间线 11-14 15: 30 腾讯云告警 11-14 12:52 恶意文件写入 11-13 购买云服务器 日志审计 SSH 按照时间线 攻击从2025-11-14T12:46:58.464021+08:00进行ssh爆破 攻击者IP:142.93.111.208 从root用户登陆进入的???我记得旧服务器里面root用户不能远程登陆,这里应该也不能吧 不管了,先修改密码 然后我尝试使用root登录,发现登录成功??? 看看配置:sudo vi /etc/ssh/sshd_config ???腾讯云允许root用户远程登陆是开启的 设置为no然后重启 顺着这个漏洞发现存在多条被爆破成功的日志 这里关于Ubuntu的...
CPU Meltdown 漏洞与论文
公众号:https://mp.weixin.qq.com/s/VsGaZ7LqFkziJRpxp0rEBQ 很经典一篇同时具有实践价值和学术研究价值的文章,原文名称:Meltdown: Reading Kernel Memory from User Space [1]。提前预告:由于没有找到合适的CPU所以复现是失败的 或许我们的公众号会有更多你感兴趣的内容 [复现]CPU Meltdown 漏洞与论文 很经典一篇同时具有实践价值和学术研究价值的文章,原文名称:Meltdown: Reading Kernel Memory from User Space [1]。提前预告:由于没有找到合适的CPU所以复现是失败的 摘要 写过论文都知道这部分就是对文章大概的描述,很关键的是这句 “Meltdown exploits side effects of out-of-order execution on modern processors to read arbitrary kernel-memory locations including personal data...
【杂谈】为什么外挂难以根除?
一个略知逆向工程的人谈谈他的看法 或许我们的公众号会有更多你感兴趣的内容 外挂问题一直是《CS:GO》等竞技游戏的最大顽疾,尽管游戏厂商和反作弊团队不断升级技术手段,但外挂仍然屡禁不止。2025年8月,5E对战平台曝出职业选手使用“软路由雷达”作弊,该外挂通过路由器解析游戏数据包获取对手位置,传统检测手段几乎无法识别。这一事件再次凸显了外挂技术的隐蔽性和反作弊的挑战。 电子游戏的本质 电子游戏就是一段运行在计算机上的程序 电脑的最基本组成需要: CPU:中央处理器,处理来自内存的数据。一般包含有寄存器等,寄存器存储运行中的程序需要处理的数据,例如进行减少血量的操作就是将血量放入寄存器中然后CPU进行减法运算。 主板:安装所有硬件,让各个硬件能进行数据传输。 内存:暂存运行程序的相关数据,例如程序中的坐标、游戏人物的血量等等。 显卡:负责将数据转为屏幕的像素图形成画面。最开始这是CPU的工作,但是CPU不适合大规模的简单运算(让一个博士去狂刷小学加减法,不如让100个小学生去同时运算),英伟达开发的 Nvidia GeForce 256 是世界第一个图形处理...
windows rookit防护-PPL保护
项目地址:https://github.com/ZeroMemoryEx/Chaos-Rootkit 之前文章: windows rookit防护-进程隐藏 windows rookit防护-权限提升 或许我们的公众号会有更多你感兴趣的内容 效果展示 **为什么我已经提权到了administrator但是mimikatz依旧无法dump lsass?**先不讲长篇大论,直接看看效果有个初次感受。依旧是windows 10 22H2版本,用KDM Mapper加载rootkit后使用。 使用前: 使用后: Chaos-Rootkit的DbgPrint PPL保护介绍 PPL全称是: Protected Process Light,前身是Protected Process。具体区别就是之前的进程只分为受保护和不受保护,没有提供更加细致的保护等级划分,只需要使用 SeDebugPrivilege 令牌权限即可获取任意进程的所有访问权限。在Windows 8.1过后在此基础之上新增了PPL。 根据《深入解析Windows操作系统(第7版)(卷1)》中的描述(具...
【免杀】使用CobaltStrike的外置监听器绕过检测-番外
可能是最简单一种免杀方式了 对于自己开发c2有启发意义 公众号:https://mp.weixin.qq.com/s/WSX-MxkV-8QUfsNULFM3Kg 在上一篇文章:【免杀】使用CobaltStrike的外置监听器绕过检测 我们实现了一个能通过external C2 来对杀软进行绕过的方法,那么为什么行呢?这里对通讯的流量进行分析。 首先是在spawnBeacon需要运行一段teamserver发送过来的shellcode // Allocates a RWX page for the CS beacon, copies the payload, and starts a new threadvoid spawnBeacon(char *payload, DWORD len){ HANDLE threadHandle; DWORD threadId = 0; char *alloc = (char *)VirtualAlloc(NULL, len, MEM_COMMIT, PAGE_EXECUTE_READWRITE); memc...
【免杀】Cobaltstrike Stager Payload分析
cobaltstrike的payload主要分为Stager和Stageless Stager:分阶段式上线,从teamserver下载真正的payload后执行,体积小 Stageless:部分阶段上线,真正的payload直接在其中,适合用于红队测试中的免杀制作,体积大 公众号:https://mp.weixin.qq.com/s/UsPTeRZvlLFUG-EjCkVqTQ 或许我们的公众号会有更多你感兴趣的内容 Stager Exe Payload分析 软件版本:Teamserver 4.9.1 Payloads->Windows Stager Payload,具体配置如下 IDA 分析 入口点位于:4014C0 sub_401990 利用时间等信息异或获得两个随机数:randomA_4044D0和randomB_4044E0,且二者&为0xFFFFFFFFFFFF sub_401180 一些初始化的操作,和主要功能关系不大 sub_403040 真正释放payload的地方 sub_4017F8 这里模仿了windows中的管道...
【RootKit】Chaos-Rootkit解读-2 权限提升
去年学了点kernel开发,实战太少了,看看别人的代码怎么写的 项目地址:https://github.com/ZeroMemoryEx/Chaos-Rootkit 权限提升 测试环境: 连接到rookit 原理剖析 其实可以手动实现这个过程 首先打开一个cmd.exe 结构体中表示权限的是一个叫+0x4b8 Token : _EX_FAST_REF的东西 Token是一个_EX_FAST_REF类型的Union值 RefCnt记录了Token引用的数目,是数据的低4位(64位中,32位是3位) 将当前进程的除RefCnt以外的其他bit位设置为和System的一致就行了 这里 Value与掩码-0xd(RefCount)进行&运算就能得到真实的Token值 现在将计算出的Token值复制给cmd.exe(这是一个新的Token) 更进一步 另外一种就是经典的 **_sep_token Privileges Abusing ** 在+0x40的位置是一个_sep_token_privileges结构体 Present:包含令...
【RootKit】Chaos-Rootkit解读-1 进程隐藏
去年学了点kernel开发,实战太少了,看看别人的代码怎么写的 项目地址:https://github.com/ZeroMemoryEx/Chaos-Rootkit 进程隐藏 测试环境: 连接到rookit 使用效果: 原理剖析 在Driver.c/processIoctlRequest中处理这个功能的ioctl NTSTATUS processIoctlRequest( DEVICE_OBJECT* DeviceObject, IRP* Irp){ PIO_STACK_LOCATION pstack = IoGetCurrentIrpStackLocation(Irp); int pstatus = 0; int inputInt = 0; __try { // if system offsets not supported / disable features // that require the use of offsets to avoid crash ...
【Win Pwn】Windows10 内核池溢出
内核也太难了,主要讲述大NonPagedPool的溢出利用 公众号:https://mp.weixin.qq.com/s/XjaPdNwqABFqDZsZTDtZJg 或许我们的公众号会有更多你感兴趣的内容 【复现】Windows10 内核池溢出 前置知识: windows内核调试 windows内核提权基础 简单的windows驱动编写(hello world级别) linux pwn堆溢出利用方式 一点点数据结构的知识(双向链表) 文章讲述并复现在Windows高版本内核中NonPagedPoolNx溢出的利用方法 目录 [toc] 利用方式 很多资料都是直接翻译外文文献,翻译质量差,没有直接的实操,并且随着windows的更新,比较缺乏现代windows 10\11的、比较易学的攻击方式。这里使用:Windows-Non-Paged-Pool-Overflow-Exploitation[1]作为基础的讲解,原文中的图示个人感觉还是讲的不够透彻,这里个人借着原文重新讲述下。 命名管道介绍 这是windows提供的用于进程间通讯的一种机制。首先是**服务...
【AI】本地部署DeepSeek并使用MCP
主要是一些配置,同时算是备忘手册 本地部署DeepSeek 首先是部署DeepSeek R3 我是使用的是LM Studio,下载链接:https://lmstudio.ai/ 下载完成后需要按照如下逻辑结构创建文件夹: 然后下载DeepSeek的模型,国内可以通过魔塔社区等下载,会快很多。 我的显卡是GTX1650 MaxQ,显存只有4G。使用:DeepSeek-R1-Distill-Qwen-7B-GGUF AI相关最重要的就是显卡的显存,关于显卡参数可以在 任务管理器 -> 性能 中看到,如果只有一个intel的集显,那么得下载对应的显卡驱动。 deepseek 1.5b:几乎没有显卡要求 deepseek 7b: 至少4G显存 deepseek 8b: 至少6G显存 deepseek 14b: 12G显存 deepseek 32b:至少24G显存 如果配置正确就可以在LM Studio中看到了 一般配置如下 建议开启 闪电注意力(Fast attention),同时如果需要使用MCP建议将上下文长度改为至少 8192 等待模型加载后即可使用。 使用...













