-
-
修改PE的DllCharacteristics禁用ASLR
-
2023-12-16 12:00
7038
-
修改PE的DllCharacteristics禁用ASLR
最近在磕CEF,为了方便调试,就想禁用libcef.dll的ASLR.使用CFF Explorer.exe和WinHex都提示文件内存过大,导致不能保存修改后的内容.
网上也简单搜索了一下,发现需要下载一个工具(要熟悉界面操作)。这种操作就是太麻烦了,毕竟很清楚要做的事情就是修改一个二进制而已.也就是修改一个字节的事情。
比如这里提到的使用010editor修改PE文件随机基址,不过我没有测试。后面看到有个PEFile的python模块,我觉得比较轻量级,也方便后续更多自定义需求的拓展,于是使用
接着码上:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import pefile
def modify_dll_characteristics(file_path, new_characteristics):
pe = pefile.PE(file_path, fast_load = True )
current_characteristics = pe.OPTIONAL_HEADER.DllCharacteristics
print ( "pe.OPTIONAL_HEADER.DllCharacteristics:0x{:0>8X}" . format (pe.OPTIONAL_HEADER.DllCharacteristics))
pe.OPTIONAL_HEADER.DllCharacteristics = new_characteristics
print ( "pe.OPTIONAL_HEADER.DllCharacteristics:0x{:0>8X}" . format (pe.OPTIONAL_HEADER.DllCharacteristics))
pe.write(filename = file_path)
file_path = "D:/libcef.dll"
new_characteristics = 0x4100
modify_dll_characteristics(file_path, new_characteristics)
|
执行结果:
至此,目标达成!
注意:
中间发生了一个小插曲,截止今日的pefile版本,在执行的pe.write时出现了错误:
1 2 3 4 5 6 7 8 9 | F:\Python310>python C:\Users\thinc\Desktop\DisableASLR.py
Traceback (most recent call last):
File "C:\Users\thinc\Desktop\DisableASLR.py" , line 25 , in <module>
modify_dll_characteristics(file_path, new_characteristics)
File "C:\Users\thinc\Desktop\DisableASLR.py" , line 14 , in modify_dll_characteristics
pe.write(filename = file_path)
File "F:\Python310\lib\site-packages\pefile.py" , line 3505 , in write
f = open (filename, "wb+" )
OSError: [Errno 22 ] Invalid argument: 'D:/libcef.dll'
|
于是找到pefile.py源码,将提示3505行的f_open(filename, "wb+")中的wb+改成rb+即可.接下来有空,我会试着提交这个可能存在的补丁.
总结:
- 不要轻易迷信所有现成的工具,杀鸡无需牛刀.
- 不要迷信"权威"的模块,毕竟自从第一行代码的产生开始,BUG也随之而来.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课