首页
社区
课程
招聘
[原创]元宵节献礼,用类的思想处理PE结构附源码
发表于: 2015-3-5 22:07 20947

[原创]元宵节献礼,用类的思想处理PE结构附源码

2015-3-5 22:07
20947
收藏
免费 3
支持
分享
最新回复 (45)
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
这是好东西啊
2015-3-9 15:11
0
雪    币: 74
活跃值: (748)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
学习下,感谢分享
2015-3-9 20:48
0
雪    币: 201
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
感谢楼主分享,看评论更学到东西了
2015-3-9 22:24
0
雪    币: 256
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
原来狼兄的,帮顶,不错!
2015-3-9 22:58
0
雪    币: 27
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
30
本人小菜,抛砖引玉了!
2015-3-9 23:01
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
很厉害呀,赞一个!
2015-3-11 12:18
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
很好.........
2015-3-11 12:54
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
33
PeLib.
设计好上百倍
2015-3-13 13:36
0
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
34
很好很不错.不过只用了oo,没有设计oo
推荐看一下<<大话设计模式>>,相信您会成为架构师
2015-3-13 20:03
0
雪    币: 27
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
35
谢谢了,我是自学的,都是野路子,使出的招数都不知什么名字,真是惭愧!
2015-3-14 18:52
0
雪    币: 27
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
36
多谢这么评价,我不懂太深理论,一切都是以实用为主。
2015-3-14 18:53
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
有点意思..................thanks for share
2015-3-15 14:45
0
雪    币: 178
活跃值: (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
老狼,放出来吧。你留着也没用。放出来能提升你的影响力,说不定立马能提升你为BAT 的CTO
2015-3-21 19:06
0
雪    币: 27
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
39
才不呢
2015-3-23 13:17
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
代码bug较多,希望有人修正下
2015-3-29 15:29
0
雪    币: 27
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
41
什么bug?
2015-3-29 19:07
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
BOOL LPEFile::LoadPEFile(char *lpFilename)
{
        HANDLE hFile;
        HANDLE hMapping;
        LPVOID ImageBase;
    pstMapFile=new MAP_FILE_STRUCT;
        bLoadStact=LFILE_FROM_FILE;
   
        hFile=CreateFile(lpFilename,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,
                FILE_ATTRIBUTE_NORMAL,NULL);
        if (hFile==NULL)
        {
                return FALSE;
        }
        pstMapFile->dwFileSize=GetFileSize(hFile,NULL);
        hMapping=CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,pstMapFile->dwFileSize,NULL);
        if (hMapping==NULL)
        {
                CloseHandle(hFile);
                return FALSE;
        }
   
        ImageBase=MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,pstMapFile->dwFileSize);
        if (ImageBase==NULL)
        {
                CloseHandle(hFile);
                CloseHandle(hMapping);
                return FALSE;
        }
        pstMapFile->hFile=hFile;
        pstMapFile->hMapping=hMapping;
        pstMapFile->ImageBase=ImageBase;
   return TRUE;
}

pstMapFile=new MAP_FILE_STRUCT;//这里new析构函数中要无条件释放,实际上很有可能内存泄漏

构造函数也不好
两个LoadPEFile
整成析构函数要好得多

修改后的
BOOL LPEFile::LoadPEFile(char *lpFilename)
{
        HANDLE hFile;
        HANDLE hMapping;
        LPVOID ImageBase;
    pstMapFile=new MAP_FILE_STRUCT;
        bLoadStact=LFILE_FROM_FILE;
   
        hFile=CreateFile(lpFilename,GENERIC_READ/*|GENERIC_WRITE*/,FILE_SHARE_READ,NULL,OPEN_ALWAYS,
                FILE_ATTRIBUTE_NORMAL,NULL);
        if (hFile==INVALID_HANDLE_VALUE)
        {
                DWORD dwError = GetLastError();
                return FALSE;
        }
        pstMapFile->dwFileSize=GetFileSize(hFile,NULL);
        hMapping=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,pstMapFile->dwFileSize,NULL);
        if (hMapping==INVALID_HANDLE_VALUE)
        {
                CloseHandle(hFile);
                return FALSE;
        }
   
        ImageBase=MapViewOfFile(hMapping,FILE_MAP_READ,0,0,pstMapFile->dwFileSize);
        if (ImageBase==NULL)
        {
                CloseHandle(hFile);
                CloseHandle(hMapping);
                return FALSE;
        }
        pstMapFile->hFile=hFile;
        pstMapFile->hMapping=hMapping;
        pstMapFile->ImageBase=ImageBase;
   return TRUE;
}

我看到这个类没有任何写操作,为何都要WRITE权限,我要解析自身呢?
总之,今天我用的时候改了很多才勉强能用;
2015-3-29 20:32
0
雪    币: 18
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
看上去很有用,学习一下,,
2015-3-30 09:48
0
雪    币: 27
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
44
谢谢关注,也谢谢修复。
2015-3-30 10:16
0
雪    币: 178
活跃值: (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
请教一下,你说开源加壳代码已经很多了??除了你的教程bambam 还有哪些C++的开源加壳代码啊?
2015-4-3 15:01
0
雪    币: 27
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
46
你看雪学院找啊,还有看雪论坛里,好多的,我的就是个入门的,说明原理的。
2015-4-3 15:07
0
游客
登录 | 注册 方可回帖
返回
//