c*******v 发帖数: 2599 | 1 我用下面命令看addr randomize。
sysctl -a --pattern randomize
結果為:
kernel.randomize_va_space = 2
按道理應該是所有的東西都randomize了吧?
但我寫了個hello world小程序。
然後用gdb查system入口,發現每次地址都一樣?
三個gdb命令為:
b main
r
p system
是不是我對gdb的理解不對?
linux version:
Linux 4.15.0-20-generic x86_64 |
w***g 发帖数: 5958 | 2 应该是gdb的loader和你系统的loader不一样,应该
是为了调试时的可重复性,没有randomize。
你在程序里打印(void *)&system,不用gdb直接跑应
该能看到每次地址不一样。
【在 c*******v 的大作中提到】 : 我用下面命令看addr randomize。 : sysctl -a --pattern randomize : 結果為: : kernel.randomize_va_space = 2 : 按道理應該是所有的東西都randomize了吧? : 但我寫了個hello world小程序。 : 然後用gdb查system入口,發現每次地址都一樣? : 三個gdb命令為: : b main : r
|
c*******v 发帖数: 2599 | 3 我試下看看。
前面有一行print一個整數地址,確實是不同的。
【在 w***g 的大作中提到】 : 应该是gdb的loader和你系统的loader不一样,应该 : 是为了调试时的可重复性,没有randomize。 : 你在程序里打印(void *)&system,不用gdb直接跑应 : 该能看到每次地址不一样。
|
c*******v 发帖数: 2599 | 4 [1]
__builtin_return_address(0)
__builtin_frame_address(0)
這兩個print了一下,確實是變的。
gdb跑了下,確實打印結果不變。應該就是你說的這個原因了。
gdb都固定了。
[2]
你說的&system怎麼取?
我這裡編譯通過不了。
【在 w***g 的大作中提到】 : 应该是gdb的loader和你系统的loader不一样,应该 : 是为了调试时的可重复性,没有randomize。 : 你在程序里打印(void *)&system,不用gdb直接跑应 : 该能看到每次地址不一样。
|
c*******v 发帖数: 2599 | 5 剛找到gdb有這個開關
https://visualgdb.com/gdbreference/commands/set_disable-randomization
【在 c*******v 的大作中提到】 : [1] : __builtin_return_address(0) : __builtin_frame_address(0) : 這兩個print了一下,確實是變的。 : gdb跑了下,確實打印結果不變。應該就是你說的這個原因了。 : gdb都固定了。 : [2] : 你說的&system怎麼取? : 我這裡編譯通過不了。
|
w***g 发帖数: 5958 | 6 Linux里system就是一个正常函数, 在stdlib.h里,
怎么会编译不了?
【在 c*******v 的大作中提到】 : [1] : __builtin_return_address(0) : __builtin_frame_address(0) : 這兩個print了一下,確實是變的。 : gdb跑了下,確實打印結果不變。應該就是你說的這個原因了。 : gdb都固定了。 : [2] : 你說的&system怎麼取? : 我這裡編譯通過不了。
|
c*******v 发帖数: 2599 | 7 編譯過了。我includ弄亂了。
【在 w***g 的大作中提到】 : Linux里system就是一个正常函数, 在stdlib.h里, : 怎么会编译不了?
|
w***g 发帖数: 5958 | 8 你bssd, 但是还是置顶了,哈哈。老邢这站真是不行了,就这都能置顶。 |
g****t 发帖数: 31659 | 9 此類問題與security有關。所以我bssd。
老邢腦子進水了。
我個人認為:data scientist讀csv文件,而不是用DB engine等輸入數
據。是有廣泛的security implication的。未來也許就會爆出來。
【在 w***g 的大作中提到】 : 你bssd, 但是还是置顶了,哈哈。老邢这站真是不行了,就这都能置顶。
|