如何检查某个dll是否使用ASLR?
让我们举例如kernel32.dll,它是否使用ASLR?以及如何检查其他dll ...
谢谢..
在DLL上使用dumpbin.exe / headers。如果启用了ASLR,则DLL特征将显示“动态基数”:
...
OPTIONAL HEADER VALUES
10B magic # (PE32)
9.00 linker version
D0000 size of code
30000 size of initialized data
0 size of uninitialized data
132A3 entry point (7DD732A3)
10000 base of code
D0000 base of data
7DD60000 image base (7DD60000 to 7DE6FFFF)
10000 section alignment
10000 file alignment
6.01 operating system version
6.01 image version
6.01 subsystem version
0 Win32 version
110000 size of image
10000 size of headers
1164FD checksum
3 subsystem (Windows CUI)
140 DLL characteristics
Dynamic base <== Here
NX compatible
40000 size of stack reserve
...
到目前为止,我发现的最好的工具是winchecksec
。
https://github.com/trailofbits/winchecksec/releases
它报告ASLR和其他Windows安全功能。
> winchecksec mylib.dll
Dynamic Base : true
ASLR : true
High Entropy VA : true
Force Integrity : false
Isolation : true
NX : true
SEH : true
CFG : false
RFG : false
SafeSEH : false
GS : true
Authenticode : true
.NET : false