首页
社区
课程
招聘
[注意]GetFileVersionInfoSize的返回值请验证下
发表于: 2013-12-10 11:17 6969

[注意]GetFileVersionInfoSize的返回值请验证下

2013-12-10 11:17
6969
不少反外挂程序会在启动时候调GetFileVersion系列函数来找自己的版本号.验证是否有更新.
在这里.目前基本所有的程序员在使用GetFileVersionInfoSize都不会验证返回的大小.而直接
malloc.这就留下了一个崩溃的隐患

GetFileVersionInfoSize会调用NtMapViewOfSection
然后NtMapViewOfSection内部会调用PsCallImageNotifyRoutines
然后其他驱动注册的ImageNotifyRoutine可以在回调中修改PE结构
返回一个巨大无比的值...ok蹦~

或者返回一个巨小的值..你永远拿不到自己的版本号(GetFileVersionInfo永远会觉的你太小)..
还是会蹦(偷懒直接定义一个值的同学有福了...)

当然 还是那句话.既然都加上驱动了.不如直接HOOK一个啥子函数 在对方的保护进程里面干点事.


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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 7900
活跃值: (2295)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看来只要使用API,就没什么稳定可言了,因为我们可以HOOK API,让你崩溃掉。
2013-12-10 12:40
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对于动态的malloc,确实一定要验证参数。曾经写一个程序,服务器返回的结构体大小不定, 所以解析的时候取了头部再分配内存,然后服务器端同学出错了。整了个0xFFFFFFFF过来。 一malloc直接就失败了。
2013-12-10 13:57
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
lz的担心太多余了,想让某个程序崩掉,到处都可以XX,就像2楼所说的~
2013-12-10 14:13
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
谢谢提醒。
2013-12-10 18:06
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
我直接把你钩子给摘掉,在飞一条线程把你的坑占掉,然后切你校验点。
2013-12-10 18:16
0
游客
登录 | 注册 方可回帖
返回
//