在我们调试的时候总会遇到一些突然出现的heap,但是我们并不知道为什么出现,此时很大可能是因为一些函数调用的时候创建的堆块

我会记录下我遇到的所有函数虽然可能没什么用

  • printf()[0x1041]
  • fget()[0x1041]

接下来就是一些记录,没有什么规律

1
2
fd = open("/dev/urandom", 0);
read(fd, &buf, 8uLL); // 获得随机字节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
// 使用当前时间作为种子
srand(time(NULL));

// 生成随机数
int random_number = rand();

printf("Random number: %d\n", random_number);

return 0;
}

**fread**函数是C标准库中用于从文件中读取数据的函数。它的原型如下:

1
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

该函数从指定的文件流(stream)中读取数据,并将其存储到指定的内存缓冲区(ptr)中。参数size指定每个元素的大小(以字节为单位),而参数count指定要读取的元素数量。

fread函数的返回值是实际读取的元素数量。如果返回值与count不相等,可能表示发生了错误或到达了文件结尾。

**strtol**函数是C标准库中的一个函数,用于将字符串转换为长整型数值。它的原型如下:

1
long strtol(const char *nptr, char **endptr, int base);

该函数将字符串nptr中的内容解析为长整型数值,并返回结果。参数endptr是一个指向字符指针的指针,用于存储转换后的字符串的结束位置。参数base指定了进制,可以是 0、2-36之间的任意整数。当base为 0 时,函数会根据字符串的前缀来确定进制(0x 或 0X 表示十六进制,0 表示八进制,其他情况为十进制)。

kernel

  1. SMEP(Supervisor Mode Execution Prevention,监管模式执行预防):SMEP 是一种硬件机制,用于防止用户空间的代码在特权级别(如内核模式)执行。它要求操作系统将用户空间和内核空间的代码分开,并将用户空间的页面标记为不可执行。这样,即使恶意代码成功劫持了程序的执行流程,也无法执行用户空间的代码,从而减少了攻击者对系统的控制能力。

  2. SMAP(Supervisor Mode Access Prevention,监管模式访问预防):SMAP 是一种硬件机制,用于防止内核模式下的代码访问用户空间的内存。它要求操作系统在切换到内核模式时,将用户空间的内存标记为不可访问。这样,即使恶意代码尝试通过内核漏洞或其他手段读取或修改用户空间的数据,也会触发异常并导致操作系统终止恶意行为。

  3. PXN(Privileged eXecute Never,特权级别不可执行):PXN 是一种硬件机制,用于防止用户空间的代码在特权级别(如内核模式)下执行。它要求操作系统将用户空间的页面标记为不可执行,并在特权级别下禁止执行这些页面上的代码。这样,即使恶意代码成功劫持了程序的执行流程,也无法执行用户空间的代码,从而减少了攻击者对系统的控制能力。

  4. KERNEXECKernel Code Execution Prevention):

    KERNEXEC 是一种保护机制,旨在防止内核代码执行的非法修改或执行。它通常通过将内核空间设置为只读或禁止执行来实现,从而防止恶意软件修改内核代码或在内核空间执行恶意代码。这种保护机制有助于防止内核空间的攻击和提高系统的安全性。

  5. UDEREFUser-space Dereference Prevention):

    UDEREF 是一种保护机制,用于防止用户空间指针在内核空间被直接解引用。这种保护机制旨在防止恶意用户空间指针被用于攻击内核空间,从而提高系统的安全性。通过限制用户空间指针在内核空间的访问,UDEREF 可以减少内核的潜在漏洞和攻击面。

  6. KGuard

    KGuard 是一种内核保护技术,旨在防止内核栈溢出和ROP(Return-Oriented Programming)攻击。KGuard 通过引入随机性和检测技术来防止攻击者利用内核栈溢出漏洞或构造ROP链来执行恶意代码。这种保护机制有助于提高内核的安全性和抵御各种内核级攻击。