找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2321|回复: 3

lib文件研究(二)

[复制链接]

307

主题

228

回帖

7345

积分

用户组: 真·技术宅

UID
2
精华
76
威望
291 点
宅币
5595 个
贡献
253 次
宅之契约
0 份
在线时间
949 小时
注册时间
2014-1-25
发表于 2015-4-1 00:25:44 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
    上次我手工构造了一个最简单的lib文件,并去掉了很多冗余部分,这是研究dll2lib的第一步,研究问题要从最简单最通用的地方下手
    这次我将用生成一个dll并导出若干个函数,之后我的peExtractor解析dll,获得导出函数字节码,并用这些字节码自动构造lib。当然该dll是最简单的,只有内存操作,且只考虑导出符号为函数的情况:
1.制作dll,使用msvc6,忽略所有默认库,重置入口点为_DllMainCRTStartup,这样不会造成冗余导入lib和各种复杂情况的出现!
testdll.cpp:

  1. extern "C"
  2. {
  3.         __declspec (dllexport) int func0()
  4.         {
  5.                 return 123;
  6.         }
  7.         __declspec (dllexport) int func1()
  8.         {
  9.                 return 456;
  10.         }
  11.         __declspec (dllexport) int func2()
  12.         {
  13.                 return 789;
  14.         }
  15.         __declspec (dllexport) int __stdcall _DllMainCRTStartup(int,int,int)//用作辅助函数,在自动构造的lib中并不出现
  16.         {
  17.                 return 0;
  18.         }
  19. }
复制代码


生成的dll字节码为:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   4D 5A 90 00 03 00 00 00  04 00 00 00 FF FF 00 00   MZ            
00000010   B8 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00   ?      @      
00000020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000030   00 00 00 00 00 00 00 00  00 00 00 00 C0 00 00 00               ?  
00000040   0E 1F BA 0E 00 B4 09 CD  21 B8 01 4C CD 21 54 68     ? ???L?Th
00000050   69 73 20 70 72 6F 67 72  61 6D 20 63 61 6E 6E 6F   is program canno
00000060   74 20 62 65 20 72 75 6E  20 69 6E 20 44 4F 53 20   t be run in DOS
00000070   6D 6F 64 65 2E 0D 0D 0A  24 00 00 00 00 00 00 00   mode.   $      
00000080   85 D2 03 DB C1 B3 6D 88  C1 B3 6D 88 C1 B3 6D 88   呉 哿砿埩砿埩砿?
00000090   29 AC 66 88 C0 B3 6D 88  29 AC 69 88 C0 B3 6D 88   )琭埨砿?琲埨砿?
000000A0   52 69 63 68 C1 B3 6D 88  00 00 00 00 00 00 00 00   Rich脸m?      
000000B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000000C0   50 45 00 00 4C 01 03 00  22 74 19 55 00 00 00 00   PE  L   "t U   
000000D0   00 00 00 00 E0 00 0E 21  0B 01 06 00 00 10 00 00       ? !        
000000E0   00 20 00 00 00 00 00 00  30 10 00 00 00 10 00 00           0      
000000F0   00 20 00 00 00 00 00 10  00 10 00 00 00 10 00 00                  
00000100   04 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00                  
00000110   00 40 00 00 00 10 00 00  00 00 00 00 02 00 00 00    @              
00000120   00 00 10 00 00 10 00 00  00 00 10 00 00 10 00 00                  
00000130   00 00 00 00 10 00 00 00  00 20 00 00 85 00 00 00               ?  
00000140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000160   00 30 00 00 08 00 00 00  00 00 00 00 00 00 00 00    0              
00000170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001B0   00 00 00 00 00 00 00 00  2E 74 65 78 74 00 00 00           .text   
000001C0   40 00 00 00 00 10 00 00  00 10 00 00 00 10 00 00   @               
000001D0   00 00 00 00 00 00 00 00  00 00 00 00 20 00 00 60                  `
000001E0   2E 72 64 61 74 61 00 00  85 00 00 00 00 20 00 00   .rdata  ?      
000001F0   00 10 00 00 00 20 00 00  00 00 00 00 00 00 00 00                  
00000200   00 00 00 00 40 00 00 40  2E 72 65 6C 6F 63 00 00       @  @.reloc  
00000210   0C 00 00 00 00 30 00 00  00 10 00 00 00 30 00 00        0       0  
00000220   00 00 00 00 00 00 00 00  00 00 00 00 40 00 00 42               @  B
00000230   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000240   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000250   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000260   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000270   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000280   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000290   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000310   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000330   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000340   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000350   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000360   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000370   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000380   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000390   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000400   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000410   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000420   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000430   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000440   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000450   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000460   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000470   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000480   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000490   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000500   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000510   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000520   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000530   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000540   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000550   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000560   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000570   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000580   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000590   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000600   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000610   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000620   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000630   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000640   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000650   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000660   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000670   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000680   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000690   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000700   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000710   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000720   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000730   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000740   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000750   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000760   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000770   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000780   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000790   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000800   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000810   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000820   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000830   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000840   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000850   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000860   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000870   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000880   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000890   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000900   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000910   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000920   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000930   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000940   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000950   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000960   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000970   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000980   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000990   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000ED0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001000   B8 7B 00 00 00 C3 90 90  90 90 90 90 90 90 90 90   竰   ?         
00001010   B8 C8 01 00 00 C3 90 90  90 90 90 90 90 90 90 90   溉   ?         
00001020   B8 15 03 00 00 C3 90 90  90 90 90 90 90 90 90 90   ?   ?         
00001030   33 C0 C2 0C 00 90 90 90  90 90 90 90 90 90 90 90   3缆            
00001040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001090   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000010A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000010B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000010C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000010D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000010E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000010F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001200   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001210   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001220   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001230   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001240   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001250   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001260   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001270   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001280   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001290   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001310   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001330   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001340   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001350   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001360   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001370   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001380   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001390   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001400   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001410   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001420   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001430   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001440   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001450   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001460   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001470   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001480   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001490   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001500   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001510   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001520   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001530   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001540   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001550   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001560   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001570   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001580   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001590   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001600   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001610   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001620   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001630   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001640   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001650   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001660   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001670   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001680   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001690   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001700   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001710   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001720   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001730   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001740   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001750   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001760   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001770   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001780   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001790   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001800   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001810   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001820   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001830   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001840   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001850   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001860   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001870   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001880   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001890   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001900   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001910   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001920   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001930   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001940   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001950   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001960   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001970   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001980   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001990   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001ED0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002000   00 00 00 00 22 74 19 55  00 00 00 00 50 20 00 00       "t U    P   
00002010   01 00 00 00 04 00 00 00  04 00 00 00 28 20 00 00               (   
00002020   38 20 00 00 48 20 00 00  30 10 00 00 00 10 00 00   8   H   0      
00002030   10 10 00 00 20 10 00 00  5C 20 00 00 73 20 00 00           \   s   
00002040   79 20 00 00 7F 20 00 00  00 00 01 00 02 00 03 00   y               
00002050   74 65 73 74 64 6C 6C 2E  64 6C 6C 00 5F 5F 44 6C   testdll.dll __Dl
00002060   6C 4D 61 69 6E 43 52 54  53 74 61 72 74 75 70 40   lMainCRTStartup@
00002070   31 32 00 66 75 6E 63 30  00 66 75 6E 63 31 00 66   12 func0 func1 f
00002080   75 6E 63 32 00 00 00 00  00 00 00 00 00 00 00 00   unc2            
00002090   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002200   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002210   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002220   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002230   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002240   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002250   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002260   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002270   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002280   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002290   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002310   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002330   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002340   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002350   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002360   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002370   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002380   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002390   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002400   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002410   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002420   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002430   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002440   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002450   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002460   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002470   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002480   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002490   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002500   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002510   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002520   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002530   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002540   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002550   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002560   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002570   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002580   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002590   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002600   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002610   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002620   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002630   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002640   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002650   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002660   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002670   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002680   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002690   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002700   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002710   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002720   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002730   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002740   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002750   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002760   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002770   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002780   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002790   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002800   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002810   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002820   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002830   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002840   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002850   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002860   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002870   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002880   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002890   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002900   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002910   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002920   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002930   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002940   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002950   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002960   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002970   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002980   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002990   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002ED0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003000   00 00 00 00 08 00 00 00  00 00 00 00 00 00 00 00                  
00003010   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003090   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000030A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000030B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000030C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000030D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000030E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000030F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000031A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000031B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000031C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000031D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000031E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000031F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003200   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003210   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003220   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003230   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003240   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003250   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003260   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003270   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003280   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003290   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000032A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000032B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000032C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000032D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000032E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000032F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003310   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003330   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003340   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003350   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003360   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003370   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003380   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003390   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000033A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000033B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000033C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000033D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000033E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000033F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003400   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003410   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003420   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003430   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003440   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003450   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003460   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003470   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003480   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003490   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000034A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000034B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000034C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000034D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000034E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000034F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003500   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003510   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003520   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003530   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003540   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003550   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003560   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003570   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003580   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003590   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000035A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000035B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000035C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000035D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000035E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000035F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003600   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003610   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003620   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003630   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003640   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003650   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003660   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003670   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003680   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003690   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000036A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000036B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000036C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000036D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000036E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000036F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003700   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003710   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003720   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003730   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003740   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003750   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003760   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003770   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003780   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003790   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000037A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000037B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000037C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000037D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000037E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000037F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003800   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003810   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003820   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003830   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003840   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003850   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003860   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003870   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003880   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003890   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000038A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000038B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000038C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000038D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000038E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000038F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003900   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003910   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003920   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003930   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003940   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003950   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003960   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003970   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003980   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003990   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000039A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000039B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000039C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000039D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000039E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000039F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003A90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003AA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003AB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003AC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003AD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003AE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003AF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003B90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003BA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003BB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003BC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003BD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003BE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003BF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003C90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003CA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003CB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003CC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003CD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003CE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003CF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003E90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003EA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003EB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003EC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003ED0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003EE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003EF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003F90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003FA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003FB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003FC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003FD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003FE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003FF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  

手工解析DLL格式,并自动生成lib的代码为peExtractor.cpp:

  1. void CpeExtractorDlg::OnOpenfile()
  2. {
  3.         UpdateData(TRUE);
  4.         CFileDialog dlg(TRUE);
  5.         dlg.m_ofn.lpstrFilter = _T("Exe Files(*.exe)");
  6.         if (IDOK != dlg.DoModal())
  7.                 return;
  8.         CString filename = dlg.GetPathName();
  9.         SetDlgItemText(IDC_FILEPATH, filename);
  10.         try
  11.         {
  12.                 //解析文件头
  13.                 auto_handle<HANDLE> handle(CreateFile(filename, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL));
  14.                 DWORD filesize = GetFileSize(handle, NULL);
  15.                 IMAGE_DOS_HEADER dosheader;
  16.                 IMAGE_NT_HEADERS ntheader;
  17.                 DWORD ReadBytes;
  18.                 ReadFile(handle, &dosheader, sizeof(dosheader), &ReadBytes, NULL);
  19.                 if (dosheader.e_magic != IMAGE_DOS_SIGNATURE || ReadBytes != sizeof(dosheader))
  20.                         throw _T("DOS头无效");
  21.                 SetFilePointer(handle, dosheader.e_lfanew, 0, FILE_BEGIN);
  22.                 ReadFile(handle, &ntheader, sizeof(ntheader), &ReadBytes, NULL);
  23.                 if (ntheader.Signature != IMAGE_NT_SIGNATURE || ReadBytes != sizeof(ntheader))
  24.                         throw _T("NT头无效");
  25.                 std::vector<IMAGE_SECTION_HEADER> sectionheaders;
  26.                 sectionheaders.resize(ntheader.FileHeader.NumberOfSections);
  27.                 ReadFile(handle, sectionheaders.data(), sizeof(IMAGE_SECTION_HEADER)*ntheader.FileHeader.NumberOfSections, &ReadBytes, NULL);
  28.                 char temp[256];


  29.                 std::map<IMAGE_SECTION_HEADER*, std::vector<BYTE>> mapdata;
  30.                 DWORD readnum;

  31.                 for (std::vector<IMAGE_SECTION_HEADER>::iterator itor = sectionheaders.begin(); itor != sectionheaders.end(); ++itor)
  32.                 {
  33.                         m_out += "段名:";
  34.                         m_out += (char*)(*itor).Name;
  35.                         m_out += " RVA地址:";
  36.                         sprintf_s(temp, "0x%08x", (*itor).VirtualAddress);
  37.                         m_out += temp;
  38.                         m_out += " RVA大小:";
  39.                         sprintf_s(temp, "%d", (*itor).Misc.VirtualSize);
  40.                         m_out += " 文件内偏移:";
  41.                         sprintf_s(temp, "0x%08x", (*itor).PointerToRawData);
  42.                         m_out += temp;
  43.                         m_out += " 文件内大小:";
  44.                         sprintf_s(temp, "%d", (*itor).SizeOfRawData);
  45.                         m_out += temp;
  46.                         m_out += "\r\n";

  47.                         //取出各段数据
  48.                         std::vector<BYTE>& cursegdata = mapdata[&(*itor)];
  49.                         cursegdata.resize((*itor).SizeOfRawData);
  50.                         SetFilePointer(handle, (*itor).PointerToRawData, NULL, FILE_BEGIN);
  51.                         ReadFile(handle, (LPVOID)cursegdata.data(), (*itor).SizeOfRawData, &readnum, NULL);
  52.                 }

  53.                 //分析导出表
  54.                 if (ntheader.FileHeader.SizeOfOptionalHeader >= sizeof(IMAGE_OPTIONAL_HEADER))
  55.                 {//如果有可选头
  56.                         IMAGE_DATA_DIRECTORY& cur = ntheader.OptionalHeader.DataDirectory[DIR_EXPORT];
  57.                         IMAGE_SECTION_HEADER* matchedsec;
  58.                         if (LocateVirtualAddr(sectionheaders, cur.VirtualAddress, matchedsec))
  59.                         {//如果存在该目录
  60.                                 IMAGE_EXPORT_DIRECTORY ied;
  61.                                 DWORD readnum;
  62.                                 DWORD offset = cur.VirtualAddress - matchedsec->VirtualAddress + matchedsec->PointerToRawData;//计算偏移
  63.                                 SetFilePointer(handle, offset, NULL, FILE_BEGIN);
  64.                                 ReadFile(handle, &ied, sizeof(ied), &readnum, NULL);
  65.                                 std::vector<libFuncs> funcarray;
  66.                                 funcarray.resize(ied.NumberOfFunctions);

  67.                                 //获取AddressOfFunctions
  68.                                 IMAGE_SECTION_HEADER* matchedseg,*matchedseg1,*matchedseg2;
  69.                                 if (LocateVirtualAddr(sectionheaders, ied.AddressOfFunctions, matchedseg))
  70.                                 {
  71.                                         LPVOID* addrarr = (LPVOID*)(mapdata[matchedseg].data() + ied.AddressOfFunctions - matchedseg->VirtualAddress);
  72.                                         //取得真实数据
  73.                                         for (int index = 0; index < ied.NumberOfFunctions; index++)
  74.                                         {
  75.                                                 funcarray[index].funcaddr = addrarr[index];
  76.                                         }
  77.                                 }
  78.                                 if (LocateVirtualAddr(sectionheaders, ied.AddressOfNameOrdinals, matchedseg) && LocateVirtualAddr(sectionheaders,ied.AddressOfNames,matchedseg1))
  79.                                 {
  80.                                         WORD* indexarr = (WORD*)((BYTE*)mapdata[matchedseg].data() + ied.AddressOfNameOrdinals - matchedseg->VirtualAddress);
  81.                                         DWORD* namearr = (DWORD*)((BYTE*)mapdata[matchedseg1].data() + ied.AddressOfNames - matchedseg1->VirtualAddress);
  82.                                         for (int index = 0; index < ied.NumberOfNames; index++)
  83.                                         {
  84.                                                 if (LocateVirtualAddr(sectionheaders, namearr[index], matchedseg2))
  85.                                                 {
  86.                                                         char* nameaddr = (char*)mapdata[matchedseg2].data() + namearr[index] - matchedseg2->VirtualAddress;
  87.                                                         funcarray[indexarr[index]].funcname = nameaddr;
  88.                                                         funcarray[indexarr[index]].type = NAME_SYMBOL_EXPORT;
  89.                                                 }
  90.                                         }
  91.                                 }

  92.                                 for (std::vector<libFuncs>::iterator itor = funcarray.begin(); itor != funcarray.end(); ++itor)
  93.                                 {
  94.                                         ModifyName((*itor).funcname, (*itor).type | OBJ_TYPE_C);
  95.                                 }
  96.                                 //按VirtualAddress排序,方便后面计算每个.text段大小,后期考虑采用反汇编引擎计算大小
  97.                                 std::sort(funcarray.begin(), funcarray.end());

  98.                                 //1.构造section目录
  99.                                 //2.构造section内容,将各个section内部数据存储到lib中,lib的section的个数为导出符号数,导出地址需要适应IMAGE_SCN_ALIGN_??BYTES
  100.                                 //3.构造COFF Symbol Table
  101.                                 //4.加入导出符号名数组

  102.                                 std::vector<BYTE> filedata;
  103.                                 IMAGE_FILE_HEADER objheader;
  104.                                 int symbolnum = 0;

  105.                                 //加入文件头
  106.                                 memset(&objheader, 0, sizeof(objheader));
  107.                                 filedata.insert(filedata.end(), (BYTE*)&objheader, (BYTE*)(&objheader + 1));

  108.                                 //加入k个.text段
  109.                                 int secnum = funcarray.size()-1;//要求dll输出最后一个为辅助函数
  110.                                 int offsetraw = sizeof(IMAGE_FILE_HEADER)+secnum * sizeof(IMAGE_SECTION_HEADER);//后置数据偏移
  111.                                 int offsetsymbol = 4;//符号字串偏移,之前有字串数DWORD

  112.                                 symbolnum = secnum;
  113.                                 std::vector<BYTE> rawdata;//储存各个section指向的数据
  114.                                 std::vector<BYTE> symbolinfo;//存储COFF Symbol Table
  115.                                 std::vector<BYTE> functors;//存储符号名数组

  116.                                 int index = 0;
  117.                                 for (std::vector<IMAGE_SECTION_HEADER>::iterator itor = sectionheaders.begin(); itor != sectionheaders.end(); ++itor)
  118.                                 {//将各个段分别装入obj
  119.                                         std::vector<BYTE>& cursegdata = mapdata[&(*itor)];
  120.                                         rawdata.insert(rawdata.end(), cursegdata.begin(), cursegdata.end());

  121.                                         for (int m = 0; m < funcarray.size() - 1; m++)
  122.                                         {
  123.                                                 if (IsAddrInSection((*itor), (DWORD)funcarray[m].funcaddr))
  124.                                                 {
  125.                                                         IMAGE_SECTION_HEADER secheader;
  126.                                                         memset(&secheader, 0, sizeof(secheader));
  127.                                                         memcpy(secheader.Name, (*itor).Name, IMAGE_SIZEOF_SHORT_NAME);
  128.                                                         secheader.SizeOfRawData = (DWORD)funcarray[m + 1].funcaddr - (DWORD)funcarray[m].funcaddr;
  129.                                                         secheader.PointerToRawData = offsetraw + (DWORD)funcarray[m].funcaddr - (*itor).VirtualAddress;
  130.                                                         secheader.Characteristics = IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_16BYTES | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ;
  131.                                                         filedata.insert(filedata.end(), (BYTE*)&secheader, (BYTE*)(&secheader + 1));

  132.                                                         //构造symboltable和section关联
  133.                                                         IMAGE_SYMBOL symbol;
  134.                                                         std::ostringstream os;
  135.                                                         functors.insert(functors.end(), funcarray[m].funcname.c_str(), funcarray[m].funcname.c_str() + funcarray[m].funcname.size() + 1);
  136.                                                         memset(&symbol, 0, sizeof(symbol));
  137.                                                         symbol.N.LongName[1] = offsetsymbol;
  138.                                                         symbol.SectionNumber = index + 1;
  139.                                                         symbol.Type = TYPE_FUNCTION;
  140.                                                         symbol.StorageClass = IMAGE_SYM_CLASS_EXTERNAL;
  141.                                                         symbolinfo.insert(symbolinfo.end(), (BYTE*)&symbol, (BYTE*)(&symbol + 1));
  142.                                                         offsetsymbol += funcarray[m].funcname.size() + 1;
  143.                                                         index++;
  144.                                                 }
  145.                                         }
  146.                                         offsetraw += cursegdata.size();
  147.                                 }
  148.                                 filedata.insert(filedata.end(), rawdata.begin(), rawdata.end());

  149.                                 //更新头部
  150.                                 IMAGE_FILE_HEADER* pobjheader = (IMAGE_FILE_HEADER*)filedata.data();
  151.                                 pobjheader->Machine = IMAGE_FILE_MACHINE_I386;
  152.                                 pobjheader->NumberOfSections = secnum;
  153.                                 pobjheader->PointerToSymbolTable = filedata.size();//计算符号表偏移
  154.                                 pobjheader->NumberOfSymbols = symbolnum;
  155.                                 //加入符号表
  156.                                 filedata.insert(filedata.end(), symbolinfo.begin(), symbolinfo.end());
  157.                                 //加入符号名数组个数
  158.                                 int strsize = functors.size() + 4;
  159.                                 filedata.insert(filedata.end(), (BYTE*)&strsize, (BYTE*)(&strsize + 1));
  160.                                 //加入符号名数组
  161.                                 filedata.insert(filedata.end(), functors.begin(), functors.end());

  162.                                 DWORD writenum;
  163.                                 auto_handle<HANDLE> handle(CreateFile("test.obj", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL));
  164.                                 WriteFile(handle, filedata.data(), filedata.size(), &writenum, NULL);
  165.                         }
  166.                 }
  167.         }
  168.         catch (LPCTSTR err)
  169.         {
  170.                 AfxMessageBox(err);
  171.         }
  172.         catch (...)
  173.         {
  174.                 AfxMessageBox(_T("未知错误"));
  175.         }
  176.         UpdateData(FALSE);
  177. }
复制代码


自动生成的obj内容为:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   4C 01 03 00 00 00 00 00  8C 30 00 00 03 00 00 00   L       ?      
00000010   00 00 00 00 2E 74 65 78  74 00 00 00 00 00 00 00       .text      
00000020   00 00 00 00 10 00 00 00  8C 00 00 00 00 00 00 00           ?      
00000030   00 00 00 00 00 00 00 00  20 00 50 60 2E 74 65 78             P`.tex
00000040   74 00 00 00 00 00 00 00  00 00 00 00 10 00 00 00   t               
00000050   9C 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ?              
00000060   20 00 50 60 2E 74 65 78  74 00 00 00 00 00 00 00     P`.text      
00000070   00 00 00 00 10 00 00 00  AC 00 00 00 00 00 00 00           ?      
00000080   00 00 00 00 00 00 00 00  20 00 50 60 B8 7B 00 00             P`竰  
00000090   00 C3 90 90 90 90 90 90  90 90 90 90 B8 C8 01 00    ?         溉  
000000A0   00 C3 90 90 90 90 90 90  90 90 90 90 B8 15 03 00    ?         ?  
000000B0   00 C3 90 90 90 90 90 90  90 90 90 90 33 C0 C2 0C    ?         3缆
000000C0   00 90 90 90 90 90 90 90  90 90 90 90 00 00 00 00                  
000000D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000000E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000000F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000001F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000200   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000210   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000220   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000230   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000240   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000250   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000260   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000270   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000280   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000290   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000002F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000310   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000330   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000340   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000350   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000360   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000370   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000380   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000390   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000003F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000400   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000410   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000420   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000430   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000440   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000450   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000460   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000470   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000480   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000490   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000004F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000500   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000510   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000520   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000530   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000540   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000550   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000560   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000570   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000580   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000590   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000005F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000600   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000610   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000620   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000630   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000640   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000650   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000660   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000670   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000680   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000690   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000006F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000700   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000710   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000720   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000730   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000740   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000750   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000760   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000770   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000780   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000790   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000007F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000800   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000810   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000820   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000830   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000840   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000850   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000860   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000870   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000880   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000890   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000008F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000900   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000910   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000920   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000930   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000940   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000950   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000960   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000970   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000980   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000990   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000009F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000A90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000AF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000B90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000BF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000C90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000CF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000E90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000ED0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000EF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000F90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00000FF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001000   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001010   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001090   22 74 19 55 00 00 00 00  50 20 00 00 01 00 00 00   "t U    P      
000010A0   04 00 00 00 04 00 00 00  28 20 00 00 38 20 00 00           (   8   
000010B0   48 20 00 00 30 10 00 00  00 10 00 00 10 10 00 00   H   0           
000010C0   20 10 00 00 5C 20 00 00  73 20 00 00 79 20 00 00       \   s   y   
000010D0   7F 20 00 00 00 00 01 00  02 00 03 00 74 65 73 74               test
000010E0   64 6C 6C 2E 64 6C 6C 00  5F 5F 44 6C 6C 4D 61 69   dll.dll __DllMai
000010F0   6E 43 52 54 53 74 61 72  74 75 70 40 31 32 00 66   nCRTStartup@12 f
00001100   75 6E 63 30 00 66 75 6E  63 31 00 66 75 6E 63 32   unc0 func1 func2
00001110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000011F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001200   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001210   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001220   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001230   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001240   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001250   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001260   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001270   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001280   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001290   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000012F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001310   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001330   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001340   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001350   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001360   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001370   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001380   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001390   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000013F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001400   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001410   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001420   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001430   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001440   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001450   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001460   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001470   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001480   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001490   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000014F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001500   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001510   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001520   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001530   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001540   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001550   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001560   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001570   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001580   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001590   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000015F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001600   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001610   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001620   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001630   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001640   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001650   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001660   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001670   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001680   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001690   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000016F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001700   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001710   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001720   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001730   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001740   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001750   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001760   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001770   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001780   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001790   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000017F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001800   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001810   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001820   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001830   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001840   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001850   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001860   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001870   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001880   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001890   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000018F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001900   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001910   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001920   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001930   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001940   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001950   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001960   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001970   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001980   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001990   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000019F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001A90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001AF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001B90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001BF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001C90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001CF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001E90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001ED0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001EF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001F90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00001FF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002000   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002010   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002090   08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000020F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002100   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002110   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002120   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002130   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002140   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002150   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002160   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002170   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002180   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000021F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002200   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002210   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002220   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002230   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002240   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002250   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002260   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002270   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002280   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002290   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000022F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002310   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002330   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002340   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002350   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002360   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002370   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002380   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002390   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000023F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002400   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002410   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002420   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002430   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002440   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002450   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002460   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002470   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002480   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002490   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000024F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002500   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002510   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002520   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002530   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002540   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002550   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002560   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002570   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002580   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002590   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000025F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002600   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002610   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002620   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002630   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002640   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002650   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002660   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002670   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002680   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002690   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000026F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002700   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002710   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002720   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002730   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002740   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002750   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002760   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002770   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002780   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002790   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000027F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002800   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002810   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002820   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002830   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002840   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002850   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002860   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002870   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002880   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002890   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000028F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002900   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002910   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002920   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002930   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002940   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002950   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002960   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002970   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002980   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002990   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
000029F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002A90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002AF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002B90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002BF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002C90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002CF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002E90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002ED0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002EF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F00   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F10   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F20   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F30   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F40   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002F90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00002FF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003000   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003010   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003080   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00                  
00003090   04 00 00 00 00 00 00 00  01 00 20 00 02 00 00 00                  
000030A0   00 00 0B 00 00 00 00 00  00 00 02 00 20 00 02 00                  
000030B0   00 00 00 00 12 00 00 00  00 00 00 00 03 00 20 00                  
000030C0   02 00 19 00 00 00 5F 66  75 6E 63 30 00 5F 66 75         _func0 _fu
000030D0   6E 63 31 00 5F 66 75 6E  63 32 00                  nc1 _func2

lib test.obj /out:test.lib 得到lib  
将lib放到用于测试lib的工程目录下
测试lib的代码为test.c://我们自动生成的obj为c格式的obj,c++的话要自动生成名称修饰,这个我们以后研究

  1. #include <stdio.h>

  2. #pragma comment(lib,"test.lib")
  3. int func0();
  4. int func1();
  5. int func2();

  6. void main()
  7. {
  8.         printf("func0:%d func1:%d func2:%d\n", func0(), func1(), func2());
  9. }
复制代码


测试结果为:
func0:123 func1:456 func2:789       符合预期,单步调试,也可以看到静态lib确实链接到了exe中了。
在本节,我将一个最简单的dll自动生成lib,这就说明了dll2lib是可行的

同时也引出了以后需要做的工作,至少有以下几点:
1.本次测试用的dll是c式的,考虑c++呢,如何处理名称修饰?
2.本次测试只用了.text段,如果有全局变量,导入导出函数呢?
3.本次测试,其实是将dll整个变成一个obj,如果dll较为庞大,如何做到代码分离?
4.本次测试可以看到dll导出表并不存储函数大小,我采取了特殊方式计算函数大小,今后可以改进为反汇编方式获取
5.。。。
回复

使用道具 举报

307

主题

228

回帖

7345

积分

用户组: 真·技术宅

UID
2
精华
76
威望
291 点
宅币
5595 个
贡献
253 次
宅之契约
0 份
在线时间
949 小时
注册时间
2014-1-25
 楼主| 发表于 2015-4-1 00:36:35 | 显示全部楼层
其他代码:

  1. #define CODEALIGN 16
  2. #define TYPE_FUNCTION 0x20

  3. enum
  4. {
  5.         DIR_EXPORT=0,
  6.         DIR_IMPORT,
  7.         DIR_RESOURCE,
  8.         DIR_EXCEPTION,
  9.         DIR_CERTIFICATE,
  10.         DIR_RELOCATION,
  11.         DIR_DEBUG,
  12.         DIR_ARCHITECTURE,
  13.         DIR_GLOBALPTR,
  14.         DIR_TLS,
  15.         DIR_LOADCONFIG,
  16.         DIR_BOUNDIMPORT,
  17.         DIR_IAT,
  18.         DIR_DELAYIMPORT,
  19.         DIR_CLR,
  20.         DIR_RESERVED,
  21. };

  22. enum DATATYPE
  23. {
  24.         NONAME_SYMBOL_EXPORT=0x1,//导出为序号
  25.         NAME_SYMBOL_EXPORT=0x2,//导出为函数名
  26.         INNER_SYMBOL_EXPORT=0x4,//未导出内部函数

  27.         OBJ_TYPE_C=0x100,
  28.         OBJ_TYPE_CPP=0x200,
  29.         OBJ_TYPE_COM=0x400,
  30. };

  31. #define NOMANGLING "^[A-Za-z0-9]+$"

  32. struct libFuncs
  33. {
  34.         libFuncs(){ type = NONAME_SYMBOL_EXPORT; funcaddr = NULL; };
  35.         int type;//0:noname export      1:name export      2:innerfunc export
  36.         std::string funcname;
  37.         LPVOID funcaddr;//Virutal Address
  38.         bool operator < (const libFuncs& ll) const { return funcaddr < ll.funcaddr; };
  39. };

  40. BOOL RawAddrToVirtualAddr(std::vector<IMAGE_SECTION_HEADER>& sections, DWORD inptr, DWORD& outptr)//文件地址转虚拟地址
  41. {
  42.         std::vector<IMAGE_SECTION_HEADER>::iterator itor = sections.begin();
  43.         for (; itor != sections.end(); ++itor)
  44.         {
  45.                 if ((*itor).PointerToRawData <= inptr && inptr <= (*itor).PointerToRawData + (*itor).SizeOfRawData)
  46.                         break;
  47.         }
  48.         if (itor != sections.end())
  49.         {//如果存在该目录
  50.                 outptr = inptr - (*itor).PointerToRawData + (*itor).VirtualAddress;
  51.                 return TRUE;
  52.         }
  53.         else
  54.         {
  55.                 return FALSE;
  56.         }
  57. }

  58. BOOL VirtualAddrToRawAddr(std::vector<IMAGE_SECTION_HEADER>& sections, DWORD inptr, DWORD& outptr)//虚拟地址转文件地址
  59. {
  60.         std::vector<IMAGE_SECTION_HEADER>::iterator itor = sections.begin();
  61.         for (; itor != sections.end(); ++itor)
  62.         {
  63.                 if ((*itor).VirtualAddress <= inptr && inptr <= (*itor).VirtualAddress + (*itor).Misc.VirtualSize)
  64.                         break;
  65.         }
  66.         if (itor != sections.end())
  67.         {//如果存在该目录
  68.                 outptr = inptr - (*itor).VirtualAddress + (*itor).PointerToRawData;
  69.                 return TRUE;
  70.         }
  71.         else
  72.         {
  73.                 return FALSE;
  74.         }
  75. }

  76. BOOL LocateVirtualAddr(std::vector<IMAGE_SECTION_HEADER>& sections, DWORD inptr, IMAGE_SECTION_HEADER*& outptr)
  77. {
  78.         std::vector<IMAGE_SECTION_HEADER>::iterator itor = sections.begin();
  79.         for (; itor != sections.end(); ++itor)
  80.         {
  81.                 if ((*itor).VirtualAddress <= inptr && inptr <= (*itor).VirtualAddress + (*itor).Misc.VirtualSize)
  82.                         break;
  83.         }
  84.         if (itor != sections.end())
  85.         {//如果存在该目录
  86.                 outptr = &(*itor);
  87.                 return TRUE;
  88.         }
  89.         else
  90.         {
  91.                 return FALSE;
  92.         }       
  93. }

  94. BOOL IsAddrInSection(IMAGE_SECTION_HEADER& section, DWORD inptr)//判断虚拟地址是否位于段中
  95. {
  96.         if (section.VirtualAddress <= inptr && inptr <= section.VirtualAddress + section.Misc.VirtualSize)
  97.                 return true;
  98.         else
  99.                 return false;
  100. }

  101. bool InferFuncType(std::string& nameout,std::vector<BYTE>& codedata)//推断函数调用规范,输出C++粉碎名称
  102. {
  103.         return true;
  104. }

  105. bool ModifyName(std::string& namein,int type)//参考dname代码,模拟名称修饰
  106. {
  107.         using namespace boost::xpressive;
  108.         std::string src = namein;
  109.         if (type & NAME_SYMBOL_EXPORT)
  110.         {
  111.                 cregex reg = cregex::compile(NOMANGLING);
  112.                 if (regex_match(src.c_str(), reg))//无修饰符号
  113.                 {
  114.                         if (type & OBJ_TYPE_C)
  115.                         {//转换为C导出函数
  116.                                 namein = "_";
  117.                                 namein += src;
  118.                         }
  119.                 }
  120.         }
  121.         else if (type & NONAME_SYMBOL_EXPORT)
  122.         {
  123.                 static int index = 0;
  124.                 char buf[256];
  125.                 sprintf_s(buf, "_func%d", index);
  126.                 namein = buf;
  127.                 index++;
  128.         }
  129.         else if (type & INNER_SYMBOL_EXPORT)
  130.         {

  131.         }
  132.         return true;
  133. }
复制代码
回复 赞! 靠!

使用道具 举报

1112

主题

1653

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
245
威望
744 点
宅币
24261 个
贡献
46222 次
宅之契约
0 份
在线时间
2298 小时
注册时间
2014-1-26
发表于 2015-4-1 17:03:29 | 显示全部楼层
你的帖子总是有大量的Dump或者其它一些必须要在手机上搓半天才能看到后文的东西= =
这叫刷屏,懂不
回复 赞! 靠!

使用道具 举报

307

主题

228

回帖

7345

积分

用户组: 真·技术宅

UID
2
精华
76
威望
291 点
宅币
5595 个
贡献
253 次
宅之契约
0 份
在线时间
949 小时
注册时间
2014-1-25
 楼主| 发表于 2015-4-6 16:52:07 | 显示全部楼层

lib文件研究(二.二)

这次添加了函数调用类型简单识别的模块,为的是在def定义的dll中可以分析出函数原型,在lib中给出更为确切的符号定义

  1. #include <vector>
  2. #include <map>
  3. #include <sstream>
  4. #include <DbgHelp.h>
  5. #include <string>
  6. #include <boost/xpressive/xpressive.hpp>
  7. #include <boost/xpressive/regex_algorithms.hpp>

  8. #pragma comment(lib,"DbgHelp.lib")
  9. #pragma comment(lib,"BeaEngine.lib")

  10. #define BEA_ENGINE_STATIC
  11. #define BEA_USE_STDCALL
  12. #include "BeaEngine.h"

  13. #define In
  14. #define Out

  15. //任意pe格式转静态lib工具
  16. //作用:
  17. //        1.直接摄取第三方pe文件的函数和数据到自己的程序中
  18. //        2.反调试、反逆向、反Hook
  19. //        3.压缩api,提高程序整体执行效率
  20. //        4.自动生成声明定义
  21. //适用对象:
  22. //所有pe格式,包括exe,dll,sys,    文件pe和内存pe

  23. #define CODEALIGN 16
  24. #define TYPE_FUNCTION 0x20

  25. enum
  26. {
  27.         DIR_EXPORT=0,
  28.         DIR_IMPORT,
  29.         DIR_RESOURCE,
  30.         DIR_EXCEPTION,
  31.         DIR_CERTIFICATE,
  32.         DIR_RELOCATION,
  33.         DIR_DEBUG,
  34.         DIR_ARCHITECTURE,
  35.         DIR_GLOBALPTR,
  36.         DIR_TLS,
  37.         DIR_LOADCONFIG,
  38.         DIR_BOUNDIMPORT,
  39.         DIR_IAT,
  40.         DIR_DELAYIMPORT,
  41.         DIR_CLR,
  42.         DIR_RESERVED,
  43. };

  44. enum DATATYPE
  45. {
  46.         NONAME_SYMBOL_EXPORT=0x1,//导出为序号
  47.         NAME_SYMBOL_EXPORT=0x2,//导出为函数名
  48.         INNER_SYMBOL_EXPORT=0x4,//未导出内部函数

  49.         CALL_TYPE_CDECL=0x100,//__cdecl
  50.         CALL_TYPE_STD=0x200,//__stdcall
  51.         CALL_TYPE_FAST=0x400,//__fastcall  only ecx
  52.         CALL_TYPE_FAST1,//__fastcall  ecx+edx
  53.         CALL_TYPE_THIS=0x800,//__thiscall
  54. };

  55. /*
  56.         C调用解析
  57. 说明:未初始化引用的变量  ()
  58. if (ecx)
  59.         if (edx)
  60.                 //fastcall  retn n    @func@n+8
  61.                 else
  62.                 //fastcall  retn n    @func@4
  63. else if retn n!=0
  64.         //stdcall _func@n
  65. else
  66.         //cdecl  _func
  67. */

  68. int ModifyName(In Out std::string& namein, Out std::string& descinfo, std::vector<DISASM>& asmlines, In LPVOID code)//参考dname代码,模拟名称修饰
  69. {
  70.         using namespace boost::xpressive;
  71.         std::string src = namein;

  72.         char recoveredname[MAX_PATH];
  73.         int sum = 0;//粗略获取函数体长度
  74.         int maxparamstack = 0;//参数栈
  75.         int recnum = UnDecorateSymbolName(src.c_str(), recoveredname,MAX_PATH,UNDNAME_COMPLETE);

  76.         DISASM disasm;
  77.         disasm.EIP = (UIntPtr)code;
  78.        
  79.         int len = 0, maxsize = 0xFFFF;
  80.         do
  81.         {
  82.                 memset(&disasm, 0, sizeof(disasm));
  83.                 disasm.EIP = (UIntPtr)sum;
  84.                 len = Disasm(&disasm);
  85.                 sum += len;
  86.                 if (len > 0)
  87.                 {
  88.                         asmlines.push_back(disasm);
  89.                         if (strstr(disasm.CompleteInstr,"ret"))
  90.                                 break;//发现ret指令则假设函数退出并以此推测函数大小和
  91.                 }
  92.         } while (len > 0 && sum <= maxsize);

  93.         if (recnum <= src.length())
  94.         {
  95.                 //解析失败,进行手动解析,自动生成C/C++修饰,先按如上分析过程解析C调用
  96.                 int lines = asmlines.size();
  97.                 int presume_calltype = CALL_TYPE_CDECL;
  98.                 bool isespmovtoebp = false;
  99.                 //检测__fastcall
  100.                 for (int i = 0; i < lines; i++)
  101.                 {
  102.                         if (strstr(asmlines[i].CompleteInstr,"ecx"))
  103.                         {//检测第一次引用ecx
  104.                                 presume_calltype = CALL_TYPE_FAST;
  105.                                 cregex ecxlval = cregex::compile("(mov(sx|zx)?|lea|pop) ecx");//若ecx为左值,说明
  106.                                 if (regex_match(asmlines[i].CompleteInstr, ecxlval))
  107.                                         presume_calltype = CALL_TYPE_CDECL;
  108.                                 break;
  109.                         }

  110.                         if (strstr(asmlines[i].CompleteInstr, "edx"))
  111.                         {//检测第一次引用edx  (未引用edx并不说明函数原型只有一参)
  112.                                 presume_calltype = CALL_TYPE_FAST1;
  113.                                 cregex ecxlval = cregex::compile("(mov(sx|zx)?|lea|pop) edx");//若ecx为左值,说明
  114.                                 if (regex_match(asmlines[i].CompleteInstr, ecxlval))
  115.                                         presume_calltype = CALL_TYPE_CDECL;
  116.                                 break;
  117.                         }
  118.                 }
  119.                 if (presume_calltype == CALL_TYPE_CDECL)
  120.                 {//检测__stdcall
  121.                         cregex ret = cregex::compile("retn ([0-9A-Fh]+)");
  122.                         cmatch what;
  123.                         if (regex_match(asmlines[maxsize - 1].CompleteInstr, what, ret))
  124.                         {
  125.                                 int retstack = asmlines[maxsize - 1].Instruction.Immediat;
  126.                                 if (retstack)
  127.                                 {
  128.                                         maxparamstack = retstack;
  129.                                         presume_calltype = CALL_TYPE_STD;
  130.                                 }
  131.                         }
  132.                 }
  133.                
  134.                 //分析参数栈大小
  135.                 for (int i = 0; i < lines; i++)
  136.                 {
  137.                         if (strstr(asmlines[i].CompleteInstr, "mov ebp, esp"))
  138.                         {
  139.                                 isespmovtoebp = true;
  140.                                 break;
  141.                         }
  142.                 }

  143.                 cregex exp;
  144.                 cmatch what;
  145.                 if (isespmovtoebp)
  146.                         exp = cregex::compile("ebp\\+([0-9]{2})");
  147.                 else
  148.                         exp = cregex::compile("esp\\+([0-9]{2})");
  149.                 for (int i = 0; i < lines; i++)
  150.                 {
  151.                         if (regex_search(asmlines[i].CompleteInstr, what, exp))
  152.                         {
  153.                                 int paramstack = asmlines[i].Instruction.Immediat;
  154.                                 if (maxparamstack < paramstack)
  155.                                         maxparamstack = paramstack;
  156.                         }
  157.                 }

  158.                 //调整参数栈大小
  159.                 if (maxparamstack && presume_calltype == CALL_TYPE_FAST)
  160.                         presume_calltype = CALL_TYPE_FAST1;
  161.                 if (presume_calltype == CALL_TYPE_FAST1)
  162.                 {
  163.                         maxparamstack += 8;
  164.                 }
  165.                 else if (presume_calltype == CALL_TYPE_FAST)
  166.                 {
  167.                         maxparamstack = 4;
  168.                 }

  169.                 char funcformat[MAX_PATH];
  170.                 strcpy(recoveredname, "int ");//假定返回int
  171.                 if (presume_calltype & CALL_TYPE_CDECL)
  172.                 {
  173.                         sprintf_s(funcformat, "_%s", src.c_str());
  174.                         strcat(recoveredname, "__cdecl ");
  175.                 }
  176.                 else if (presume_calltype & CALL_TYPE_STD)
  177.                 {
  178.                         sprintf_s(funcformat, "_%s@%d", src.c_str(), maxparamstack);
  179.                         strcat(recoveredname, "__stdcall ");
  180.                 }
  181.                 else if (presume_calltype & CALL_TYPE_FAST)
  182.                 {
  183.                         sprintf_s(funcformat, "@%s@%d", src.c_str(), maxparamstack);
  184.                         strcat(recoveredname, "__fastcall ");
  185.                 }

  186.                 strcat(recoveredname, src.c_str());
  187.                 strcat(recoveredname, "(");
  188.                 while (maxparamstack > 0)
  189.                 {
  190.                         strcat(recoveredname, "int");
  191.                         maxparamstack -= 4;
  192.                         if (maxparamstack > 0)
  193.                                 strcat(recoveredname, ",");
  194.                 }
  195.                 strcat(recoveredname, ")");

  196.                 descinfo = recoveredname;
  197.                 namein = funcformat;
  198.         }
  199.         else
  200.         {
  201.                 namein = recoveredname;
  202.         }
  203.         return sum;
  204. }
复制代码
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-29 20:25 , Processed in 0.049326 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表