Cプログラムのスタック破壊の発生をパースして検出したかった。これをJavaでやりたかったのです。
誰かが私をそれから始めるように導くことができますか?
C プログラムでスタック破壊の存在を検出する方法。
Cプログラムのスタック破壊の発生をパースして検出したかった。これをJavaでやりたかったのです。
誰かが私をそれから始めるように導くことができますか?
C プログラムでスタック破壊の存在を検出する方法。
一般的には、これはおそらく実現不可能です。実際、停止問題の表現のように見えます。スタック破壊の検出は実行時に実行されます。バッファ オーバーフローに関する記事や、 stackoverflow で既に提供されている多くの質問と回答を確認することから始めることができます。
スタックスマッシングを行うプログラムを書くことから始めることができます。私自身の経験からの一例は、次のコードです。
int main(void)
{
char hello[] = "hello";
printf("%s\n",strcat(hello, "world"));
}
これにより、セグメンテーション違反を伴うスタック破壊検出警告が表示される可能性があります
追加された文字列を保持するのに十分な大きさの文字列のサイズを挿入することで、これを修正することもできます。つまり、
int main(void)
{
char hello[50] = "hello";
printf("%s\n",strcat(hello, "world"));
}