- 博客(23)
- 收藏
- 关注
原创 inline hook详解
本文通过实验详解x64平台Inline Hook原理:通过修改目标函数入口的13字节指令(含完整指令边界),使用12字节绝对跳转(mov rax, addr; jmp rax)跳转至自定义Hook函数,并借助Trampoline机制保存被覆盖的原始指令,再跳回原函数剩余部分。关键点包括:必须按指令边界覆盖、动态计算补丁大小、分配可执行内存创建Trampoline、临时修改页面保护及刷新指令缓存,确保控制流正确且程序稳定。
2026-09-27 20:05:01
327
原创 dll注入详解
DLL注入的本质是让目标进程自行调用LoadLibraryW加载DLL,而非复制文件。核心在于:在目标进程地址空间中分配内存、写入DLL路径,并创建远程线程执行LoadLibraryW。关键点是区分“本进程指针”与“目标进程地址”,所有操作均需通过OpenProcess获取句柄,利用VirtualAllocEx和WriteProcessMemory在目标空间操作数据,最终由目标进程执行加载。理解“地址归属哪个进程”是掌握注入原理的核心。
2026-09-20 16:51:29
151
原创 【web基础】js入门
JavaScript 是一门动态、弱类型、基于原型的解释型语言,广泛用于网页交互。它具备函数式特性、单线程事件循环机制,支持跨平台运行。核心概念包括变量声明(var/let/const)、原始与引用类型、闭包、原型链继承、高阶函数及异步编程(Promise、async/await)。通过事件循环处理异步任务,结合 DOM 操作实现页面动态更新,是现代 Web 开发的核心技术之一。
2026-09-20 16:02:19
237
原创 WIN32核心编程
这篇文章主要介绍了Windows编程中的字符处理、Win32 API与C标准库的区别,以及进程的基本概念和控制方法。 字符处理:区分了char(1字节,处理ASCII字符)和wchar_t(2字节,处理宽字符),并介绍了W版和A版函数的区别,以及宽字符转换方法。 Win32 API vs C标准库: Win32 API提供更底层的系统控制,支持进程管理、内存权限调整等,适合逆向开发和底层编程。 C标准库跨平台,但功能有限,本质是对Win32 API的封装。 进程控制: 进程是程序的执行实例,包含代码、数据和
2026-08-22 16:27:07
176
原创 WIN32核心编程之句柄详解
Windows句柄(Handle)核心解析 句柄是Windows系统提供给程序的资源操作凭证,本质是一个受控引用而非资源本身。当程序通过API(如CreateFile)请求资源时,系统返回句柄而非直接暴露资源地址,后续操作都通过该句柄完成。这种设计保障了系统安全性和稳定性,防止用户程序直接修改内核数据。 句柄具有以下关键特性: 进程私有性 - 相同数值在不同进程可能指向不同对象 权限控制 - 句柄包含对目标对象的操作权限 需显式释放 - 使用后需调用CloseHandle等关闭函数 多样性 - 文件、进程、
2026-08-12 17:43:06
355
原创 线程和进程及虚拟内存详解
摘要: 进程是运行中的程序及其资源容器,包含虚拟内存、文件、线程等,实现隔离与资源管理。线程是进程内的执行流,拥有独立栈和寄存器,共享进程资源。CPU通过时间片轮转调度线程,利用上下文切换实现多任务并行。虚拟内存通过页表机制让不同进程的相同虚拟地址映射到不同物理内存,确保隔离。每个进程的工作集仅包含当前活跃的内存页,而非全部加载到RAM。多线程分工提升程序响应能力,如浏览器用不同线程处理UI、网络等任务。关键区别在于:程序是静态文件,进程是运行实例,线程是执行单元。
2026-08-04 10:00:45
487
原创 TLS回调
摘要: TLS Callback 是 PE 文件中的一种早期回调机制,由 Windows Loader 在程序入口点(如 main/DllMain)之前自动触发。其核心特点是利用线程局部存储(TLS)的初始化阶段执行自定义代码,常用于反调试或内存操作。TLS Callback 通过 PE 的 TLS Directory(DataDirectory[9])定义,其中 AddressOfCallBacks 字段指向一个以 NULL 结尾的函数指针数组(VA 地址),Loader 会依次调用这些回调。执行顺序为:
2026-07-25 16:46:22
233
原创 Relocation和ASLR
PE文件中的ASLR机制与重定位技术协同工作,确保程序在随机地址加载时仍能正常运行。ASLR通过随机化模块加载基址增强安全性,而重定位则修正模块内部受基址影响的绝对地址。现代x64程序大量使用RIP相对寻址,减少了重定位需求,但全局指针等仍需修正。PE文件通过.reloc节记录需要重定位的地址位置,采用按页分组的压缩格式存储。ASLR和重定位共同构成了Windows系统的关键安全防御机制。
2026-07-23 17:37:51
593
原创 导出表详解
文章摘要: Export Table(导出表)是DLL/EXE对外声明可调用函数及位置的数据结构,核心用于动态链接。其关键组成包括: 核心结构:IMAGE_EXPORT_DIRECTORY 记录DLL名称、序号基址(Base)、函数数量及三张关键表(EAT、Name Pointer、Ordinal)的RVA。 三张表协作: EAT(导出地址表):存储函数RVA,按索引映射到实际地址。 Name Pointer Table:按字母序存储函数名字符串的RVA,便于名字查找。 Ordinal Table:将名字表
2026-07-21 16:56:57
207
原创 导入表与IAT详解
本文详细解析了Windows程序中的导入表(Import Table)和导入地址表(IAT)机制。主要内容包括: 本质:导入表是程序声明的API需求清单,IAT是Loader填写的实际地址表 工作流程:Loader加载DLL,查找函数地址,写入IAT 调用方式:程序通过IAT间接调用API 必要性:由于DLL加载地址不固定,不能硬编码API地址 结构解析: Import Directory指向描述符数组 每个DLL对应一个IMAGE_IMPORT_DESCRIPTOR 包含INT(函数需求表)和IAT(地址
2026-07-18 16:45:37
27
原创 PE文件结构
PE 是 Windows 可执行文件的装载说明书;头部描述"怎么加载",节保存"代码和数据",数据目录指出"导入、导出、重定位、资源、TLS 等关键结构在哪里"。
2026-07-15 23:27:00
495
原创 C/C++反汇编之复杂数据结构的汇编
这篇文章摘要: 计算机底层视角下,所有高级数据结构最终都转化为内存操作。CPU仅处理寄存器、内存地址和基本运算,高级概念如数组、结构体在反汇编中表现为连续内存块和偏移访问模式。文章详细解析了内存寻址机制、指针本质、LEA指令与MOV的区别、数组访问模式(包括二维数组)、C字符串实现以及结构体内存布局。关键要点包括:通过[base+index*scale]识别数组类型,结构体字段通过固定偏移访问,以及指针与内存内容的区别。理解这些模式是逆向工程中还原高级数据结构的基础。
2026-07-15 14:53:54
462
原创 C/C++反汇编之函数调用约定
摘要:Windows x64 函数调用约定 Windows x64调用约定规定了函数调用的底层实现方式,主要包括: 参数传递: 前4个整数/指针参数分别通过RCX、RDX、R8、R9寄存器传递 剩余参数通过栈传递 返回值: 整数/指针返回值存储在RAX/EAX寄存器 栈管理: 调用者需预留32字节shadow space 栈向低地址增长,RSP指向栈顶 寄存器保存规则: 分为易失和非易失寄存器 函数可以自由修改易失寄存器 修改非易失寄存器需恢复原值 函数调用流程: call指令压入返回地址并跳转 ret指令
2026-07-15 10:18:59
318
原创 C/C++反汇编之函数栈帧的理解
栈是倒着长的(向低地址生长);输入数据是顺着写的(向高地址溢出)。所以,位于低地址的局部变量一旦发生溢出,会无情地向高地址方向横扫,依次冲毁旧 EBP 和关键的返回地址。
2026-07-13 23:53:59
471
原创 【web基础】2.CSS入门
CSS基础摘要 CSS(层叠样式表)是定义网页样式和布局的样式表语言。基本语法由选择器、属性和值组成,如p {color: blue;}。CSS有三种导入方式:内联样式(优先级最高)、内部样式表和外部样式表。 选择器类型包括: 基础选择器:元素(p)、类(.class)、ID(#id)、通用(*) 组合选择器:子元素(>)、后代(空格)、并集(,)、兄弟(+、~) 伪类选择器(:hover) 常用属性分为: 文本样式:颜色、字号、字体、对齐等 背景设置:颜色、图片、尺寸等 盒模型:宽高、边距(margin/
2026-05-28 23:57:31
249
原创 【web基础】1.HTML入门
HTML(超文本标记语言)是构建网页的基础,与CSS(样式)和JS(行为)共同构成网页开发的三大核心技术。HTML通过标签定义内容结构,包括文本、图片、链接等元素。常用标签分为文本标签(如h1-p)、列表标签(ul/ol)、表格标签(table)及其他功能标签(div/span/a/img等)。重点标签解析:a标签创建超链接,img标签嵌入图片,div/span作为布局容器,form标签构建表单。HTML文档基本结构包含head(元信息)和body(内容显示区域)。掌握这些基础标签和结构是网页开发的第一步。
2026-05-28 15:50:52
2721
原创 4.7 多态
本文摘要: 文章系统讲解了C++多态的核心概念与应用。首先通过动物类继承案例演示多态的实现条件:继承关系+虚函数重写,使用父类指针/引用指向子类对象。其次以计算器案例展示多态在实际开发中的优势。重点解析了纯虚函数与抽象类的特性,以及虚析构函数的必要性——防止子类资源泄漏。最后通过内存管理案例说明纯虚析构的应用场景,强调多态中析构函数的正确使用方式。全文通过代码示例和原理图示,完整呈现了多态从基础到高级的应用体系。
2026-05-27 17:04:19
51
原创 【逆向】脱壳
文章摘要: 本文系统介绍了软件壳的概念、分类及工作原理,重点讲解了脱壳技术。壳通过在原始程序上附加代码,在运行时获得控制权进行解压/解密操作后交还控制权。壳分为压缩壳(如UPX)和加密壳(如ASProtect)。脱壳的核心是找到原始入口点(OEP),方法包括自动工具脱壳和手动调试脱壳。手动脱壳主要采用单步执行法、ESP定律和两次断点法:单步执行通过观察跳转指令定位OEP;ESP定律利用堆栈平衡原理;两次断点法则通过监控代码段和资源段的内存访问来高效定位OEP。这些方法特别适用于传统压缩壳,但对复杂加密壳可能
2026-05-23 21:10:14
1345
原创 C++模板
本文介绍了C++模板编程的核心概念和应用。主要内容包括:1)模板的基本概念,说明模板是实现泛型编程的关键技术;2)函数模板的语法和使用方法,通过示例展示如何定义和调用模板函数;3)普通函数与模板函数的区别,重点分析了自动类型推导和隐式转换的规则;4)函数调用优先级规则,解释当普通函数和模板函数同时存在时的调用顺序;5)模板的局限性,指出并非所有数据类型都适用于模板操作。文章通过代码示例详细说明了模板编程的各种特性和注意事项。
2026-05-17 16:52:38
928
原创 【逆向基础】断点介绍
本文介绍了三种调试断点技术:1)INT3断点(软件断点),通过替换指令为0xCC实现,操作简单但易被检测;2)硬件断点,利用CPU调试寄存器实现执行/写入/访问中断,速度快但数量受限;3)内存断点,通过修改内存页权限触发异常,支持大范围断点但效率较低。文章还对比了三种断点的优缺点,并详细说明了硬件断点的三种中断类型(执行/写入/访问)及其适用场景,为调试技术选择提供了实用参考。
2026-05-16 20:57:59
577
原创 4.6 继承
本文摘要:C++继承语法详解,包括基本语法、三种继承方式(公共/保护/私有)、对象模型特点、构造析构顺序、同名成员处理、静态成员访问、多继承语法及菱形继承问题。重点指出:子类继承父类所有非静态属性(含私有属性);构造顺序为父类→子类,析构相反;同名成员需加作用域访问;菱形继承通过虚继承解决二义性问题,使用虚基类指针和虚基类表实现。文中配有代码示例和示意图说明关键概念。
2026-05-06 17:31:03
559
原创 4.5 运算符重载
本文介绍了C++中运算符重载的核心概念和实现方法。主要内容包括:加号运算符重载的限制、左移运算符重载的全局函数实现方式、递增运算符的前置后置重载区别、赋值运算符重载中的深拷贝问题、关系运算符重载的比较功能实现,以及函数调用运算符重载形成的仿函数特性。重点强调了运算符重载的规范使用,特别指出赋值运算符需要处理深拷贝问题,并展示了仿函数的灵活应用场景。这些内容为C++运算符重载提供了实用的编程指导。
2026-04-25 16:19:48
75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅