lib文件研究(二)
上次我手工构造了一个最简单的lib文件,并去掉了很多冗余部分,这是研究dll2lib的第一步,研究问题要从最简单最通用的地方下手这次我将用生成一个dll并导出若干个函数,之后我的peExtractor解析dll,获得导出函数字节码,并用这些字节码自动构造lib。当然该dll是最简单的,只有内存操作,且只考虑导出符号为函数的情况:
1.制作dll,使用msvc6,忽略所有默认库,重置入口点为_DllMainCRTStartup,这样不会造成冗余导入lib和各种复杂情况的出现!
testdll.cpp:
extern "C"
{
__declspec (dllexport) int func0()
{
return 123;
}
__declspec (dllexport) int func1()
{
return 456;
}
__declspec (dllexport) int func2()
{
return 789;
}
__declspec (dllexport) int __stdcall _DllMainCRTStartup(int,int,int)//用作辅助函数,在自动构造的lib中并不出现
{
return 0;
}
}
生成的dll字节码为:
Offset 01234567 89ABCDEF
00000000 4D 5A 90 00 03 00 00 0004 00 00 00 FF FF 00 00 MZ
00000010 B8 00 00 00 00 00 00 0040 00 00 00 00 00 00 00 ? @
00000020 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000030 00 00 00 00 00 00 00 0000 00 00 00 C0 00 00 00 ?
00000040 0E 1F BA 0E 00 B4 09 CD21 B8 01 4C CD 21 54 68 ? ???L?Th
00000050 69 73 20 70 72 6F 67 7261 6D 20 63 61 6E 6E 6F is program canno
00000060 74 20 62 65 20 72 75 6E20 69 6E 20 44 4F 53 20 t be run in DOS
00000070 6D 6F 64 65 2E 0D 0D 0A24 00 00 00 00 00 00 00 mode. $
00000080 85 D2 03 DB C1 B3 6D 88C1 B3 6D 88 C1 B3 6D 88 呉 哿砿埩砿埩砿?
00000090 29 AC 66 88 C0 B3 6D 8829 AC 69 88 C0 B3 6D 88 )琭埨砿?琲埨砿?
000000A0 52 69 63 68 C1 B3 6D 8800 00 00 00 00 00 00 00 Rich脸m?
000000B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000000C0 50 45 00 00 4C 01 03 0022 74 19 55 00 00 00 00 PEL "t U
000000D0 00 00 00 00 E0 00 0E 210B 01 06 00 00 10 00 00 ? !
000000E0 00 20 00 00 00 00 00 0030 10 00 00 00 10 00 00 0
000000F0 00 20 00 00 00 00 00 1000 10 00 00 00 10 00 00
00000100 04 00 00 00 00 00 00 0004 00 00 00 00 00 00 00
00000110 00 40 00 00 00 10 00 0000 00 00 00 02 00 00 00 @
00000120 00 00 10 00 00 10 00 0000 00 10 00 00 10 00 00
00000130 00 00 00 00 10 00 00 0000 20 00 00 85 00 00 00 ?
00000140 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000150 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000160 00 30 00 00 08 00 00 0000 00 00 00 00 00 00 00 0
00000170 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000180 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000190 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001B0 00 00 00 00 00 00 00 002E 74 65 78 74 00 00 00 .text
000001C0 40 00 00 00 00 10 00 0000 10 00 00 00 10 00 00 @
000001D0 00 00 00 00 00 00 00 0000 00 00 00 20 00 00 60 `
000001E0 2E 72 64 61 74 61 00 0085 00 00 00 00 20 00 00 .rdata?
000001F0 00 10 00 00 00 20 00 0000 00 00 00 00 00 00 00
00000200 00 00 00 00 40 00 00 402E 72 65 6C 6F 63 00 00 @@.reloc
00000210 0C 00 00 00 00 30 00 0000 10 00 00 00 30 00 00 0 0
00000220 00 00 00 00 00 00 00 0000 00 00 00 40 00 00 42 @B
00000230 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000240 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000250 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000260 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000270 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000280 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000290 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000300 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000310 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000320 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000330 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000340 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000350 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000360 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000370 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000380 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000390 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000400 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000410 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000420 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000430 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000440 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000450 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000460 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000470 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000480 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000490 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000500 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000510 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000520 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000530 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000540 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000550 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000560 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000570 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000580 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000590 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000600 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000610 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000620 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000630 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000640 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000650 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000660 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000670 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000680 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000690 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000700 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000710 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000720 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000730 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000740 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000750 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000760 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000770 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000780 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000790 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000800 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000810 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000820 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000830 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000840 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000850 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000860 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000870 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000880 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000890 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000900 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000910 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000920 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000930 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000940 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000950 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000960 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000970 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000980 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000990 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000ED0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001000 B8 7B 00 00 00 C3 90 9090 90 90 90 90 90 90 90 竰 ?
00001010 B8 C8 01 00 00 C3 90 9090 90 90 90 90 90 90 90 溉 ?
00001020 B8 15 03 00 00 C3 90 9090 90 90 90 90 90 90 90 ? ?
00001030 33 C0 C2 0C 00 90 90 9090 90 90 90 90 90 90 90 3缆
00001040 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001050 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001060 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001070 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001080 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001090 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000010A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000010B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000010C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000010D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000010E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000010F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001100 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001110 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001120 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001130 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001140 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001150 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001160 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001170 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001180 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001190 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001200 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001210 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001220 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001230 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001240 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001250 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001260 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001270 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001280 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001290 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001300 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001310 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001320 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001330 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001340 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001350 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001360 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001370 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001380 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001390 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001400 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001410 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001420 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001430 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001440 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001450 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001460 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001470 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001480 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001490 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001500 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001510 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001520 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001530 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001540 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001550 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001560 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001570 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001580 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001590 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001600 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001610 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001620 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001630 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001640 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001650 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001660 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001670 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001680 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001690 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001700 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001710 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001720 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001730 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001740 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001750 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001760 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001770 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001780 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001790 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001800 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001810 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001820 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001830 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001840 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001850 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001860 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001870 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001880 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001890 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001900 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001910 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001920 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001930 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001940 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001950 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001960 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001970 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001980 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001990 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001ED0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002000 00 00 00 00 22 74 19 5500 00 00 00 50 20 00 00 "t U P
00002010 01 00 00 00 04 00 00 0004 00 00 00 28 20 00 00 (
00002020 38 20 00 00 48 20 00 0030 10 00 00 00 10 00 00 8 H 0
00002030 10 10 00 00 20 10 00 005C 20 00 00 73 20 00 00 \ s
00002040 79 20 00 00 7F 20 00 0000 00 01 00 02 00 03 00 y
00002050 74 65 73 74 64 6C 6C 2E64 6C 6C 00 5F 5F 44 6C testdll.dll __Dl
00002060 6C 4D 61 69 6E 43 52 5453 74 61 72 74 75 70 40 lMainCRTStartup@
00002070 31 32 00 66 75 6E 63 3000 66 75 6E 63 31 00 66 12 func0 func1 f
00002080 75 6E 63 32 00 00 00 0000 00 00 00 00 00 00 00 unc2
00002090 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002100 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002110 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002120 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002130 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002140 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002150 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002160 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002170 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002180 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002190 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002200 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002210 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002220 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002230 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002240 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002250 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002260 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002270 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002280 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002290 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002300 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002310 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002320 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002330 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002340 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002350 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002360 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002370 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002380 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002390 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002400 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002410 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002420 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002430 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002440 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002450 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002460 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002470 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002480 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002490 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002500 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002510 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002520 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002530 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002540 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002550 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002560 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002570 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002580 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002590 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002600 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002610 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002620 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002630 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002640 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002650 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002660 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002670 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002680 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002690 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002700 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002710 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002720 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002730 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002740 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002750 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002760 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002770 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002780 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002790 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002800 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002810 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002820 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002830 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002840 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002850 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002860 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002870 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002880 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002890 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002900 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002910 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002920 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002930 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002940 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002950 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002960 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002970 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002980 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002990 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002ED0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003000 00 00 00 00 08 00 00 0000 00 00 00 00 00 00 00
00003010 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003020 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003030 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003040 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003050 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003060 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003070 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003080 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003090 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000030A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000030B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000030C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000030D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000030E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000030F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003100 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003110 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003120 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003130 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003140 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003150 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003160 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003170 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003180 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003190 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000031A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000031B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000031C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000031D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000031E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000031F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003200 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003210 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003220 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003230 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003240 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003250 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003260 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003270 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003280 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003290 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000032A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000032B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000032C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000032D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000032E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000032F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003300 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003310 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003320 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003330 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003340 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003350 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003360 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003370 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003380 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003390 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000033A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000033B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000033C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000033D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000033E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000033F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003400 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003410 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003420 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003430 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003440 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003450 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003460 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003470 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003480 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003490 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000034A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000034B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000034C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000034D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000034E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000034F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003500 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003510 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003520 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003530 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003540 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003550 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003560 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003570 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003580 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003590 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000035A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000035B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000035C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000035D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000035E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000035F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003600 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003610 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003620 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003630 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003640 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003650 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003660 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003670 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003680 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003690 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000036A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000036B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000036C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000036D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000036E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000036F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003700 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003710 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003720 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003730 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003740 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003750 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003760 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003770 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003780 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003790 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000037A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000037B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000037C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000037D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000037E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000037F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003800 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003810 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003820 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003830 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003840 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003850 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003860 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003870 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003880 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003890 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000038A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000038B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000038C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000038D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000038E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000038F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003900 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003910 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003920 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003930 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003940 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003950 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003960 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003970 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003980 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003990 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000039A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000039B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000039C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000039D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000039E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000039F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003A90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003AA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003AB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003AC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003AD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003AE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003AF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003B90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003BA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003BB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003BC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003BD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003BE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003BF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003C90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003CA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003CB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003CC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003CD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003CE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003CF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003D90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003DA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003DB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003DC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003DD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003DE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003DF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003E90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003EA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003EB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003EC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003ED0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003EE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003EF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003F90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003FA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003FB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003FC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003FD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003FE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003FF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
手工解析DLL格式,并自动生成lib的代码为peExtractor.cpp:
void CpeExtractorDlg::OnOpenfile()
{
UpdateData(TRUE);
CFileDialog dlg(TRUE);
dlg.m_ofn.lpstrFilter = _T("Exe Files(*.exe)");
if (IDOK != dlg.DoModal())
return;
CString filename = dlg.GetPathName();
SetDlgItemText(IDC_FILEPATH, filename);
try
{
//解析文件头
auto_handle<HANDLE> handle(CreateFile(filename, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL));
DWORD filesize = GetFileSize(handle, NULL);
IMAGE_DOS_HEADER dosheader;
IMAGE_NT_HEADERS ntheader;
DWORD ReadBytes;
ReadFile(handle, &dosheader, sizeof(dosheader), &ReadBytes, NULL);
if (dosheader.e_magic != IMAGE_DOS_SIGNATURE || ReadBytes != sizeof(dosheader))
throw _T("DOS头无效");
SetFilePointer(handle, dosheader.e_lfanew, 0, FILE_BEGIN);
ReadFile(handle, &ntheader, sizeof(ntheader), &ReadBytes, NULL);
if (ntheader.Signature != IMAGE_NT_SIGNATURE || ReadBytes != sizeof(ntheader))
throw _T("NT头无效");
std::vector<IMAGE_SECTION_HEADER> sectionheaders;
sectionheaders.resize(ntheader.FileHeader.NumberOfSections);
ReadFile(handle, sectionheaders.data(), sizeof(IMAGE_SECTION_HEADER)*ntheader.FileHeader.NumberOfSections, &ReadBytes, NULL);
char temp;
std::map<IMAGE_SECTION_HEADER*, std::vector<BYTE>> mapdata;
DWORD readnum;
for (std::vector<IMAGE_SECTION_HEADER>::iterator itor = sectionheaders.begin(); itor != sectionheaders.end(); ++itor)
{
m_out += "段名:";
m_out += (char*)(*itor).Name;
m_out += " RVA地址:";
sprintf_s(temp, "0x%08x", (*itor).VirtualAddress);
m_out += temp;
m_out += " RVA大小:";
sprintf_s(temp, "%d", (*itor).Misc.VirtualSize);
m_out += " 文件内偏移:";
sprintf_s(temp, "0x%08x", (*itor).PointerToRawData);
m_out += temp;
m_out += " 文件内大小:";
sprintf_s(temp, "%d", (*itor).SizeOfRawData);
m_out += temp;
m_out += "\r\n";
//取出各段数据
std::vector<BYTE>& cursegdata = mapdata[&(*itor)];
cursegdata.resize((*itor).SizeOfRawData);
SetFilePointer(handle, (*itor).PointerToRawData, NULL, FILE_BEGIN);
ReadFile(handle, (LPVOID)cursegdata.data(), (*itor).SizeOfRawData, &readnum, NULL);
}
//分析导出表
if (ntheader.FileHeader.SizeOfOptionalHeader >= sizeof(IMAGE_OPTIONAL_HEADER))
{//如果有可选头
IMAGE_DATA_DIRECTORY& cur = ntheader.OptionalHeader.DataDirectory;
IMAGE_SECTION_HEADER* matchedsec;
if (LocateVirtualAddr(sectionheaders, cur.VirtualAddress, matchedsec))
{//如果存在该目录
IMAGE_EXPORT_DIRECTORY ied;
DWORD readnum;
DWORD offset = cur.VirtualAddress - matchedsec->VirtualAddress + matchedsec->PointerToRawData;//计算偏移
SetFilePointer(handle, offset, NULL, FILE_BEGIN);
ReadFile(handle, &ied, sizeof(ied), &readnum, NULL);
std::vector<libFuncs> funcarray;
funcarray.resize(ied.NumberOfFunctions);
//获取AddressOfFunctions
IMAGE_SECTION_HEADER* matchedseg,*matchedseg1,*matchedseg2;
if (LocateVirtualAddr(sectionheaders, ied.AddressOfFunctions, matchedseg))
{
LPVOID* addrarr = (LPVOID*)(mapdata.data() + ied.AddressOfFunctions - matchedseg->VirtualAddress);
//取得真实数据
for (int index = 0; index < ied.NumberOfFunctions; index++)
{
funcarray.funcaddr = addrarr;
}
}
if (LocateVirtualAddr(sectionheaders, ied.AddressOfNameOrdinals, matchedseg) && LocateVirtualAddr(sectionheaders,ied.AddressOfNames,matchedseg1))
{
WORD* indexarr = (WORD*)((BYTE*)mapdata.data() + ied.AddressOfNameOrdinals - matchedseg->VirtualAddress);
DWORD* namearr = (DWORD*)((BYTE*)mapdata.data() + ied.AddressOfNames - matchedseg1->VirtualAddress);
for (int index = 0; index < ied.NumberOfNames; index++)
{
if (LocateVirtualAddr(sectionheaders, namearr, matchedseg2))
{
char* nameaddr = (char*)mapdata.data() + namearr - matchedseg2->VirtualAddress;
funcarray].funcname = nameaddr;
funcarray].type = NAME_SYMBOL_EXPORT;
}
}
}
for (std::vector<libFuncs>::iterator itor = funcarray.begin(); itor != funcarray.end(); ++itor)
{
ModifyName((*itor).funcname, (*itor).type | OBJ_TYPE_C);
}
//按VirtualAddress排序,方便后面计算每个.text段大小,后期考虑采用反汇编引擎计算大小
std::sort(funcarray.begin(), funcarray.end());
//1.构造section目录
//2.构造section内容,将各个section内部数据存储到lib中,lib的section的个数为导出符号数,导出地址需要适应IMAGE_SCN_ALIGN_??BYTES
//3.构造COFF Symbol Table
//4.加入导出符号名数组
std::vector<BYTE> filedata;
IMAGE_FILE_HEADER objheader;
int symbolnum = 0;
//加入文件头
memset(&objheader, 0, sizeof(objheader));
filedata.insert(filedata.end(), (BYTE*)&objheader, (BYTE*)(&objheader + 1));
//加入k个.text段
int secnum = funcarray.size()-1;//要求dll输出最后一个为辅助函数
int offsetraw = sizeof(IMAGE_FILE_HEADER)+secnum * sizeof(IMAGE_SECTION_HEADER);//后置数据偏移
int offsetsymbol = 4;//符号字串偏移,之前有字串数DWORD
symbolnum = secnum;
std::vector<BYTE> rawdata;//储存各个section指向的数据
std::vector<BYTE> symbolinfo;//存储COFF Symbol Table
std::vector<BYTE> functors;//存储符号名数组
int index = 0;
for (std::vector<IMAGE_SECTION_HEADER>::iterator itor = sectionheaders.begin(); itor != sectionheaders.end(); ++itor)
{//将各个段分别装入obj
std::vector<BYTE>& cursegdata = mapdata[&(*itor)];
rawdata.insert(rawdata.end(), cursegdata.begin(), cursegdata.end());
for (int m = 0; m < funcarray.size() - 1; m++)
{
if (IsAddrInSection((*itor), (DWORD)funcarray.funcaddr))
{
IMAGE_SECTION_HEADER secheader;
memset(&secheader, 0, sizeof(secheader));
memcpy(secheader.Name, (*itor).Name, IMAGE_SIZEOF_SHORT_NAME);
secheader.SizeOfRawData = (DWORD)funcarray.funcaddr - (DWORD)funcarray.funcaddr;
secheader.PointerToRawData = offsetraw + (DWORD)funcarray.funcaddr - (*itor).VirtualAddress;
secheader.Characteristics = IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_16BYTES | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ;
filedata.insert(filedata.end(), (BYTE*)&secheader, (BYTE*)(&secheader + 1));
//构造symboltable和section关联
IMAGE_SYMBOL symbol;
std::ostringstream os;
functors.insert(functors.end(), funcarray.funcname.c_str(), funcarray.funcname.c_str() + funcarray.funcname.size() + 1);
memset(&symbol, 0, sizeof(symbol));
symbol.N.LongName = offsetsymbol;
symbol.SectionNumber = index + 1;
symbol.Type = TYPE_FUNCTION;
symbol.StorageClass = IMAGE_SYM_CLASS_EXTERNAL;
symbolinfo.insert(symbolinfo.end(), (BYTE*)&symbol, (BYTE*)(&symbol + 1));
offsetsymbol += funcarray.funcname.size() + 1;
index++;
}
}
offsetraw += cursegdata.size();
}
filedata.insert(filedata.end(), rawdata.begin(), rawdata.end());
//更新头部
IMAGE_FILE_HEADER* pobjheader = (IMAGE_FILE_HEADER*)filedata.data();
pobjheader->Machine = IMAGE_FILE_MACHINE_I386;
pobjheader->NumberOfSections = secnum;
pobjheader->PointerToSymbolTable = filedata.size();//计算符号表偏移
pobjheader->NumberOfSymbols = symbolnum;
//加入符号表
filedata.insert(filedata.end(), symbolinfo.begin(), symbolinfo.end());
//加入符号名数组个数
int strsize = functors.size() + 4;
filedata.insert(filedata.end(), (BYTE*)&strsize, (BYTE*)(&strsize + 1));
//加入符号名数组
filedata.insert(filedata.end(), functors.begin(), functors.end());
DWORD writenum;
auto_handle<HANDLE> handle(CreateFile("test.obj", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL));
WriteFile(handle, filedata.data(), filedata.size(), &writenum, NULL);
}
}
}
catch (LPCTSTR err)
{
AfxMessageBox(err);
}
catch (...)
{
AfxMessageBox(_T("未知错误"));
}
UpdateData(FALSE);
}
自动生成的obj内容为:
Offset 01234567 89ABCDEF
00000000 4C 01 03 00 00 00 00 008C 30 00 00 03 00 00 00 L ?
00000010 00 00 00 00 2E 74 65 7874 00 00 00 00 00 00 00 .text
00000020 00 00 00 00 10 00 00 008C 00 00 00 00 00 00 00 ?
00000030 00 00 00 00 00 00 00 0020 00 50 60 2E 74 65 78 P`.tex
00000040 74 00 00 00 00 00 00 0000 00 00 00 10 00 00 00 t
00000050 9C 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 ?
00000060 20 00 50 60 2E 74 65 7874 00 00 00 00 00 00 00 P`.text
00000070 00 00 00 00 10 00 00 00AC 00 00 00 00 00 00 00 ?
00000080 00 00 00 00 00 00 00 0020 00 50 60 B8 7B 00 00 P`竰
00000090 00 C3 90 90 90 90 90 9090 90 90 90 B8 C8 01 00 ? 溉
000000A0 00 C3 90 90 90 90 90 9090 90 90 90 B8 15 03 00 ? ?
000000B0 00 C3 90 90 90 90 90 9090 90 90 90 33 C0 C2 0C ? 3缆
000000C0 00 90 90 90 90 90 90 9090 90 90 90 00 00 00 00
000000D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000000E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000000F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000100 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000110 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000120 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000130 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000140 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000150 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000160 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000170 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000180 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000190 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000001F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000200 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000210 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000220 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000230 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000240 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000250 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000260 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000270 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000280 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000290 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000002F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000300 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000310 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000320 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000330 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000340 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000350 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000360 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000370 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000380 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000390 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000003F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000400 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000410 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000420 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000430 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000440 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000450 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000460 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000470 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000480 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000490 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000004F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000500 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000510 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000520 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000530 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000540 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000550 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000560 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000570 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000580 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000590 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000005F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000600 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000610 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000620 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000630 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000640 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000650 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000660 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000670 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000680 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000690 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000006F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000700 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000710 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000720 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000730 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000740 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000750 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000760 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000770 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000780 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000790 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000007F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000800 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000810 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000820 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000830 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000840 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000850 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000860 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000870 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000880 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000890 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000008F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000900 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000910 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000920 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000930 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000940 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000950 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000960 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000970 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000980 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000990 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000009F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000A90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000AF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000B90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000BF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000C90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000CF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000D90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000DF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000E90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000ED0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000EF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000F90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00000FF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001000 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001010 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001020 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001030 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001040 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001050 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001060 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001070 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001080 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001090 22 74 19 55 00 00 00 0050 20 00 00 01 00 00 00 "t U P
000010A0 04 00 00 00 04 00 00 0028 20 00 00 38 20 00 00 ( 8
000010B0 48 20 00 00 30 10 00 0000 10 00 00 10 10 00 00 H 0
000010C0 20 10 00 00 5C 20 00 0073 20 00 00 79 20 00 00 \ s y
000010D0 7F 20 00 00 00 00 01 0002 00 03 00 74 65 73 74 test
000010E0 64 6C 6C 2E 64 6C 6C 005F 5F 44 6C 6C 4D 61 69 dll.dll __DllMai
000010F0 6E 43 52 54 53 74 61 7274 75 70 40 31 32 00 66 nCRTStartup@12 f
00001100 75 6E 63 30 00 66 75 6E63 31 00 66 75 6E 63 32 unc0 func1 func2
00001110 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001120 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001130 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001140 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001150 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001160 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001170 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001180 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001190 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000011F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001200 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001210 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001220 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001230 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001240 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001250 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001260 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001270 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001280 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001290 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000012F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001300 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001310 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001320 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001330 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001340 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001350 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001360 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001370 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001380 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001390 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000013F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001400 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001410 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001420 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001430 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001440 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001450 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001460 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001470 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001480 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001490 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000014F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001500 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001510 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001520 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001530 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001540 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001550 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001560 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001570 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001580 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001590 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000015F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001600 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001610 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001620 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001630 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001640 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001650 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001660 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001670 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001680 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001690 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000016F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001700 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001710 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001720 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001730 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001740 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001750 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001760 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001770 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001780 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001790 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000017F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001800 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001810 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001820 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001830 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001840 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001850 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001860 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001870 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001880 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001890 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000018F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001900 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001910 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001920 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001930 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001940 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001950 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001960 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001970 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001980 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001990 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000019F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001A90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001AF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001B90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001BF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001C90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001CF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001D90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001DF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001E90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001ED0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001EF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001F90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00001FF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002000 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002010 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002020 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002030 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002040 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002050 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002060 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002070 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002080 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002090 08 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000020F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002100 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002110 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002120 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002130 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002140 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002150 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002160 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002170 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002180 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002190 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000021F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002200 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002210 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002220 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002230 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002240 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002250 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002260 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002270 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002280 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002290 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000022F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002300 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002310 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002320 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002330 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002340 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002350 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002360 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002370 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002380 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002390 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000023F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002400 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002410 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002420 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002430 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002440 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002450 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002460 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002470 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002480 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002490 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000024F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002500 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002510 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002520 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002530 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002540 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002550 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002560 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002570 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002580 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002590 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000025F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002600 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002610 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002620 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002630 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002640 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002650 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002660 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002670 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002680 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002690 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000026F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002700 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002710 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002720 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002730 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002740 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002750 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002760 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002770 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002780 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002790 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000027F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002800 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002810 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002820 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002830 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002840 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002850 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002860 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002870 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002880 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002890 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000028F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002900 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002910 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002920 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002930 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002940 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002950 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002960 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002970 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002980 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002990 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029A0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029B0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029C0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029D0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029E0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
000029F0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002A90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002AF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002B90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002BF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002C90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002CF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002D90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002DF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002E90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002ED0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002EF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F10 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F20 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F30 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F40 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F50 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F60 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F70 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F80 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002F90 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FA0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FB0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FC0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FD0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FE0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00002FF0 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003000 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003010 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003020 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003030 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003040 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003050 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003060 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003070 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003080 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00
00003090 04 00 00 00 00 00 00 0001 00 20 00 02 00 00 00
000030A0 00 00 0B 00 00 00 00 0000 00 02 00 20 00 02 00
000030B0 00 00 00 00 12 00 00 0000 00 00 00 03 00 20 00
000030C0 02 00 19 00 00 00 5F 6675 6E 63 30 00 5F 66 75 _func0 _fu
000030D0 6E 63 31 00 5F 66 75 6E63 32 00 nc1 _func2
lib test.obj /out:test.lib 得到lib
将lib放到用于测试lib的工程目录下
测试lib的代码为test.c://我们自动生成的obj为c格式的obj,c++的话要自动生成名称修饰,这个我们以后研究
#include <stdio.h>
#pragma comment(lib,"test.lib")
int func0();
int func1();
int func2();
void main()
{
printf("func0:%d func1:%d func2:%d\n", func0(), func1(), func2());
}
测试结果为:
func0:123 func1:456 func2:789 符合预期,单步调试,也可以看到静态lib确实链接到了exe中了。
在本节,我将一个最简单的dll自动生成lib,这就说明了dll2lib是可行的
同时也引出了以后需要做的工作,至少有以下几点:
1.本次测试用的dll是c式的,考虑c++呢,如何处理名称修饰?
2.本次测试只用了.text段,如果有全局变量,导入导出函数呢?
3.本次测试,其实是将dll整个变成一个obj,如果dll较为庞大,如何做到代码分离?
4.本次测试可以看到dll导出表并不存储函数大小,我采取了特殊方式计算函数大小,今后可以改进为反汇编方式获取
5.。。。
其他代码:
#define CODEALIGN 16
#define TYPE_FUNCTION 0x20
enum
{
DIR_EXPORT=0,
DIR_IMPORT,
DIR_RESOURCE,
DIR_EXCEPTION,
DIR_CERTIFICATE,
DIR_RELOCATION,
DIR_DEBUG,
DIR_ARCHITECTURE,
DIR_GLOBALPTR,
DIR_TLS,
DIR_LOADCONFIG,
DIR_BOUNDIMPORT,
DIR_IAT,
DIR_DELAYIMPORT,
DIR_CLR,
DIR_RESERVED,
};
enum DATATYPE
{
NONAME_SYMBOL_EXPORT=0x1,//导出为序号
NAME_SYMBOL_EXPORT=0x2,//导出为函数名
INNER_SYMBOL_EXPORT=0x4,//未导出内部函数
OBJ_TYPE_C=0x100,
OBJ_TYPE_CPP=0x200,
OBJ_TYPE_COM=0x400,
};
#define NOMANGLING "^+$"
struct libFuncs
{
libFuncs(){ type = NONAME_SYMBOL_EXPORT; funcaddr = NULL; };
int type;//0:noname export 1:name export 2:innerfunc export
std::string funcname;
LPVOID funcaddr;//Virutal Address
bool operator < (const libFuncs& ll) const { return funcaddr < ll.funcaddr; };
};
BOOL RawAddrToVirtualAddr(std::vector<IMAGE_SECTION_HEADER>& sections, DWORD inptr, DWORD& outptr)//文件地址转虚拟地址
{
std::vector<IMAGE_SECTION_HEADER>::iterator itor = sections.begin();
for (; itor != sections.end(); ++itor)
{
if ((*itor).PointerToRawData <= inptr && inptr <= (*itor).PointerToRawData + (*itor).SizeOfRawData)
break;
}
if (itor != sections.end())
{//如果存在该目录
outptr = inptr - (*itor).PointerToRawData + (*itor).VirtualAddress;
return TRUE;
}
else
{
return FALSE;
}
}
BOOL VirtualAddrToRawAddr(std::vector<IMAGE_SECTION_HEADER>& sections, DWORD inptr, DWORD& outptr)//虚拟地址转文件地址
{
std::vector<IMAGE_SECTION_HEADER>::iterator itor = sections.begin();
for (; itor != sections.end(); ++itor)
{
if ((*itor).VirtualAddress <= inptr && inptr <= (*itor).VirtualAddress + (*itor).Misc.VirtualSize)
break;
}
if (itor != sections.end())
{//如果存在该目录
outptr = inptr - (*itor).VirtualAddress + (*itor).PointerToRawData;
return TRUE;
}
else
{
return FALSE;
}
}
BOOL LocateVirtualAddr(std::vector<IMAGE_SECTION_HEADER>& sections, DWORD inptr, IMAGE_SECTION_HEADER*& outptr)
{
std::vector<IMAGE_SECTION_HEADER>::iterator itor = sections.begin();
for (; itor != sections.end(); ++itor)
{
if ((*itor).VirtualAddress <= inptr && inptr <= (*itor).VirtualAddress + (*itor).Misc.VirtualSize)
break;
}
if (itor != sections.end())
{//如果存在该目录
outptr = &(*itor);
return TRUE;
}
else
{
return FALSE;
}
}
BOOL IsAddrInSection(IMAGE_SECTION_HEADER& section, DWORD inptr)//判断虚拟地址是否位于段中
{
if (section.VirtualAddress <= inptr && inptr <= section.VirtualAddress + section.Misc.VirtualSize)
return true;
else
return false;
}
bool InferFuncType(std::string& nameout,std::vector<BYTE>& codedata)//推断函数调用规范,输出C++粉碎名称
{
return true;
}
bool ModifyName(std::string& namein,int type)//参考dname代码,模拟名称修饰
{
using namespace boost::xpressive;
std::string src = namein;
if (type & NAME_SYMBOL_EXPORT)
{
cregex reg = cregex::compile(NOMANGLING);
if (regex_match(src.c_str(), reg))//无修饰符号
{
if (type & OBJ_TYPE_C)
{//转换为C导出函数
namein = "_";
namein += src;
}
}
}
else if (type & NONAME_SYMBOL_EXPORT)
{
static int index = 0;
char buf;
sprintf_s(buf, "_func%d", index);
namein = buf;
index++;
}
else if (type & INNER_SYMBOL_EXPORT)
{
}
return true;
}
你的帖子总是有大量的Dump或者其它一些必须要在手机上搓半天才能看到后文的东西= =
这叫刷屏,懂不
lib文件研究(二.二)
这次添加了函数调用类型简单识别的模块,为的是在def定义的dll中可以分析出函数原型,在lib中给出更为确切的符号定义#include <vector>
#include <map>
#include <sstream>
#include <DbgHelp.h>
#include <string>
#include <boost/xpressive/xpressive.hpp>
#include <boost/xpressive/regex_algorithms.hpp>
#pragma comment(lib,"DbgHelp.lib")
#pragma comment(lib,"BeaEngine.lib")
#define BEA_ENGINE_STATIC
#define BEA_USE_STDCALL
#include "BeaEngine.h"
#define In
#define Out
//任意pe格式转静态lib工具
//作用:
// 1.直接摄取第三方pe文件的函数和数据到自己的程序中
// 2.反调试、反逆向、反Hook
// 3.压缩api,提高程序整体执行效率
// 4.自动生成声明定义
//适用对象:
//所有pe格式,包括exe,dll,sys, 文件pe和内存pe
#define CODEALIGN 16
#define TYPE_FUNCTION 0x20
enum
{
DIR_EXPORT=0,
DIR_IMPORT,
DIR_RESOURCE,
DIR_EXCEPTION,
DIR_CERTIFICATE,
DIR_RELOCATION,
DIR_DEBUG,
DIR_ARCHITECTURE,
DIR_GLOBALPTR,
DIR_TLS,
DIR_LOADCONFIG,
DIR_BOUNDIMPORT,
DIR_IAT,
DIR_DELAYIMPORT,
DIR_CLR,
DIR_RESERVED,
};
enum DATATYPE
{
NONAME_SYMBOL_EXPORT=0x1,//导出为序号
NAME_SYMBOL_EXPORT=0x2,//导出为函数名
INNER_SYMBOL_EXPORT=0x4,//未导出内部函数
CALL_TYPE_CDECL=0x100,//__cdecl
CALL_TYPE_STD=0x200,//__stdcall
CALL_TYPE_FAST=0x400,//__fastcallonly ecx
CALL_TYPE_FAST1,//__fastcallecx+edx
CALL_TYPE_THIS=0x800,//__thiscall
};
/*
C调用解析
说明:未初始化引用的变量()
if (ecx)
if (edx)
//fastcallretn n @func@n+8
else
//fastcallretn n @func@4
else if retn n!=0
//stdcall _func@n
else
//cdecl_func
*/
int ModifyName(In Out std::string& namein, Out std::string& descinfo, std::vector<DISASM>& asmlines, In LPVOID code)//参考dname代码,模拟名称修饰
{
using namespace boost::xpressive;
std::string src = namein;
char recoveredname;
int sum = 0;//粗略获取函数体长度
int maxparamstack = 0;//参数栈
int recnum = UnDecorateSymbolName(src.c_str(), recoveredname,MAX_PATH,UNDNAME_COMPLETE);
DISASM disasm;
disasm.EIP = (UIntPtr)code;
int len = 0, maxsize = 0xFFFF;
do
{
memset(&disasm, 0, sizeof(disasm));
disasm.EIP = (UIntPtr)sum;
len = Disasm(&disasm);
sum += len;
if (len > 0)
{
asmlines.push_back(disasm);
if (strstr(disasm.CompleteInstr,"ret"))
break;//发现ret指令则假设函数退出并以此推测函数大小和
}
} while (len > 0 && sum <= maxsize);
if (recnum <= src.length())
{
//解析失败,进行手动解析,自动生成C/C++修饰,先按如上分析过程解析C调用
int lines = asmlines.size();
int presume_calltype = CALL_TYPE_CDECL;
bool isespmovtoebp = false;
//检测__fastcall
for (int i = 0; i < lines; i++)
{
if (strstr(asmlines.CompleteInstr,"ecx"))
{//检测第一次引用ecx
presume_calltype = CALL_TYPE_FAST;
cregex ecxlval = cregex::compile("(mov(sx|zx)?|lea|pop) ecx");//若ecx为左值,说明
if (regex_match(asmlines.CompleteInstr, ecxlval))
presume_calltype = CALL_TYPE_CDECL;
break;
}
if (strstr(asmlines.CompleteInstr, "edx"))
{//检测第一次引用edx(未引用edx并不说明函数原型只有一参)
presume_calltype = CALL_TYPE_FAST1;
cregex ecxlval = cregex::compile("(mov(sx|zx)?|lea|pop) edx");//若ecx为左值,说明
if (regex_match(asmlines.CompleteInstr, ecxlval))
presume_calltype = CALL_TYPE_CDECL;
break;
}
}
if (presume_calltype == CALL_TYPE_CDECL)
{//检测__stdcall
cregex ret = cregex::compile("retn (+)");
cmatch what;
if (regex_match(asmlines.CompleteInstr, what, ret))
{
int retstack = asmlines.Instruction.Immediat;
if (retstack)
{
maxparamstack = retstack;
presume_calltype = CALL_TYPE_STD;
}
}
}
//分析参数栈大小
for (int i = 0; i < lines; i++)
{
if (strstr(asmlines.CompleteInstr, "mov ebp, esp"))
{
isespmovtoebp = true;
break;
}
}
cregex exp;
cmatch what;
if (isespmovtoebp)
exp = cregex::compile("ebp\\+({2})");
else
exp = cregex::compile("esp\\+({2})");
for (int i = 0; i < lines; i++)
{
if (regex_search(asmlines.CompleteInstr, what, exp))
{
int paramstack = asmlines.Instruction.Immediat;
if (maxparamstack < paramstack)
maxparamstack = paramstack;
}
}
//调整参数栈大小
if (maxparamstack && presume_calltype == CALL_TYPE_FAST)
presume_calltype = CALL_TYPE_FAST1;
if (presume_calltype == CALL_TYPE_FAST1)
{
maxparamstack += 8;
}
else if (presume_calltype == CALL_TYPE_FAST)
{
maxparamstack = 4;
}
char funcformat;
strcpy(recoveredname, "int ");//假定返回int
if (presume_calltype & CALL_TYPE_CDECL)
{
sprintf_s(funcformat, "_%s", src.c_str());
strcat(recoveredname, "__cdecl ");
}
else if (presume_calltype & CALL_TYPE_STD)
{
sprintf_s(funcformat, "_%s@%d", src.c_str(), maxparamstack);
strcat(recoveredname, "__stdcall ");
}
else if (presume_calltype & CALL_TYPE_FAST)
{
sprintf_s(funcformat, "@%s@%d", src.c_str(), maxparamstack);
strcat(recoveredname, "__fastcall ");
}
strcat(recoveredname, src.c_str());
strcat(recoveredname, "(");
while (maxparamstack > 0)
{
strcat(recoveredname, "int");
maxparamstack -= 4;
if (maxparamstack > 0)
strcat(recoveredname, ",");
}
strcat(recoveredname, ")");
descinfo = recoveredname;
namein = funcformat;
}
else
{
namein = recoveredname;
}
return sum;
}
页:
[1]