首页
社区
课程
招聘
从磁盘加载文件到内存,都有哪几种方式???
发表于: 2012-12-3 18:10 5829

从磁盘加载文件到内存,都有哪几种方式???

2012-12-3 18:10
5829
如题,从磁盘加载文件都有哪几种方式???

最近在试用一个皮肤控件,它的皮肤分为试用版和正式版两种。

在没有注册时可以使用试用版皮肤,但是试用版皮肤上有他家的logo。

而如果加载的是正式版皮肤,就会加载失败。

于是我想找到他加载皮肤文件的位置,然后看看他的两种皮肤有什么区别。

但是奇怪的是我拦截了CreateFile,OpenFile等文件操作函数,发现没断下来。

有拦截了和内存文件映射相关的函数,也没有断下来。

最后还拦截了加载PE资源文件的函数,还是没有栏下来。

那么我想问各位大大,它是怎么把皮肤文件加载到程序的???

他提供的是一个DLL库,难道我用bpx CreateFileA之类的拦不到DLL???

PS:已经确认了没有打包到EXE或者DLL中

先谢谢各位啦!!!

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

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 7673
活跃值: (5497)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
试过CreateFileW没有?
2012-12-3 18:23
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
试过了

A和W都试过了哇~~~~
2012-12-3 21:26
0
雪    币: 230
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有没可能调用的 Native API,有 LoadLibraryA/W ntdll 调用吗?
2012-12-3 22:01
0
雪    币: 22
活跃值: (458)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
LoadLibrary
2012-12-3 22:55
0
雪    币: 40
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
是不是logo不是以位图形式存在在资源里的啊
2012-12-3 22:56
0
雪    币: 204
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
create和open都可以或以字节流形式加载
2012-12-3 23:52
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
额···,这个倒是没试过,今天我试试去
2012-12-4 08:39
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
logo是位图,把皮肤解包后,logo就在BMP的图片上,我用PS把logo去掉了之后再编译成皮肤,在他提供的皮肤调试器中运行就没有logo。但是这样修改过的皮肤不可以在我自己的exe程序中。

实际上这个东西倒不是能不能破不破解得问题,反正是公司的项目,也不敢用破解版,要不被发现就惨了。有公司掏钱买,我就是想研究一下,可是一上来返现居然连人家怎么加载的皮肤文件都搞不明白。。。太打击我等小白了。。。
2012-12-4 08:44
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
你说的字节流是什么意思哇,字节流难道不需要使用CreateFile或者OpenFile嘛
2012-12-4 08:47
0
雪    币: 22
活跃值: (458)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
任何数据、文件都可以用二进制形式直接编译进exe或者DLL中 使用时候直接用指针就可以了
例如你上面的回复 用二进制保存 你编译看看

unsigned char  Bufxx[] ={
        0xC4,0xE3,0xCB,0xB5,0xB5,0xC4,0xD7,0xD6,0xBD,0xDA,0xC1,0xF7,0xCA,0xC7,0xCA,0xB2,
                0xC3,0xB4,0xD2,0xE2,0xCB,0xBC,0xCD,0xDB,0xA3,0xAC,0xD7,0xD6,0xBD,0xDA,0xC1,0xF7,
                0xC4,0xD1,0xB5,0xC0,0xB2,0xBB,0xD0,0xE8,0xD2,0xAA,0xCA,0xB9,0xD3,0xC3,0x43,0x72,
                0x65,0x61,0x74,0x65,0x46,0x69,0x6C,0x65,0xBB,0xF2,0xD5,0xDF,0x4F,0x70,0x65,0x6E,
                0x46,0x69,0x6C,0x65,0xC2,0xEF,
};

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
        // TODO: Place code here.

        MessageBox(0,(char *)Bufxx, 0,0);

        return 0;
}
2012-12-4 09:06
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=靴子;1122873]任何数据、文件都可以用二进制形式直接编译进exe或者DLL中 使用时候直接用指针就可以了
例如你上面的回复 用二进制保存 你编译看看

unsigned char  Bufxx[] ={
        0xC4,0xE3,0xCB,0xB5,0xB5,0xC4,0xD7,0xD6,0xBD,0x...[/QUOTE]

哦,明白指的是什么意思了!

不过这个控件我保证他不是这个原理,因为我的EXE中只在winMain函数的开始和结束调用了它提供的DLL的start()和remove()两个函数。

不过正确时是一种方法,谢谢
2012-12-4 09:19
0
雪    币: 1737
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主问题解决没有。。。 同求思路
2012-12-4 09:54
0
雪    币: 107
活跃值: (419)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
bp ZwCreateFile
2012-12-4 10:18
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
晕,项目在赶进度,忙的没空去调试了,就先结贴了吧,我感觉也应该说得差不多了。

谢谢各位啦
2012-12-4 14:44
0
游客
登录 | 注册 方可回帖
返回
//