人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

スタック領域の壊し方についてです

VC++6に於いて、下記のy10のエリアを下位の関数で1BYTE多く初期化したとしたら
どこを壊すのでしたっけ??
※最近、PGから離れていて失念してしまいました

bool AbcCtrl::ABCD(int x1, CString x2, AAA& X3List, int X4){
int y1;
int y2;
int y3;
int y4;
int y5;
int y6;
int y7;
int y8;
int y9;
char y10[255]

●質問者: gin106
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:aaa byte Char pg VC++
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● JULY
●60ポイント ベストアンサー

バッファ・オーバーフロー解消の道筋は見えた(中):ITpro

コンパイラの最適化の影響を受けない、という前提にはなりますが、y9 の中身を書き換えることになります。

で、Windows が動くのは Intel x86 上ですから、リトルエンディアンになるので、y10 を 1 byte 超えて書き込むと、その 1 byte は y9 の下位 1 byte を上書きすることになります。

もちろん、コンパイルオプションによって違います。

例えば、y9 が実際には利用されていなければ、おそらく最適化で、y9 は実際にはスタック上に領域を確保しないと思います。また、頻繁に更新するのであれば、レジスタに割り当てられるかもしれません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ