首页
论坛
课程
招聘
雪    币: 1675
活跃值: 活跃值 (11)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝

[原创]提取嵌入文件中的 PE 文件

2010-11-29 17:12 19171

[原创]提取嵌入文件中的 PE 文件

2010-11-29 17:12
19171
有时候会遇到某些程序把整个 PE 文件(就像整个 .exe, .dll, .sys, ...)嵌入到数据段中,在需要的时候才释放出来。
要提取这类程序中的文件,只有动态调试或者手工静态提取。

Exeinfo 本身带有提取功能,但是它的提取方法是找到一个有效的文件头之后就从文件头一直提取到整个文件的末尾。
这样虽然拨出了萝卜,但是带出了不少泥。

只好自己动手写一个程序了。
原理:
标准的 PE 文件结构是:Dos头|PE头|区段表|区段1,区段2,区段3,...
这样要提取出完整的文件,就是从Dos头开始,一直到最后一个区段的末尾。
思路:
先把目标文件映射到内存,获取文件在内存中的指针,遍历整个文件内容。
把所有疑似 PE 文件的内容都保存出来。

相关代码如下:

把文件映射到内存之后,通过内存指针来判断是否是一个 PE 文件,通过简单的判断 DOS 头和 PE 头来确定。

[font=Comic Sans MS][color=#008000]// 是否疑似 PE 文件?
[/color][/font][font=Fixedsys][color=#000000]BOOL IsPeLike[/color][color=#000080]([/color][color=#000000]LPVOID lpImageBase[/color][color=#000080])
{
    [/color][color=#000000]PIMAGE_DOS_HEADER    pDosHeader[/color][color=#000080];
    [/color][color=#000000]PIMAGE_NT_HEADERS    pNtHeader[/color][color=#000080];

    [/color][color=#000000]pDosHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_DOS_HEADER[/color][color=#000080])[/color][color=#000000]lpImageBase[/color][color=#000080];
    
    [/color][color=#0000FF]if [/color][color=#000080]([/color][color=#000000]IMAGE_DOS_SIGNATURE [/color][color=#000080]!= [/color][color=#000000]pDosHeader[/color][color=#000080]->[/color][color=#000000]e_magic[/color][color=#000080])    [/color][color=#0000FF]return    [/color][color=#000000]FALSE[/color][color=#000080];

    [/color][color=#000000]pNtHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_NT_HEADERS[/color][color=#000080])(([/color][color=#000000]DWORD[/color][color=#000080])[/color][color=#000000]pDosHeader [/color][color=#000080]+ [/color][color=#000000]pDosHeader[/color][color=#000080]->[/color][color=#000000]e_lfanew[/color][color=#000080]);
    [/color][/font][font=Comic Sans MS][color=#008000]// 如果偏移落在结构体范围之外,说明数据是错误的。跳过。
    [/color][/font][font=Fixedsys][color=#0000FF]if[/color][color=#000080](([/color][color=#000000]DWORD[/color][color=#000080])[/color][color=#000000]pDosHeader[/color][color=#000080]->[/color][color=#000000]e_lfanew [/color][color=#000080]> (([/color][color=#000000]DWORD[/color][color=#000080])[/color][color=#000000]lpImageBase [/color][color=#000080]+ [/color][color=#0000FF]sizeof[/color][color=#000080]([/color][color=#000000]IMAGE_DOS_HEADER[/color][color=#000080]) + [/color][color=#0000FF]sizeof[/color][color=#000080]([/color][color=#000000]IMAGE_NT_HEADERS[/color][color=#000080])))    [/color][color=#0000FF]return    [/color][color=#000000]FALSE[/color][color=#000080];
    [/color][color=#0000FF]if [/color][color=#000080](([/color][color=#000000]DWORD[/color][color=#000080])[/color][color=#000000]pNtHeader [/color][color=#000080]> (([/color][color=#000000]DWORD[/color][color=#000080])[/color][color=#000000]lpImageBase [/color][color=#000080]+ [/color][color=#0000FF]sizeof[/color][color=#000080]([/color][color=#000000]IMAGE_DOS_HEADER[/color][color=#000080]) + [/color][color=#0000FF]sizeof[/color][color=#000080]([/color][color=#000000]IMAGE_NT_HEADERS[/color][color=#000080])))    [/color][color=#0000FF]return    [/color][color=#000000]FALSE[/color][color=#000080];

    [/color][color=#0000FF]if [/color][color=#000080]([/color][color=#000000]IMAGE_NT_SIGNATURE [/color][color=#000080]!= [/color][color=#000000]pNtHeader[/color][color=#000080]->[/color][color=#000000]Signature[/color][color=#000080])    [/color][color=#0000FF]return    [/color][color=#000000]FALSE[/color][color=#000080];

    [/color][color=#0000FF]return    [/color][color=#000000]TRUE[/color][color=#000080];
}[/color][/font]


如果通过判断,那么说明找到的数据可能是一个 PE 文件,接下来获取这个文件的真实大小,真实大小是从 DOS 头开始,直到最后一个区段末尾的总大小,不包含附加数据。

[font=Comic Sans MS][color=#008000]// 获取 PE 文件真实大小
[/color][/font][font=Fixedsys][color=#000000]DWORD WINAPI GetRealSize[/color][color=#000080]([/color][color=#000000]LPVOID    lpImageBase[/color][color=#000080])
{
    [/color][color=#000000]PIMAGE_DOS_HEADER    pDosHeader[/color][color=#000080];
    [/color][color=#000000]PIMAGE_NT_HEADERS    pNtHeader[/color][color=#000080];
    [/color][color=#000000]PIMAGE_FILE_HEADER    pFileHeader[/color][color=#000080];
    [/color][color=#000000]PIMAGE_SECTION_HEADER    pSectionHeader[/color][color=#000080];

    [/color][color=#000000]pDosHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_DOS_HEADER[/color][color=#000080])[/color][color=#000000]lpImageBase[/color][color=#000080];
    [/color][color=#000000]pNtHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_NT_HEADERS[/color][color=#000080])(([/color][color=#000000]DWORD[/color][color=#000080])[/color][color=#000000]pDosHeader [/color][color=#000080]+ [/color][color=#000000]pDosHeader[/color][color=#000080]->[/color][color=#000000]e_lfanew[/color][color=#000080]);
    [/color][color=#000000]pSectionHeader    [/color][color=#000080]=    [/color][color=#000000]IMAGE_FIRST_SECTION[/color][color=#000080]([/color][color=#000000]pNtHeader[/color][color=#000080]);
    [/color][color=#000000]pFileHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_FILE_HEADER[/color][color=#000080])&[/color][color=#000000]pNtHeader[/color][color=#000080]->[/color][color=#000000]FileHeader[/color][color=#000080];
    [/color][color=#000000]pSectionHeader    [/color][color=#000080]+=    ([/color][color=#000000]pFileHeader[/color][color=#000080]->[/color][color=#000000]NumberOfSections [/color][color=#000080]- [/color][color=#800080]1[/color][color=#000080]);    [/color][/font][font=Comic Sans MS][color=#008000]//定位到最后一个区块表的开头

    [/color][/font][font=Fixedsys][color=#0000FF]return [/color][color=#000080]([/color][color=#000000]pSectionHeader[/color][color=#000080]->[/color][color=#000000]PointerToRawData [/color][color=#000080]+ [/color][color=#000000]pSectionHeader[/color][color=#000080]->[/color][color=#000000]SizeOfRawData[/color][color=#000080]); [/color][/font][font=Comic Sans MS][color=#008000]// 文件实际大小 = 文件结尾偏移 = 最后一个区段的磁盘偏移 + 最后一个区段的磁盘大小

[/color][/font][font=Fixedsys][color=#000080]}[/color][/font]


在保存到磁盘之前先判断一下 PE 的类型,根据判断结果来决定文件的扩展名,如果不能确定类型,则默认为.bin。
[color=#000000]LPTSTR    WINAPI GetRealType[/color][color=#000080]([/color][color=#000000]LPVOID lpImageBase[/color][color=#000080])
{
    [/color][color=#000000]PIMAGE_DOS_HEADER    pDosHeader[/color][color=#000080];
    [/color][color=#000000]PIMAGE_NT_HEADERS    pNtHeader[/color][color=#000080];
    [/color][color=#000000]PIMAGE_FILE_HEADER    pFileHeader[/color][color=#000080];
    [/color][color=#000000]PIMAGE_OPTIONAL_HEADER    pOptionalHeader[/color][color=#000080];

    [/color][color=#000000]pDosHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_DOS_HEADER[/color][color=#000080])[/color][color=#000000]lpImageBase[/color][color=#000080];
    [/color][color=#000000]pNtHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_NT_HEADERS[/color][color=#000080])(([/color][color=#000000]DWORD[/color][color=#000080])[/color][color=#000000]pDosHeader [/color][color=#000080]+ [/color][color=#000000]pDosHeader[/color][color=#000080]->[/color][color=#000000]e_lfanew[/color][color=#000080]);
    [/color][color=#000000]pFileHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_FILE_HEADER[/color][color=#000080])&[/color][color=#000000]pNtHeader[/color][color=#000080]->[/color][color=#000000]FileHeader[/color][color=#000080];
    [/color][color=#000000]pOptionalHeader    [/color][color=#000080]=    ([/color][color=#000000]PIMAGE_OPTIONAL_HEADER[/color][color=#000080])&[/color][color=#000000]pNtHeader[/color][color=#000080]->[/color][color=#000000]OptionalHeader[/color][color=#000080];
    
    [/color][/font][font=Comic Sans MS][color=#008000]// 判断映像类型
    [/color][/font][font=Fixedsys][color=#0000FF]if [/color][color=#000080]([/color][color=#000000]IMAGE_FILE_DLL [/color][color=#000080]& [/color][color=#000000]pFileHeader[/color][color=#000080]->[/color][color=#000000]Characteristics[/color][color=#000080])    [/color][color=#0000FF]return    [/color][color=#000000]_T[/color][color=#000080]([/color][color=#808080]".dll"[/color][color=#000080]);
    [/color][color=#0000FF]if [/color][color=#000080](([/color][color=#000000]IMAGE_FILE_EXECUTABLE_IMAGE [/color][color=#000080]& [/color][color=#000000]pFileHeader[/color][color=#000080]->[/color][color=#000000]Characteristics[/color][color=#000080]) && ([/color][color=#000000]IMAGE_SUBSYSTEM_NATIVE [/color][color=#000080]& [/color][color=#000000]pOptionalHeader[/color][color=#000080]->[/color][color=#000000]Subsystem[/color][color=#000080]))    [/color][color=#0000FF]return    [/color][color=#000000]_T[/color][color=#000080]([/color][color=#808080]".sys"[/color][color=#000080]);
    [/color][color=#0000FF]if [/color][color=#000080]([/color][color=#000000]IMAGE_FILE_EXECUTABLE_IMAGE [/color][color=#000080]& [/color][color=#000000]pFileHeader[/color][color=#000080]->[/color][color=#000000]Characteristics[/color][color=#000080])    [/color][color=#0000FF]return    [/color][color=#000000]_T[/color][color=#000080]([/color][color=#808080]".exe"[/color][color=#000080]);

    [/color][color=#0000FF]return    [/color][color=#000000]_T[/color][color=#000080]([/color][color=#808080]".bin"[/color][color=#000080]); [/color][/font][font=Comic Sans MS][color=#008000]//默认返回后缀 .bin
[/color][/font][font=Fixedsys][color=#000080]}[/color][/font]

剩下的工作就是遍历文件内容了,我使用的是效率最低的逐字节遍历,所以只能对付小文件。
[font=Fixedsys][color=#000000]    [/color][color=#0000FF]for [/color][color=#000080]([/color][color=#000000]DWORD dwPos [/color][color=#000080]= [/color][color=#800080]0[/color][color=#000080]; [/color][color=#000000]dwPos [/color][color=#000080]< [/color][color=#000000]dwFileSize[/color][color=#000080]; [/color][color=#000000]dwPos[/color][color=#000080]++, [/color][color=#000000]lpByte[/color][color=#000080]++)
    {
        [/color][color=#0000FF]if [/color][color=#000080](![/color][color=#000000]IsPeLike[/color][color=#000080]([/color][color=#000000]lpByte[/color][color=#000080]) || ([/color][color=#000000]dwPos [/color][color=#000080]== [/color][color=#800080]0[/color][color=#000080]))    [/color][color=#0000FF]continue[/color][color=#000080];
        
        [/color][color=#000000]dwRealSize    [/color][color=#000080]=    [/color][color=#000000]GetRealSize[/color][color=#000080]([/color][color=#000000]lpByte[/color][color=#000080]);
        [/color][color=#000000]csFileToSave[/color][color=#000080].[/color][color=#000000]Format[/color][color=#000080]([/color][color=#000000]_T[/color][color=#000080]([/color][color=#808080]"%s_~0x%08X%s"[/color][color=#000080]),[/color][color=#000000]m_csFile[/color][color=#000080], [/color][color=#000000]dwPos[/color][color=#000080], [/color][color=#000000]GetRealType[/color][color=#000080]([/color][color=#000000]lpByte[/color][color=#000080])); [/color][/font][font=Comic Sans MS][color=#008000]// 以在文件中的偏移地址为文件名称
        [/color][/font][font=Fixedsys][color=#000000]hFile    [/color][color=#000080]=    [/color][color=#000000]CreateFile[/color][color=#000080]([/color][color=#000000]csFileToSave[/color][color=#000080].[/color][color=#000000]GetBuffer[/color][color=#000080]([/color][color=#000000]MAX_PATH[/color][color=#000080]), [/color][color=#000000]GENERIC_WRITE[/color][color=#000080], [/color][color=#000000]FILE_SHARE_READ[/color][color=#000080], [/color][color=#000000]NULL[/color][color=#000080], [/color][color=#000000]CREATE_ALWAYS[/color][color=#000080], [/color][color=#000000]FILE_ATTRIBUTE_NORMAL[/color][color=#000080], [/color][color=#000000]NULL[/color][color=#000080]);
        [/color][color=#000000]csFileToSave[/color][color=#000080].[/color][color=#000000]ReleaseBuffer[/color][color=#000080]();

        [/color][color=#0000FF]if [/color][color=#000080]([/color][color=#000000]INVALID_HANDLE_VALUE [/color][color=#000080]== [/color][color=#000000]hFile[/color][color=#000080])    [/color][color=#0000FF]continue[/color][color=#000080];

        [/color][color=#000000]WriteFile[/color][color=#000080]([/color][color=#000000]hFile[/color][color=#000080], [/color][color=#000000]lpByte[/color][color=#000080], [/color][color=#000000]dwRealSize[/color][color=#000080], &[/color][color=#000000]dwWrited[/color][color=#000080], [/color][color=#000000]NULL[/color][color=#000080]);
        [/color][color=#000000]CloseHandle[/color][color=#000080]([/color][color=#000000]hFile[/color][color=#000080]);
        [/color][color=#000000]bFound    [/color][color=#000080]=    [/color][color=#000000]TRUE[/color][color=#000080];
        ++[/color][color=#000000]dwCounter[/color][color=#000080];
        [/color][color=#000000]csTmp[/color][color=#000080].[/color][color=#000000]Format[/color][color=#000080]([/color][color=#000000]_T[/color][color=#000080]([/color][color=#808080]"文件名称:%s\r\n文件偏移:0x%08X (%d)\r\n文件大小:%d (字节)\r\n"[/color][color=#000080]), [/color][color=#000000]csFileToSave[/color][color=#000080], [/color][color=#000000]dwPos[/color][color=#000080], [/color][color=#000000]dwPos[/color][color=#000080], [/color][color=#000000]dwRealSize[/color][color=#000080]);
        [/color][color=#000000]csLog    [/color][color=#000080]+=    [/color][color=#000000]csTmp[/color][color=#000080];
    }[/color][/font]


附件是我写的演示程序,用于演示提取和写入文件。

附上效果图:
XueTr 0.37

SOD 0.35


*有些程序加密了PE头,或采用压缩的方法存储,对于这类程序是没办法的。
*添加拖放功能,方便测试。

[公告]看雪论坛2020激励机制上线了!多多参与讨论可以获得积分快速升级?

上传的附件:
最新回复 (34)
雪    币: 13
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Greater 活跃值 2010-11-29 17:39
2
0
不错
很 强大 的
搬个沙发坐着 玩玩啦
雪    币: 392
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
ImHolly 活跃值 1 2010-11-29 21:13
3
0
多谢分享。。。
雪    币: 291
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冷煞xiaosan 活跃值 2010-11-29 21:21
4
0
支持一下~呵呵  不错~
雪    币: 78
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
RegKiller 活跃值 10 2010-11-29 21:33
5
0
只要萝卜,不要泥.
雪    币: 2648
活跃值: 活跃值 (105)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
cvcvxk 活跃值 10 2010-11-30 00:07
6
0
现在大多数那啥里的包含的pe文件都会把dosheader的放在其他地方存在~
雪    币: 6
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vincentzl 活跃值 2010-11-30 17:28
7
0
我下下来怎么没有可执行程序啊,也没有源码啊,楼主是否能共享下
雪    币: 136
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
robey 活跃值 1 2010-11-30 19:42
8
0
这贴也解决了我不少疑惑。
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yzwyq 活跃值 2010-11-30 20:36
9
0
干坏事的好东东
雪    币: 1776
活跃值: 活跃值 (69)
能力值: ( LV12,RANK:480 )
在线值:
发帖
回帖
粉丝
熊猫正正 活跃值 9 2010-11-30 20:40
10
0
谢谢分享~~
雪    币: 1162
活跃值: 活跃值 (33)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
ycmint 活跃值 5 2010-12-1 02:36
11
0
学习了。。。。。。
雪    币: 5686
活跃值: 活跃值 (56)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
傷遺忘 活跃值 2010-12-1 08:59
12
0
学习了.好文章..谢谢分享.
雪    币: 89
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
zphdebug 活跃值 1 2010-12-1 10:45
13
0
学习.....
雪    币: 50
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
鱼爱上猫 活跃值 2010-12-1 12:26
14
0
谢谢分享  打把dota 一会慢慢欣赏
雪    币: 303
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bluecode 活跃值 2010-12-1 14:16
15
0
又见PE  支持LZ好文。
雪    币: 44
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
romero 活跃值 2010-12-2 08:17
16
0
good article thanks
雪    币: 384
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yangxingyu 活跃值 2010-12-2 16:06
17
0
强人啊 学习 谢谢分享
雪    币: 39
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
jiangming 活跃值 2010-12-2 17:23
18
0
有个地方不明白,还请大大解释下:

在判断疑似PE文件时,下面这一句没搞明白……
if ((DWORD)pNtHeader > ((DWORD)lpImageBase + sizeof(IMAGE_DOS_HEADER) + sizeof(IMAGE_NT_HEADERS)))    return    FALSE;

IMAGE_DOS_HEADER与IMAGE_NT_HEADERS之间不是还有个DOS STUB吗?如果将DOS STUB调的很大,它也是满足这个条件的,但还是一个pe呀……
雪    币: 211
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kmlch 活跃值 2010-12-2 19:53
19
0
非常感谢,很不错的文章。
雪    币: 289
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhuangbx 活跃值 2010-12-2 22:33
20
0
学习中..............................
雪    币: 40
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
skyxskyx 活跃值 2010-12-3 14:33
21
0
如果嵌入的PE是加密过的,就只有动态调试的时候dump出来了...
雪    币: 534
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
傲气小小 活跃值 2010-12-3 15:57
22
0
学习了 谢谢楼主发帖
雪    币: 236
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
whitefirer 活跃值 1 2010-12-3 20:35
23
0
好文齐分享~
雪    币: 1675
活跃值: 活跃值 (11)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 活跃值 13 2010-12-3 20:52
24
0
这个值不是很靠谱,一般的软件都是只显示一条消息。
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
clide2000 活跃值 7 2010-12-4 07:40
25
0
收藏,感谢
雪    币: 695
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tokiii 活跃值 2011-3-16 11:43
26
0
试了下 winmount 的安装文件 ,没找出驱动
雪    币: 564
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lixupeng 活跃值 2011-6-12 17:36
27
0
mark!
雪    币: 338
活跃值: 活跃值 (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
毁灭 活跃值 2 2011-6-12 18:14
28
0
呵~ 平时只知道用 资源工具来提取!
  谢谢楼主的代码
雪    币: 378
活跃值: 活跃值 (18)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
小小的心 活跃值 2 2011-7-24 17:01
29
0
最近写这个的太多了~~楼主思路很好 赞一个
雪    币: 599
活跃值: 活跃值 (11)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
zhaokang 活跃值 3 2011-7-26 09:29
30
0
可以先加入,运行宿主的时候自动提取嵌入的并运行...
雪    币: 1602
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
panti 活跃值 2011-7-28 03:26
31
0
提取出资源,但是程序出错
上传的附件:
雪    币: 113
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuyusong 活跃值 2011-9-25 10:21
32
0
正需要获取PE文件大小的代码,呵呵  学习了
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wjrice 活跃值 2011-9-25 18:31
33
0
学习了,以后要认真拜读!
雪    币: 334
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
DoItFreely 活跃值 3 2011-10-12 13:43
34
0
如果zlib/7-zip一下再放进去,甚至加密一下,就识别不了。
要防止静态提取和分析,就这么干
雪    币: 5121
活跃值: 活跃值 (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
奘和 活跃值 2011-10-12 14:34
35
0
嘿嘿
不错哈
支持!
游客
登录 | 注册 方可回帖
返回