メインの現在のスタックのチェックサムを作成して、2つのポイント間で変更されているかどうかを確認したいと思います。
例えば:
int main(void) {
...
stack_checksum();
... process ...
if(stack_checksum() != ...)
altered.
}
スタックの最上位のベーススタックアドレスと現在のアドレスを取得するにはどうすればよいですか?
編集: @MiroslavBajtošの助けを借りて、アプローチのステップ:
- ローカル変数を構造体に入れる
- バックトレースリターン配列を確認してください