首页
社区
课程
招聘
[已解决]改了DLL里的内容,如何能够保存?
2007-10-4 23:38 5791

[已解决]改了DLL里的内容,如何能够保存?

2007-10-4 23:38
5791
一个DLL,有个全局变量 int a= 0; 我要把它改成 a=1
这个a 的地址是 0x1000F234, 这个地址应该是在.data段的,按alt+M可以看到
Address   Size       Owner      Section    Contains
1000E000  00002000   myprogram        .data           data

我在OD里载入这个DLL,在下面数据框里打命令 d 1000f234, 选中这4个字节,点右键 -> Binary edit -> 修改为00000001 -> 确定,再点右键,选Copy to excutable file,然后就弹出一个错误框,显示
Unable to locate data in excutable file

exe的话,我一直是这么修改的,dll的话应该怎么改呢?谢谢。

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 75
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bird 2007-10-5 00:13
2
0
找到偏移位置,用winhex 修改。
雪    币: 8191
活跃值: (4263)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2007-10-5 00:24
3
0
可能是.data的RawSize比较小的问题,你要修改的地方不在RawSize范围内
修改PE使RawSize = VirtualSize
或者插入几行代码动态修改那个值
雪    币: 194
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aj3423 2 2007-10-5 14:55
4
0
多谢两位,

我用dasm打开那个dll,到1000CDF8就结束了,看不到1000F234。


我在 LordPE里看到
Name   VOffset   Vsize     ROffset   RSize     Flags
.data  0000E000  00001454  0000D200  00000C00  C000040
我把RSize=00000C00 改成00001454,结果我的exe LoadLibrary调用这个dll时候失败
雪    币: 3758
活跃值: (3212)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
曾半仙 12 2007-10-5 15:38
5
0
虚胖段, 后面的内存是在PELoader载入时候申请的, 但是并没有对应的磁盘数据用来填充.
可以用PeExplorer将其变实, 但是最好直接修改判断部分.
LordPE改的话他不会自动扩展磁盘段来符合你的修改, 需要你事前或者事后手动扩展.
雪    币: 194
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aj3423 2 2007-10-5 17:18
6
0
看不懂。。。
我添加了些代码,把这个搞定了,谢谢大家。
游客
登录 | 注册 方可回帖
返回