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

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

2007-10-4 23:38
6334
一个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的话应该怎么改呢?谢谢。

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

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

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


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