首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
编程技术
发新帖
0
0
[讨论]今天发现VC Runtime中fopen的奇怪现象
发表于: 2014-6-5 19:03
4129
[讨论]今天发现VC Runtime中fopen的奇怪现象
sunbinjin
1
2014-6-5 19:03
4129
今天刚发现的,现象如下:
假设程序有个exe配合自己的2个dll一起执行,3个模块都采用Multi-threaded Debug (/MTd)模式编译
1.在exe中调用a.dll中的某个函数,里面用(_wsopen)打开了一个文件
2.在exe中调用b.dll中的某个函数,里面用(fstat)函数来取文件信息
这时候怎么取都会出错,为什么?分析得知fstat函数里,调用了(_osfile(fildes))这个宏来取文件是否打开了
_osfile(fildes),实际原理是:
( __pioinfo[(i) >> IOINFO_L2E] + ((i) & (IOINFO_ARRAY_ELTS - 1)) )->osfile
__pioinfo指向一个全局数组
结果就是,a和b 2个dll里,各自有一份__pioinfo,用来保存打开的文件信息,文件在a.dll里打开的,在b.dll调用取信息是根本没有的!
结果可以理解,但ms实现这么个东西,感觉问题很低级啊,用惯文件句柄的人,都知道,只要是进程中怎么用都是可以的,结果fopen这种就严重不对了,根本不能跨模块使用
不知道大家有何感想?
or我理解有错?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
0
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
2
)
achillis
雪 币:
7651
活跃值:
(523)
能力值:
( LV9,RANK:610 )
在线值:
发帖
32
回帖
2032
粉丝
49
关注
私信
achillis
15
2
楼
既然话都这么说了,那就直接用Windows API实现不就可以了?
2014-6-5 19:43
0
holysh
雪 币:
3
活跃值:
(47)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
10
粉丝
0
关注
私信
holysh
3
楼
see this
e04K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3&6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3L8r3W2T1M7X3q4J5P5g2)9J5c8X3#2K6x3U0x3#2y4o6j5H3i4K6u0W2j5i4y4H3P5l9`.`.
2014-6-5 19:54
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
sunbinjin
1
77
发帖
466
回帖
50
RANK
关注
私信
他的文章
如何抓住程序在哪里退出的?想用于出错时生成Dump
5483
[求助]有什么工具是可以分析目标程序使用了哪些API?
5541
[求助]如何比较简单的获取C++接口的某个方法的地址?
7640
[讨论]ReadFile能跑满速,fopen+fread测试速度都不行。有解不?
5745
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部