アドレスからデータを読み取るコードを書きました。このアドレスはコードセグメントに属しています(私はバイナリを逆アセンブルし、メインがどこにあるか検索するので、そこからアドレスが得られます)。主な目的はコンテンツを変更することです。私はそれを印刷すると、segfaultが発生します。それは何らかの保護ですか?それは保護のいくつかの種類segfault
void at(){
char *p = 0x0000000100000f47;
printf("%c", p[0]);
}
int main(){
at();
return 0;
}
オペレーティングシステム上でコードを実行していて、そのオペレーティングシステムがプログラムに物理メモリへのアクセス権を与えておらず、プログラム/プロセスに仮想アドレス0x0000000100000f47を割り当てていないことがあります。 – nos
参照:http://stackoverflow.com/q/38686502/4068338 – Matsmath
どうして 'char * p =(char *)main;'?そうすれば、絶対アドレスと再配置について心配する必要はありません。 – dxiv