Ich schrieb einen Code, um Daten von Adresse zu lesen. Diese Adresse gehört zum Code-Segment (Ich zerlege meine Binärdatei und suche nach der Hauptadresse, also ist die Adresse von dort). Das Hauptziel ist es, den Inhalt zu ändern. Wenn ich es drucke, verursacht es einen segfault. Ist es eine Art Schutz?segfault beim Drucken von Speicher
void at(){
char *p = 0x0000000100000f47;
printf("%c", p[0]);
}
int main(){
at();
return 0;
}
Möglicherweise führen Sie Ihren Code auf einem Betriebssystem aus, und dieses Betriebssystem gibt Ihrem Programm keinen Zugriff auf physischen Speicher, noch ist es passiert, die virtuelle Adresse 0x0000000100000f47 Ihrem Programm/Prozess zuzuweisen. – nos
Siehe: http://StackOverflow.com/Q/38686502/4068338 – Matsmath
Warum nicht 'char * p = (char *) main;'. So müssen Sie sich keine Gedanken über absolute Adressen und Umzüge machen. – dxiv