logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

操作系统复习(二)

多道程序设计是把多个程序放到内存中,它们交替运行的技术。内存中有程序A(需要大量计算)和程序B(需要频繁读取磁盘)。当B因等待磁盘I/O而暂停时,CPU不会空等,而是立即切换去执行A,等B的I/O完成后再回来执行B。

#操作系统
Windows堆管理

Windows的堆管理器,负责管理使用页面粒度内存分配函数保留的大内存区中的内存分配。这句话的意思是,堆是基于页粒度内存分配的更高级的内存管理策略。“使用页面粒度内存分配函数保留的大内存区”指的是操作系统底层的内存管理单元。在 Windows 中,虚拟内存管理器以页(Page,通常为 4KB)为基本单位管理物理内存,并且通过 VirtualAlloc等函数分配内存时,实际上是以分配粒度(Alloc

#windows
浅析64位Windows的SEH机制

笔者花费了一些时间,学习了64位WindowsSEH机制的底层原理。现写为博客,希望对大家有帮助。要使SEH发挥作用,必须得到编译器、硬件和操作系统的配合支持。SEH 在特定平台上的具体实现方式可能因架构而异。

#windows
I Pack You:实现基本的软件壳框架

记录一下自己开发简易软件壳的过程,参考的开源软件和书籍贴在文末。这只是一个简易的加壳工具,实现了加壳的基本框架,后面会增加更多的功能填充这个框架。这个壳全部使用c/c++进行编写,没有使用汇编。因为在x64下,visual c++不支持内联汇编的语法了。如果要使用汇编,需要将汇编代码作为一个模块供c/c++使用。软件壳分为两个部分:加壳程序和stub。其中stub以dll的形式存在,使用链接器指令

c++中获取随机数

在学习数据结构和算法时,我们经常需要获得测试样例,这是大概率就会用到随机数构造测试样例。接下来将介绍c和c++中获取随机数的方法。

#c++#开发语言
c++中switch语句的反汇编与优化

对于switch的优化还有许多细节没有讲到,希望大家动手体会一下逆向还原的过程,对理解switch的反汇编及优化大有裨益。

#c++
C++异常处理机制反汇编(三):32位下的异常结构分析

throw语句↓_CxxThrowException(异常对象, ThrowInfo)↓RaiseException(0xE06D7363, 4个参数)↓Windows内核异常分发器↓读取NT_TIB.ExceptionList(SEH链头)↓遍历SEH链,调用每个节点的handler↓↓→ 到达函数注册的__CxxFrameHandler↓ ↓↓ 使用FuncInfo定位try块↓ ↓↓ 使用T

#c++#windows
虚函数的反汇编

当类中有虚函数时,编译器会把类中所有虚函数的地址统一放在一张地址表中,这张表叫做虚函数地址表。同时编译器会在类中添加一个隐藏数据成员,称为虚表指针,该指针保存着虚函数表的首地址,用于记录和查找虚函数。main函数的反汇编代码如下:执行完构造函数之后,我们查看rcx中保存的地址所指向的内存地址:我们反汇编00007ff7`ab3725c7和00007ff7`ab372b4e这两个地址:可以发现,这就

到底了