出于我的研究目的,我想看看当程序由于某些错误(例如缓冲区溢出攻击)而被杀死/崩溃时,操作系统会做出哪些更改。
让我在这里解释整个场景。
假设一个应用程序正在运行并且它的数据和代码在内存中。攻击者试图通过利用一些缓冲区溢出漏洞来劫持应用程序以访问机器,但系统检测到它并杀死正在被利用的应用程序。现在我想看看操作系统在终止进程时是否在内存中留下了任何痕迹,以及操作系统在终止该进程之前采取了哪些必要步骤。
此外,是否有任何工具可以在 ac 程序执行时实时跟踪内存变化?我们可以将内存快照数据反编译为某种人类可读的语言(可能是汇编代码)吗?
编辑::
对于以下示例
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
int x;
char arr[4];
char * src = "haha";
printf("Before copying\n");
scanf("%d", &x);
if(x> 1)
strcpy(arr, src);
printf("%s \n", arr);
return 0;
}
它正在产生缓冲区溢出错误。在检查之前,它工作正常。在输入大于 1 的 x 后,它会使程序崩溃。即使这个程序崩溃/杀死,我也想看看内存中是否有任何痕迹。
谢谢。