私の研究目的では、バッファオーバーフロー攻撃などのエラーが原因でプログラムが強制終了/クラッシュしたときに、オペレーティングシステムによってどのような変更が行われるかを確認したいと思います。
ここでシナリオ全体を説明しましょう。
アプリケーションが実行中であり、そのデータとコードがメモリ内にあるとします。攻撃者は、バッファオーバーフローの脆弱性を悪用してマシンにアクセスすることでアプリケーションを乗っ取ろうとしますが、システムはそれを検出し、悪用されているアプリケーションを強制終了します。ここで、プロセスを強制終了したときにオペレーティングシステムによってメモリに残された痕跡があるかどうか、およびそのプロセスを強制終了する前にOSが実行した必要な手順を確認したいと思います。
また、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を入力すると、プログラムがクラッシュします。このプログラムがクラッシュ/強制終了された場合でも、メモリに痕跡が残っているかどうかを確認したいと思います。
ありがとう。