main 関数の中でプログラムのロジックが見つからない場合、どのように考えますか?
-
例外処理が登録されているかどうかを確認してください。また、
__cxa_atexit
のような終了時に実行される関数もあります。 -
__lib_start_main
の引数には初期化に使用される関数が含まれています。以下にその定義を示します:int __libc_start_main( int (*main) (int, char * *, char * *), int argc, char * * ubp_av, void (*init) (void), void (*fini) (void), void (*rtld_fini) (void), void (* stack_end) );
・有効なユーザー ID が実際のユーザー ID と異なる場合、必要なセキュリティチェックを実行します。
・スレッドサブシステムを初期化します。
・このダイナミック共有オブジェクトが終了(またはアンロード)する際にリソースを解放するために、rtld_finiを登録します。
・プログラムの終了時に実行されるfiniハンドラを登録します。
・初期化関数(*init)を呼び出します。
・適切な引数で main () を呼び出します。
・main () の返り値を使用して exit () を呼び出します。 -
文字列やバイト配列の相互参照を使用して、隠された操作を見つけることができます。
したがって、超常現象に遭遇した場合は、パニックにならずに、難易度 1 の問題の隠された操作さえ見つけることができません。