ptmalloc 的简单分析
前言
断断续续写了一个多月,终于写完了。写本文的主要目的是获得一个对堆的理性认知,从知其然到知其所以然。主要分析了 __libc_malloc,_int_malloc,__libc_free,_int_free,malloc_consolidate 五个比较长且核心的函数。基本覆盖了较小(即未大到需要进行 sys_malloc)的情况。当然对于较大的请求的处理也是有必要学习的,之后应该会再写一篇。总的来说本文写的比较简略,且略过了对 malloc_chunk 结构体、unlink 函数的介绍,您在看之前应该需要对 ptmalloc 的流程和基础结构已有一定了解。
…《操作系统真像还原》操作系统实现——中断
中断这个东西说起来不是很难,实现起来比较麻烦,主要是和硬件有一定联系,会略显复杂。
宏观视角
宏观地来看,一个中断的过程就是 CPU 接受中断信号,然后执行对应的处理函数。这里的中断分外部中断和内部中断两种。
…IDA switch 在跳表结构下的修复
今天协会打了一场内部 AWD,第一次参加这样的比赛,确实有不少手忙脚乱的地方,也有学到许多新知识。
PWN 总共有两题,其中一题虚拟机类题由于有较大的 switch 结构,而 gcc 在编译超过 5 个 case 的 switch 时就会用跳表来优化,F5 之后一般会变成下面这个样子
…