- 最後登錄
- 2023-3-4
- 在線時間
- 1 小時
- 註冊時間
- 2008-9-27
- 閱讀權限
- 20
- 精華
- 0
- UID
- 5031647
- 帖子
- 575
- 積分
- 196 點
- 潛水值
- 14681 米
| 本帖最後由 ren1244 於 2017-2-19 11:46 AM 編輯
- void func(char *str){
- char buffer[24];
- int *ret;
- strcpy(buffer, str);
- *((int*)(buffer + 0x20 + 0x4)) += 0x14; //問題在這行
- }
複製代碼 0x20+0x4是16進位表示法,所以換算成 10 進位是 2×16+4=36
如果你希望從 24 開始,那應該用- *((int*)(buffer + 20 + 4)) += 0x14;
複製代碼 但是這樣還是有問題
因為這會造成你寫入buffer[24]~buffer[27]的位置
如果你希望寫入buffer[20]~buffer[23]的位置
那應該是- *((int*)(buffer + 20)) += 0x14;
複製代碼 ... |
|