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

修改PE的DllCharacteristics禁用ASLR

2023-12-16 12:00
10316

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

接着码上:

执行结果:
图片描述

至此,目标达成!

注意:
中间发生了一个小插曲,截止今日的pefile版本,在执行的pe.write时出现了错误:

于是找到pefile.py源码,将提示3505行的f_open(filename, "wb+")中的wb+改成rb+即可.接下来有空,我会试着提交这个可能存在的补丁.
图片描述

总结:

pip install pefile
pip install pefile
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)
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 文件

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 5
支持
分享
最新回复 (8)
雪    币: 466
活跃值: (2554)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
interesting
2023-12-16 14:57
0
雪    币: 3004
活跃值: (30861)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2023-12-16 23:20
0
雪    币: 852
活跃值: (9821)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
4
winhex 直接改
2023-12-19 17:28
0
雪    币: 4290
活跃值: (8650)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
熊趴趴来 interesting
2023-12-19 18:22
0
雪    币: 4290
活跃值: (8650)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
秋狝 感谢分享
感谢支持
2023-12-19 18:23
0
雪    币: 4290
活跃值: (8650)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
TkBinary winhex 直接改[em_41]


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

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