首页
社区
课程
招聘
[求助]获取模块基址和大小的哪几种办法??
发表于: 2013-7-30 21:14 13218

[求助]获取模块基址和大小的哪几种办法??

2013-7-30 21:14
13218

请问一个自己写驱动程序,里面获取自身的基址和大小的方法有哪些,除了ZwQuerySystemInformation 和遍历_LDR_DATA_TABLE_ENTRY之外,还有其他方法吗?我想都试试


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

收藏
免费 5
支持
分享
最新回复 (7)
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
还有一种办法:内联汇编法
1.内联一段汇编,使用call $+5的方式获取EIP,记为lpEIP
2.根据数学原理,获取到的EIP在[ImageBase,ImageBase+ImageSize]这个区间里
3.Windows为模块分配的内存地址都是4KB对齐的,所以将获取到的lpEIP的低12位清零(将地址按4KB对齐)
4.从对齐后的地址开始,向上查找PE的MZ和PE标志,每搜索一次地址递减4096字节,直到找到为之。
2013-7-30 22:08
0
雪    币: 70
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=Morgion;1204513]还有一种办法:内联汇编法
1.内联一段汇编,使用call $+5的方式获取EIP,记为lpEIP
2.根据数学原理,获取到的EIP在[ImageBase,ImageBase+ImageSize]这个区间里
3.Windows为模块分配的内存地址都是4KB对齐的,所以将获取到的lpEIP的低12...[/QUOTE]

还有这办法啊,真是不问不知道
2013-7-30 22:15
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
简单的数学原理而已
2013-7-30 22:21
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个是指针方法,会留下内存访问记录
2013-7-30 22:30
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
可否讲讲如何查看内存访问记录?
2013-7-30 22:45
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
内存断点了...
2013-8-1 14:41
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
这个对我说的方法有什么影响?
正常程序会设置内存断点?
2013-8-1 15:30
0
游客
登录 | 注册 方可回帖
返回
//