首页
社区
课程
招聘
[求助].net程序为何地址总是在变化,难道没有基地址?请大神科普
2016-1-27 12:44 4010

[求助].net程序为何地址总是在变化,难道没有基地址?请大神科普

2016-1-27 12:44
4010
.net程序为何地址总是在变化,自己写了一个程序,把某一个int变量增加数值,CE也搜索到了地址,但是重启之后,地址的指向就不对了。请问是不是.net平台中因为有虚拟机的缘故,内存地址一般都不是基地址?

付我写的小程序

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

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (7)
雪    币: 319
活跃值: (2309)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
csjwaman 24 2016-1-27 14:06
2
0
看看可选头部的属性中会不会有“DLL可移动”属性,如果有就会重定位。
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhangsj 2016-1-27 14:14
3
0
请问大神,如果是设置了DLL可移动,那么这个是不是就意味着,基地址是找不到得了额
雪    币: 5
活跃值: (366)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
鸡蛋面 2016-1-27 15:36
4
0
当然会变化,.net最终代码的地址每次都是不一样的。
.net应用程序每次启动时都会动态申请一块内存来存放代码,就和你自己申请一块堆内存一样,所以地址肯定是随机的。
不仅仅地址是随机的,而且同一个.net应用程序在不同的机器上的最终执行代码都是不一样的,因为虚拟机的缘故。
雪    币: 5
活跃值: (366)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
鸡蛋面 2016-1-27 15:38
5
0
所以你如果试图用基址加偏移的方式来HOOK是不可行的。
用特征码搜索来定位代码的方式同样是不可行的。
据我所知可行的方案之一就是修改虚拟机的字节码,也就是利用一些.net专用的逆向工具直接修改.net程序的源代码。
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhangsj 2016-1-27 16:21
6
0
谢谢指导,看样子我要另辟蹊径了,改用反编译的方式修改DLL算了,谢谢两位前辈指导
雪    币: 319
活跃值: (2309)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
csjwaman 24 2016-1-27 16:31
7
0
应该可以修改属性的吧?去掉“DLL可移动”应该就可以了。
上传的附件:
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhangsj 2016-1-27 19:53
8
0
每次退出后地址还是变了,不过还是谢谢前辈指点
游客
登录 | 注册 方可回帖
返回