O gdb ile bir bellek adresine int'leri veya Heksadesimalleri yazmak için oldukça basittir:gdb'de belleğe nasıl bir dize yazabilirim?
(gdb) set {int}0x08040000 = 42
(gdb) set {int}0x08040000 = 0xffffffff
Ama belleğe benzer basit bir şekilde karakter veya tüm dizeleri yazabilirim nasıl? Şu anda, dizeyi onaltılık heceye çevirmek ve sonra da bunu girmek zorundayım. GDB ile
int main(void){
char[] person = "Bob";
char[] p2 = "Alice";
printf("Hello %s\n");
}
ana bir kesme noktası ayarlamak ve üzeri kullanıcının adını değiştirebilir:
(gdb) set main::person = { 'S', 'a', 'm', 0x00 }
veya daha fazla susinctly
(gdb) set main::person = "Sam"
Belki biz kullanmak zorunda okul için bir egzersiz için buna ihtiyaç olduğunu burada eklemek gerekir kod ve gdb sadece programın ne yaptığını bulmak için demonte edilmiş, bu yüzden kaynak kodum yok. –
Paul'un cevabı daha kolay ve daha iyi olsa da, cevabımın daha doğru olduğunu söyleyebilirim. kirli işinizi yapmak için - hangi zamanın% 99'u iyidir, ama eğer strcpy işlevinin kendisini tersine çevirmeye çalışıyorsanız ne olur? Eğer bir nedenden dolayı strcpy'e erişiminiz yoksa ne olur? ne olursa olsun . – FuriousGeorge