首页
社区
课程
招聘
[旧帖] [求助]VirtualFree后 loadLibrary失败.... 0.00雪花
发表于: 2009-6-19 18:20 4292

[旧帖] [求助]VirtualFree后 loadLibrary失败.... 0.00雪花

2009-6-19 18:20
4292
大家好...

我碰到个问题..需要对WINDOWS内存机制比较熟悉的朋友指点..

情况是这样...

我将系统DLL读入内存(比如kernel32)-----是通过VirtualAlloc分配的内存

代码大意如下:
        code = (unsigned char *)VirtualAlloc(NULL,
            SizeOfImage,
            MEM_RESERVE,
            PAGE_READWRITE);

        VirtualAlloc(code,
                SizeOfImage,
                MEM_COMMIT,
                PAGE_READWRITE);

根据调试,分配的这片内存地址大概是:00EA1000,大小大概是01D00000
之后对这片内存做一系列处理....

然后我将这片内存VirtualFree掉
VirtualFree(Base, 0, MEM_RELEASE);

之后,程序进入下一步,却在LoadLibrary处出错,...
调试显示原因是00EA1210不可读..显然,是因为这片内存被我VirtualFree掉的缘故.

但是我很奇怪...这片内存本来就是我VirtualAlloc得到的,VirtualFree掉理所当然.

Loadlibrary如果要使用这个地址的内存,应该自己去VirtualAlloc得到.

我将VirtualFree的代码去掉,程序能运行--至少不崩溃.

为什么会这样?能解释一下么?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 53
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我晕.....放到这个版......没指望了..
2009-6-21 21:38
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
应该卸掉DLL再free
2009-6-21 23:09
0
雪    币: 53
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
回楼上的哥哥...我所有的Loadlibrary都和Freelibrary是对应的.....

期待您进一步的意见...

您可以在如何锁定问题的关键,找出问题可能的原因方面给些建议吗?
2009-6-22 02:10
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
CPU 双核? 双核和单核内存模式不一样.和单核的有差异.你可以参考这方面的资料.
2009-6-22 10:20
0
雪    币: 53
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我的CPU是赛扬520 1.6GHZ....单核
2009-6-22 11:57
0
游客
登录 | 注册 方可回帖
返回
//