首页
社区
课程
招聘
修改PE的DllCharacteristics禁用ASLR
2023-12-16 12:00 7038

修改PE的DllCharacteristics禁用ASLR

2023-12-16 12:00
7038

最近在磕CEF,为了方便调试,就想禁用libcef.dll的ASLR.使用CFF Explorer.exe和WinHex都提示文件内存过大,导致不能保存修改后的内容.
图片描述
网上也简单搜索了一下,发现需要下载一个工具(要熟悉界面操作)。这种操作就是太麻烦了,毕竟很清楚要做的事情就是修改一个二进制而已.也就是修改一个字节的事情。
图片描述
比如这里提到的使用010editor修改PE文件随机基址,不过我没有测试。后面看到有个PEFile的python模块,我觉得比较轻量级,也方便后续更多自定义需求的拓展,于是使用

1
pip install pefile

接着码上:

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 文件
    pe = pefile.PE(file_path, fast_load=True)
 
    # 获取当前的 DLLCharacteristics
    current_characteristics = pe.OPTIONAL_HEADER.DllCharacteristics
 
    # 修改 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 文件
    pe.write(filename=file_path)
 
# 指定 PE 文件路径和要设置的 DLLCharacteristics
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+即可.接下来有空,我会试着提交这个可能存在的补丁.
图片描述


总结:

  1. 不要轻易迷信所有现成的工具,杀鸡无需牛刀.
  2. 不要迷信"权威"的模块,毕竟自从第一行代码的产生开始,BUG也随之而来.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞5
打赏
分享
最新回复 (8)
雪    币: 466
活跃值: (1904)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
熊趴趴来 2023-12-16 14:57
2
0
interesting
雪    币: 19349
活跃值: (28971)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-12-16 23:20
3
0
感谢分享
雪    币: 2399
活跃值: (9225)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
TkBinary 5 2023-12-19 17:28
4
0
winhex 直接改
雪    币: 3520
活跃值: (7845)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
_THINCT 2023-12-19 18:22
5
0
熊趴趴来 interesting
雪    币: 3520
活跃值: (7845)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
_THINCT 2023-12-19 18:23
6
0
秋狝 感谢分享
感谢支持
雪    币: 3520
活跃值: (7845)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
_THINCT 2023-12-19 18:26
7
0
TkBinary winhex 直接改[em_41]


嗯,用winhex是最方便的。可我的版本可能有些问题,就没有继续折腾了。

雪    币: 2399
活跃值: (9225)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
TkBinary 5 2023-12-19 18:59
8
0
_THINCT 嗯,用winhex是最方便的。可我的版本可能有些问题,就没有继续折腾了。
哈哈可以可以,说着玩.有探索精神,值得点赞. 不过趁手的工具还是要更新下.不然还是容易耽误事
雪    币: 8024
活跃值: (5215)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
mudebug 2023-12-21 20:40
9
0
不需要那么麻烦。修改注册表重启系统就能取消这个了
游客
登录 | 注册 方可回帖
返回