摘要:
今天看了 CSAPP (深入理解计算机系统)的异常控制流篇,直接来简单分析一下 Linux 内核的 中断描述符表 的初始化 源码版本:Linux kernel 5.6 内核启动时会在 start_kernel 里面调用 trap_init 去初始化中断向量表 以此为入口,开始分析 start_ker 阅读全文
摘要:
其实只要接触过 Linux 内核源码的人都应该见过 current 这个宏,使用它获取当前进程的 task_struct 结构(当然这个不是绝对的) 现在就来看看 current 真正的样子 /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_X8 阅读全文
摘要:
how2heap -- glibc 2.23 -- fastbin_dup_consolidate.c #include <stdio.h> #include <stdint.h> #include <stdlib.h> int main() { void* p1 = malloc(0x40); v 阅读全文
摘要:
__lib_free void __libc_free (void *mem) { mstate ar_ptr; mchunkptr p; /* chunk corresponding to mem */ // 检查 malloc.h 中有没有定义 __free_hook 函数 // 定义的话则执行 阅读全文
摘要:
之前在 cryptohack 上写题目遇到的一道题目,涉及 ECB Byte at Time ,这是个 baby 级的技术, 写这个只是想水一篇博文 因为 cryptohack 有声明不能随便在公网上发题解, 我就自己模仿了一道 from Crypto.Cipher import AES from 阅读全文
摘要:
ARM & Thumb ARM 处理器有两种主要的运行模式(除开 Jazelle 这个另类):ARM 和 Thumb,这两个模式主要的区别在于指令长度,ARM 模式下,所有的指令都是 32 位的,Thumb 模式下主要是 16 位的(当然也可以是 32 位的)。ARM 下面的 shellcode 开 阅读全文
摘要:
数据类型 跟高级语言很相似,ARM 支持对不同数据类型进行操作。 可以 load 和 store 的数据的类型分成:字(word),半字(halfwords)或字节(Byte) 无符号后缀:-h (无符号半字),-b (无符字节) 有符号后缀:-sh(有符号半子), -sb(有符号字节) word( 阅读全文
摘要:
ARM 汇编简介 via:https://azeria-labs.com/writing-arm-assembly-part-1/ 介绍 欢迎来到 ARM 汇编基础系列教程。这是为后续的 ARM 利用开发系列教程做的准备。在开始创建 ARM shellcode 和构建 ROP 链之前,我们需要先 阅读全文
摘要:
CTF-pwn-tips-zh_CN 原项目(英语):https://github.com/Naetw/CTF-pwn-tips 为了说明白,我做了不少改动 目录 缓冲区溢出 在 gdb 中查找字符串 让程序运行在指定端口上 在 libc 中查找特定的函数偏移量 在共享库里面查找/bin/sh或者s 阅读全文
摘要:
Linux 内核中 offset_of 和 container_of 宏的实现 offset_of via: https://elixir.bootlin.com/linux/latest/source/tools/include/linux/kernel.h#L23 获取成员在结构体中的偏移量 # 阅读全文