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

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

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

付我写的小程序

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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