目标程序:ExeGuarder v1.80
用 途:为PE程序加口令保护壳
下载链接:http://www.qwerks.com/download/8606/ExeguarderSetup.exe
工 具:FlyOD v1.10、ImporReconstructor v1.6F、PEiD v0.93、C32Asm v0.1114
该程序主程序为"ExeGuarder.exe",经PEiD侦查为"ASPack 2.001 -> Alexey Solodovnikov"加壳,但找不到OEP。在这里,加什么壳不是很主要,重要的是找到一种可操作性比较强的对付无Anti壳的思路和方法。好了,闲话少说,让我们开始正题。还是老套路,一切从寻找OEP开始。
一、寻找OEP
用OD载入程序,同时按下"Alt-m"键,查看内存布局,我们看到,401000-4DF000 为.text段,Ok,程序解码时,必然会向这个区段写入代码,我们就在那里等着好了,关闭内存映射窗口,在代码窗口内同时按下"Ctrl-g",在弹出的窗口中输入我们要去的地方:4DE000,在代码窗口内4DE000这行指令上设内存访问断点,然后运行,程序停在如下地址:
005A02C2 F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi] <--- 程序停在这里
005A02C4 8BC8 mov ecx,eax <--- 在这里设断点
如果在005A02C2处直接按F8键,程序将会失控,所以,把光标移到下一条指令上,按下F2键设断点,然后按F9运行,程序如我们所愿停在了新设的断点处,由此按F8键逐条指令向下跟踪,这里需要掌握一个原则,凡是碰到往回的跳转一律在下一条指令上设断点,然后按F9键,保持程序一直在向前推进,我们这样跟踪下去,很快就来到这里:
005A04DD 8B85 4E2A4400 mov eax,dword ptr ss:[ebp+442A4E]
005A04E3 50 push eax
005A04E4 0385 E0374400 add eax,dword ptr ss:[ebp+4437E0]
005A04EA 59 pop ecx
005A04EB 0BC9 or ecx,ecx
005A04ED 8985 7B2E4400 mov dword ptr ss:[ebp+442E7B],eax
005A04F3 61 popad <--- 熟悉吧?
005A04F4 75 08 jnz short ExeGuard.005A04FE
005A04F6 B8 01000000 mov eax,1
005A04FB C2 0C00 retn 0C
005A04FE 68 64154000 push ExeGuard.00401564 <--- 传说中的"光明之巅"
005A0503 C3 retn
没错,程序首次跳向程序的.text区段,必然就是我们想知道的OEP了。好了,老规矩,让程序停在OEP处,并记住它的位置:"00401564",然后用OllyDump插件,"脱壳在当前调试的进程"将程序Dump出来,姑且起名为"dumped.exe"待用。
二、重建输入表
抑制不住激动的心情,启动ImportRec.exe,在进程列表中找到处于运行态的"ExeGuarder.exe",在OEP栏内填入我们找到OEP的RVA值"00001564"(00001564=00401564-00400000),用鼠标依次点击"IAT AutoSearch"和"Get Imports"按钮,我们看到,找到了Kernel32.dll中的一些函数,并且全部有效,于是,按下"Fix Dump"按钮,要修正的文件就选刚才用OllyDump存下的"Dumped.exe"。于是,生成一个名为"Dumped_.exe"的新文件,这就应该是经过输入表重构的执行程序了。我们让这个程序执行,看到什么了,系统报错,哎呀,打击真不小!通过将Dumped_.exe与原程序跟踪对比发现,原来问题出在输入表重构不完全。好吧,让我们从OEP处开始单步跟踪原程序"ExeGuarder.exe"。
00401564 /EB 10 jmp short ExeGuard.00401576 〈--- OEP
00401566 |66:623A bound di,dword ptr ds:[edx]
00401569 |43 inc ebx
0040156A |2B2B sub ebp,dword ptr ds:[ebx]
0040156C |48 dec eax
0040156D |4F dec edi
0040156E |4F dec edi
0040156F |4B dec ebx
00401570 |90 nop
00401571 -|E9 98F04D00 jmp 008E060E
00401576 \A1 8BF04D00 mov eax,dword ptr ds:[4DF08B]
0040157B C1E0 02 shl eax,2
0040157E A3 8FF04D00 mov dword ptr ds:[4DF08F],eax
00401583 52 push edx
00401584 6A 00 push 0
00401586 E8 BDC60D00 call ExeGuard.004DDC48 ; jmp to kernel32.GetModuleHandleA
我们很快来到程序的第一个系统函数调用处-00401586,在代码窗口内,同时按下"Ctrl-g",输入我们想去的地址:004DDC48,看看代码:
004DDC42 - FF25 74134F00 jmp dword ptr ds:[4F1374] ; kernel32.GetModuleFileNameA
004DDC48 - FF25 78134F00 jmp dword ptr ds:[4F1378] ; kernel32.GetModuleHandleA
004DDC4E - FF25 7C134F00 jmp dword ptr ds:[4F137C] ; kernel32.GetOEMCP
这就是程序的系统函数调用接口,让我们找到它的头和尾:
004DDB30 C3 retn
004DDB31 90 nop
004DDB32 90 nop
004DDB33 90 nop
004DDB34 - FF25 F8104F00 jmp dword ptr ds:[4F10F8] ; advapi32.RegCloseKey <--- 第一项的地址是004F10F8
004DDB3A - FF25 FC104F00 jmp dword ptr ds:[4F10FC] ; advapi32.RegCreateKeyExA
004DDB40 - FF25 00114F00 jmp dword ptr ds:[4F1100] ; advapi32.RegFlushKey
004DDB46 - FF25 04114F00 jmp dword ptr ds:[4F1104] ; advapi32.RegOpenKeyExA
004DDB4C - FF25 08114F00 jmp dword ptr ds:[4F1108] ; advapi32.RegQueryValueExA
004DDB52 - FF25 0C114F00 jmp dword ptr ds:[4F110C] ; advapi32.RegSetValueExA
004DDB58 - FF25 D8124F00 jmp dword ptr ds:[4F12D8] ; kernel32.CloseHandle
004DDB5E - FF25 DC124F00 jmp dword ptr ds:[4F12DC] ; kernel32.CompareStringA
004DDB64 - FF25 E0124F00 jmp dword ptr ds:[4F12E0] ; kernel32.CopyFileA
004DDB6A - FF25 E4124F00 jmp dword ptr ds:[4F12E4] ; kernel32.CreateEventA
004DDB70 - FF25 E8124F00 jmp dword ptr ds:[4F12E8] ; kernel32.CreateFileA
004DDB76 - FF25 EC124F00 jmp dword ptr ds:[4F12EC] ; kernel32.CreateThread
004DDB7C - FF25 F0124F00 jmp dword ptr ds:[4F12F0] ; ntdll.RtlDeleteCriticalSection
004DDB82 - FF25 F4124F00 jmp dword ptr ds:[4F12F4] ; kernel32.DeleteFileA
004DDB88 - FF25 F8124F00 jmp dword ptr ds:[4F12F8] ; ntdll.RtlEnterCriticalSection
004DDB8E - FF25 FC124F00 jmp dword ptr ds:[4F12FC] ; kernel32.EnumCalendarInfoA
004DDB94 - FF25 00134F00 jmp dword ptr ds:[4F1300] ; kernel32.EnumResourceNamesA
004DDB9A - FF25 04134F00 jmp dword ptr ds:[4F1304] ; kernel32.ExitProcess
004DDBA0 - FF25 08134F00 jmp dword ptr ds:[4F1308] ; kernel32.FileTimeToDosDateTime
004DDBA6 - FF25 0C134F00 jmp dword ptr ds:[4F130C] ; kernel32.FileTimeToLocalFileTime
004DDBAC - FF25 10134F00 jmp dword ptr ds:[4F1310] ; kernel32.FindClose
004DDBB2 - FF25 14134F00 jmp dword ptr ds:[4F1314] ; kernel32.FindFirstFileA
004DDBB8 - FF25 18134F00 jmp dword ptr ds:[4F1318] ; kernel32.FindNextFileA
004DDBBE - FF25 1C134F00 jmp dword ptr ds:[4F131C] ; kernel32.FindResourceA
004DDBC4 - FF25 20134F00 jmp dword ptr ds:[4F1320] ; kernel32.FormatMessageA
004DDBCA - FF25 24134F00 jmp dword ptr ds:[4F1324] ; kernel32.FreeLibrary
004DDBD0 - FF25 28134F00 jmp dword ptr ds:[4F1328] ; kernel32.FreeResource
004DDBD6 - FF25 2C134F00 jmp dword ptr ds:[4F132C] ; kernel32.GetACP
004DDBDC - FF25 30134F00 jmp dword ptr ds:[4F1330] ; kernel32.GetCPInfo
004DDBE2 - FF25 34134F00 jmp dword ptr ds:[4F1334] ; kernel32.GetCommandLineA
004DDBE8 - FF25 38134F00 jmp dword ptr ds:[4F1338] ; kernel32.GetCurrentDirectoryA
004DDBEE - FF25 3C134F00 jmp dword ptr ds:[4F133C] ; kernel32.GetCurrentProcessId
004DDBF4 - FF25 40134F00 jmp dword ptr ds:[4F1340] ; kernel32.GetCurrentThreadId
004DDBFA - FF25 44134F00 jmp dword ptr ds:[4F1344] ; kernel32.GetDateFormatA
004DDC00 - FF25 48134F00 jmp dword ptr ds:[4F1348] ; kernel32.GetDiskFreeSpaceA
004DDC06 - FF25 4C134F00 jmp dword ptr ds:[4F134C] ; kernel32.GetDriveTypeA
004DDC0C - FF25 50134F00 jmp dword ptr ds:[4F1350] ; kernel32.GetEnvironmentStringsA
004DDC12 - FF25 54134F00 jmp dword ptr ds:[4F1354] ; kernel32.GetEnvironmentVariableA
004DDC18 - FF25 58134F00 jmp dword ptr ds:[4F1358] ; kernel32.GetFileAttributesA
004DDC1E - FF25 5C134F00 jmp dword ptr ds:[4F135C] ; kernel32.GetFileSize
004DDC24 - FF25 60134F00 jmp dword ptr ds:[4F1360] ; kernel32.GetFileType
004DDC2A - FF25 64134F00 jmp dword ptr ds:[4F1364] ; kernel32.GetFullPathNameA
004DDC30 - FF25 68134F00 jmp dword ptr ds:[4F1368] ; ntdll.RtlGetLastWin32Error
004DDC36 - FF25 6C134F00 jmp dword ptr ds:[4F136C] ; kernel32.GetLocalTime
004DDC3C - FF25 70134F00 jmp dword ptr ds:[4F1370] ; kernel32.GetLocaleInfoA
004DDC42 - FF25 74134F00 jmp dword ptr ds:[4F1374] ; kernel32.GetModuleFileNameA
004DDC48 - FF25 78134F00 jmp dword ptr ds:[4F1378] ; kernel32.GetModuleHandleA
004DDC4E - FF25 7C134F00 jmp dword ptr ds:[4F137C] ; kernel32.GetOEMCP
004DDC54 - FF25 80134F00 jmp dword ptr ds:[4F1380] ; kernel32.GetProcAddress
004DDC5A - FF25 84134F00 jmp dword ptr ds:[4F1384] ; kernel32.GetProcessHeap
004DDC60 - FF25 88134F00 jmp dword ptr ds:[4F1388] ; kernel32.GetProfileStringA
004DDC66 - FF25 8C134F00 jmp dword ptr ds:[4F138C] ; kernel32.GetStartupInfoA
004DDC6C - FF25 90134F00 jmp dword ptr ds:[4F1390] ; kernel32.GetStdHandle
004DDC72 - FF25 94134F00 jmp dword ptr ds:[4F1394] ; kernel32.GetStringTypeExA
004DDC78 - FF25 98134F00 jmp dword ptr ds:[4F1398] ; kernel32.GetStringTypeW
004DDC7E - FF25 9C134F00 jmp dword ptr ds:[4F139C] ; kernel32.GetSystemInfo
004DDC84 - FF25 A0134F00 jmp dword ptr ds:[4F13A0] ; kernel32.GetThreadLocale
004DDC8A - FF25 A4134F00 jmp dword ptr ds:[4F13A4] ; kernel32.GetTickCount
004DDC90 - FF25 A8134F00 jmp dword ptr ds:[4F13A8] ; kernel32.GetVersion
004DDC96 - FF25 AC134F00 jmp dword ptr ds:[4F13AC] ; kernel32.GetVersionExA
004DDC9C - FF25 B0134F00 jmp dword ptr ds:[4F13B0] ; kernel32.GetWindowsDirectoryA
004DDCA2 - FF25 B4134F00 jmp dword ptr ds:[4F13B4] ; kernel32.GlobalAddAtomA
004DDCA8 - FF25 B8134F00 jmp dword ptr ds:[4F13B8] ; kernel32.GlobalAlloc
004DDCAE - FF25 BC134F00 jmp dword ptr ds:[4F13BC] ; kernel32.GlobalDeleteAtom
004DDCB4 - FF25 C0134F00 jmp dword ptr ds:[4F13C0] ; kernel32.GlobalFindAtomA
004DDCBA - FF25 C4134F00 jmp dword ptr ds:[4F13C4] ; kernel32.GlobalFree
004DDCC0 - FF25 C8134F00 jmp dword ptr ds:[4F13C8] ; kernel32.GlobalHandle
004DDCC6 - FF25 CC134F00 jmp dword ptr ds:[4F13CC] ; kernel32.GlobalLock
004DDCCC - FF25 D0134F00 jmp dword ptr ds:[4F13D0] ; kernel32.GlobalReAlloc
004DDCD2 - FF25 D4134F00 jmp dword ptr ds:[4F13D4] ; kernel32.GlobalUnlock
004DDCD8 - FF25 D8134F00 jmp dword ptr ds:[4F13D8] ; ntdll.RtlAllocateHeap
004DDCDE - FF25 DC134F00 jmp dword ptr ds:[4F13DC] ; ntdll.RtlFreeHeap
004DDCE4 - FF25 E0134F00 jmp dword ptr ds:[4F13E0] ; kernel32.InitializeCriticalSection
004DDCEA - FF25 E4134F00 jmp dword ptr ds:[4F13E4] ; kernel32.InterlockedDecrement
004DDCF0 - FF25 E8134F00 jmp dword ptr ds:[4F13E8] ; kernel32.InterlockedIncrement
004DDCF6 - FF25 EC134F00 jmp dword ptr ds:[4F13EC] ; kernel32.LCMapStringA
004DDCFC - FF25 F0134F00 jmp dword ptr ds:[4F13F0] ; ntdll.RtlLeaveCriticalSection
004DDD02 - FF25 F4134F00 jmp dword ptr ds:[4F13F4] ; kernel32.LoadLibraryA
004DDD08 - FF25 F8134F00 jmp dword ptr ds:[4F13F8] ; kernel32.LoadLibraryExA
004DDD0E - FF25 FC134F00 jmp dword ptr ds:[4F13FC] ; kernel32.LoadResource
004DDD14 - FF25 00144F00 jmp dword ptr ds:[4F1400] ; kernel32.LocalAlloc
004DDD1A - FF25 04144F00 jmp dword ptr ds:[4F1404] ; kernel32.LocalFree
004DDD20 - FF25 08144F00 jmp dword ptr ds:[4F1408] ; kernel32.SetHandleCount
004DDD26 - FF25 0C144F00 jmp dword ptr ds:[4F140C] ; kernel32.MoveFileA
004DDD2C - FF25 10144F00 jmp dword ptr ds:[4F1410] ; kernel32.MulDiv
004DDD32 - FF25 14144F00 jmp dword ptr ds:[4F1414] ; kernel32.MultiByteToWideChar
004DDD38 - FF25 18144F00 jmp dword ptr ds:[4F1418] ; kernel32.RaiseException
004DDD3E - FF25 1C144F00 jmp dword ptr ds:[4F141C] ; kernel32.ReadFile
004DDD44 - FF25 20144F00 jmp dword ptr ds:[4F1420] ; kernel32.ResetEvent
004DDD4A - FF25 24144F00 jmp dword ptr ds:[4F1424] ; ntdll.RtlUnwind
004DDD50 - FF25 28144F00 jmp dword ptr ds:[4F1428] ; kernel32.SetConsoleCtrlHandler
004DDD56 - FF25 2C144F00 jmp dword ptr ds:[4F142C] ; kernel32.SetCurrentDirectoryA
004DDD5C - FF25 30144F00 jmp dword ptr ds:[4F1430] ; kernel32.SetEndOfFile
004DDD62 - FF25 34144F00 jmp dword ptr ds:[4F1434] ; kernel32.SetEnvironmentVariableA
004DDD68 - FF25 38144F00 jmp dword ptr ds:[4F1438] ; kernel32.SetErrorMode
004DDD6E - FF25 3C144F00 jmp dword ptr ds:[4F143C] ; kernel32.SetEvent
004DDD74 - FF25 40144F00 jmp dword ptr ds:[4F1440] ; kernel32.SetFilePointer
004DDD7A - FF25 44144F00 jmp dword ptr ds:[4F1444] ; kernel32.SetHandleCount
004DDD80 - FF25 48144F00 jmp dword ptr ds:[4F1448] ; ntdll.RtlSetLastWin32Error
004DDD86 - FF25 4C144F00 jmp dword ptr ds:[4F144C] ; kernel32.SetThreadLocale
004DDD8C - FF25 50144F00 jmp dword ptr ds:[4F1450] ; kernel32.SizeofResource
004DDD92 - FF25 54144F00 jmp dword ptr ds:[4F1454] ; kernel32.Sleep
004DDD98 - FF25 58144F00 jmp dword ptr ds:[4F1458] ; kernel32.TlsAlloc
004DDD9E - FF25 5C144F00 jmp dword ptr ds:[4F145C] ; kernel32.TlsFree
004DDDA4 - FF25 60144F00 jmp dword ptr ds:[4F1460] ; kernel32.TlsGetValue
004DDDAA - FF25 64144F00 jmp dword ptr ds:[4F1464] ; kernel32.TlsSetValue
004DDDB0 - FF25 68144F00 jmp dword ptr ds:[4F1468] ; kernel32.UnhandledExceptionFilter
004DDDB6 - FF25 6C144F00 jmp dword ptr ds:[4F146C] ; kernel32.VirtualAlloc
004DDDBC - FF25 70144F00 jmp dword ptr ds:[4F1470] ; kernel32.VirtualFree
004DDDC2 - FF25 74144F00 jmp dword ptr ds:[4F1474] ; kernel32.VirtualQuery
004DDDC8 - FF25 78144F00 jmp dword ptr ds:[4F1478] ; kernel32.WaitForSingleObject
004DDDCE - FF25 7C144F00 jmp dword ptr ds:[4F147C] ; kernel32.WideCharToMultiByte
004DDDD4 - FF25 80144F00 jmp dword ptr ds:[4F1480] ; kernel32.WriteFile
004DDDDA - FF25 84144F00 jmp dword ptr ds:[4F1484] ; kernel32.lstrcmpA
004DDDE0 - FF25 88144F00 jmp dword ptr ds:[4F1488] ; kernel32.lstrcpyA
004DDDE6 - FF25 8C144F00 jmp dword ptr ds:[4F148C] ; kernel32.lstrcpynA
004DDDEC - FF25 90144F00 jmp dword ptr ds:[4F1490] ; kernel32.lstrlenA
004DDDF2 - FF25 94144F00 jmp dword ptr ds:[4F1494] ; kernel32.GetVolumeInformationA
004DDDF8 - FF25 AC144F00 jmp dword ptr ds:[4F14AC] ; version.GetFileVersionInfoA
004DDDFE - FF25 B0144F00 jmp dword ptr ds:[4F14B0] ; version.GetFileVersionInfoSizeA
004DDE04 - FF25 B4144F00 jmp dword ptr ds:[4F14B4] ; version.VerQueryValueA
004DDE0A CC int3
004DDE0B CC int3
004DDE0C - FF25 D0144F00 jmp dword ptr ds:[4F14D0] ; winspool.ClosePrinter
004DDE12 - FF25 D4144F00 jmp dword ptr ds:[4F14D4] ; winspool.DocumentPropertiesA
004DDE18 - FF25 D8144F00 jmp dword ptr ds:[4F14D8] ; winspool.EnumPrintersA
004DDE1E - FF25 DC144F00 jmp dword ptr ds:[4F14DC] ; winspool.OpenPrinterA
004DDE24 - FF25 48154F00 jmp dword ptr ds:[4F1548] ; comctl32.ImageList_Add
004DDE2A - FF25 4C154F00 jmp dword ptr ds:[4F154C] ; comctl32.ImageList_BeginDrag
004DDE30 - FF25 50154F00 jmp dword ptr ds:[4F1550] ; comctl32.ImageList_Create
004DDE36 - FF25 54154F00 jmp dword ptr ds:[4F1554] ; comctl32.ImageList_Destroy
004DDE3C - FF25 58154F00 jmp dword ptr ds:[4F1558] ; comctl32.ImageList_DragEnter
004DDE42 - FF25 5C154F00 jmp dword ptr ds:[4F155C] ; comctl32.ImageList_DragLeave
004DDE48 - FF25 60154F00 jmp dword ptr ds:[4F1560] ; comctl32.ImageList_DragMove
004DDE4E - FF25 64154F00 jmp dword ptr ds:[4F1564] ; comctl32.ImageList_DragShowNolock
004DDE54 - FF25 68154F00 jmp dword ptr ds:[4F1568] ; comctl32.ImageList_Draw
004DDE5A - FF25 6C154F00 jmp dword ptr ds:[4F156C] ; comctl32.ImageList_DrawEx
004DDE60 - FF25 70154F00 jmp dword ptr ds:[4F1570] ; comctl32.ImageList_EndDrag
004DDE66 - FF25 74154F00 jmp dword ptr ds:[4F1574] ; comctl32.ImageList_GetBkColor
004DDE6C - FF25 78154F00 jmp dword ptr ds:[4F1578] ; comctl32.ImageList_GetDragImage
004DDE72 - FF25 7C154F00 jmp dword ptr ds:[4F157C] ; comctl32.ImageList_GetIconSize
004DDE78 - FF25 80154F00 jmp dword ptr ds:[4F1580] ; comctl32.ImageList_GetImageCount
004DDE7E - FF25 84154F00 jmp dword ptr ds:[4F1584] ; comctl32.ImageList_Read
004DDE84 - FF25 88154F00 jmp dword ptr ds:[4F1588] ; comctl32.ImageList_Remove
004DDE8A - FF25 8C154F00 jmp dword ptr ds:[4F158C] ; comctl32.ImageList_Replace
004DDE90 - FF25 90154F00 jmp dword ptr ds:[4F1590] ; comctl32.ImageList_ReplaceIcon
004DDE96 - FF25 94154F00 jmp dword ptr ds:[4F1594] ; comctl32.ImageList_SetBkColor
004DDE9C - FF25 98154F00 jmp dword ptr ds:[4F1598] ; comctl32.ImageList_SetDragCursorImage
004DDEA2 - FF25 9C154F00 jmp dword ptr ds:[4F159C] ; comctl32.ImageList_SetIconSize
004DDEA8 - FF25 A0154F00 jmp dword ptr ds:[4F15A0] ; comctl32.ImageList_Write
004DDEAE - FF25 A4154F00 jmp dword ptr ds:[4F15A4] ; comctl32.InitCommonControls
004DDEB4 - FF25 B8154F00 jmp dword ptr ds:[4F15B8] ; comdlg32.ChooseColorA
004DDEBA - FF25 BC154F00 jmp dword ptr ds:[4F15BC] ; comdlg32.GetOpenFileNameA
004DDEC0 - FF25 24174F00 jmp dword ptr ds:[4F1724] ; GDI32.BitBlt
004DDEC6 - FF25 28174F00 jmp dword ptr ds:[4F1728] ; GDI32.CombineRgn
004DDECC - FF25 2C174F00 jmp dword ptr ds:[4F172C] ; GDI32.CopyEnhMetaFileA
004DDED2 - FF25 30174F00 jmp dword ptr ds:[4F1730] ; GDI32.CreateBitmap
004DDED8 - FF25 34174F00 jmp dword ptr ds:[4F1734] ; GDI32.CreateBrushIndirect
004DDEDE - FF25 38174F00 jmp dword ptr ds:[4F1738] ; GDI32.CreateCompatibleBitmap
004DDEE4 - FF25 3C174F00 jmp dword ptr ds:[4F173C] ; GDI32.CreateCompatibleDC
004DDEEA - FF25 40174F00 jmp dword ptr ds:[4F1740] ; GDI32.CreateDCA
004DDEF0 - FF25 44174F00 jmp dword ptr ds:[4F1744] ; GDI32.CreateDIBSection
004DDEF6 - FF25 48174F00 jmp dword ptr ds:[4F1748] ; GDI32.CreateDIBitmap
004DDEFC - FF25 4C174F00 jmp dword ptr ds:[4F174C] ; GDI32.CreateFontIndirectA
004DDF02 - FF25 50174F00 jmp dword ptr ds:[4F1750] ; GDI32.CreateHalftonePalette
004DDF08 - FF25 54174F00 jmp dword ptr ds:[4F1754] ; GDI32.CreateICA
004DDF0E - FF25 58174F00 jmp dword ptr ds:[4F1758] ; GDI32.CreatePalette
004DDF14 - FF25 5C174F00 jmp dword ptr ds:[4F175C] ; GDI32.CreatePenIndirect
004DDF1A - FF25 60174F00 jmp dword ptr ds:[4F1760] ; GDI32.CreateRectRgn
004DDF20 - FF25 64174F00 jmp dword ptr ds:[4F1764] ; GDI32.CreateRoundRectRgn
004DDF26 - FF25 68174F00 jmp dword ptr ds:[4F1768] ; GDI32.CreateSolidBrush
004DDF2C - FF25 6C174F00 jmp dword ptr ds:[4F176C] ; GDI32.DeleteDC
004DDF32 - FF25 70174F00 jmp dword ptr ds:[4F1770] ; GDI32.DeleteEnhMetaFile
004DDF38 - FF25 74174F00 jmp dword ptr ds:[4F1774] ; GDI32.DeleteObject
004DDF3E - FF25 78174F00 jmp dword ptr ds:[4F1778] ; GDI32.Ellipse
004DDF44 - FF25 7C174F00 jmp dword ptr ds:[4F177C] ; GDI32.EndDoc
004DDF4A - FF25 80174F00 jmp dword ptr ds:[4F1780] ; GDI32.EndPage
004DDF50 - FF25 84174F00 jmp dword ptr ds:[4F1784] ; GDI32.EnumFontFamiliesA
004DDF56 - FF25 88174F00 jmp dword ptr ds:[4F1788] ; GDI32.ExcludeClipRect
004DDF5C - FF25 8C174F00 jmp dword ptr ds:[4F178C] ; GDI32.ExtCreatePen
004DDF62 - FF25 90174F00 jmp dword ptr ds:[4F1790] ; GDI32.ExtTextOutA
004DDF68 - FF25 94174F00 jmp dword ptr ds:[4F1794] ; GDI32.GetBitmapBits
004DDF6E - FF25 98174F00 jmp dword ptr ds:[4F1798] ; GDI32.GetBrushOrgEx
004DDF74 - FF25 9C174F00 jmp dword ptr ds:[4F179C] ; GDI32.GetClipBox
004DDF7A - FF25 A0174F00 jmp dword ptr ds:[4F17A0] ; GDI32.GetClipRgn
004DDF80 - FF25 A4174F00 jmp dword ptr ds:[4F17A4] ; GDI32.GetCurrentPositionEx
004DDF86 - FF25 A8174F00 jmp dword ptr ds:[4F17A8] ; GDI32.GetDCOrgEx
004DDF8C - FF25 AC174F00 jmp dword ptr ds:[4F17AC] ; GDI32.GetDIBColorTable
004DDF92 - FF25 B0174F00 jmp dword ptr ds:[4F17B0] ; GDI32.GetDIBits
004DDF98 - FF25 B4174F00 jmp dword ptr ds:[4F17B4] ; GDI32.GetDeviceCaps
004DDF9E - FF25 B8174F00 jmp dword ptr ds:[4F17B8] ; GDI32.GetEnhMetaFileBits
004DDFA4 - FF25 BC174F00 jmp dword ptr ds:[4F17BC] ; GDI32.GetEnhMetaFileHeader
004DDFAA - FF25 C0174F00 jmp dword ptr ds:[4F17C0] ; GDI32.GetEnhMetaFilePaletteEntries
004DDFB0 - FF25 C4174F00 jmp dword ptr ds:[4F17C4] ; GDI32.GetObjectA
004DDFB6 - FF25 C8174F00 jmp dword ptr ds:[4F17C8] ; GDI32.GetPaletteEntries
004DDFBC - FF25 CC174F00 jmp dword ptr ds:[4F17CC] ; GDI32.GetPixel
004DDFC2 - FF25 D0174F00 jmp dword ptr ds:[4F17D0] ; GDI32.GetRgnBox
004DDFC8 - FF25 D4174F00 jmp dword ptr ds:[4F17D4] ; GDI32.GetStockObject
004DDFCE - FF25 D8174F00 jmp dword ptr ds:[4F17D8] ; GDI32.GetSystemPaletteEntries
004DDFD4 - FF25 DC174F00 jmp dword ptr ds:[4F17DC] ; GDI32.GetTextExtentPoint32A
004DDFDA - FF25 E0174F00 jmp dword ptr ds:[4F17E0] ; GDI32.GetTextExtentPointA
004DDFE0 - FF25 E4174F00 jmp dword ptr ds:[4F17E4] ; GDI32.GetTextMetricsA
004DDFE6 - FF25 E8174F00 jmp dword ptr ds:[4F17E8] ; GDI32.GetViewportOrgEx
004DDFEC - FF25 EC174F00 jmp dword ptr ds:[4F17EC] ; GDI32.GetWinMetaFileBits
004DDFF2 - FF25 F0174F00 jmp dword ptr ds:[4F17F0] ; GDI32.GetWindowOrgEx
004DDFF8 - FF25 F4174F00 jmp dword ptr ds:[4F17F4] ; GDI32.IntersectClipRect
004DDFFE - FF25 F8174F00 jmp dword ptr ds:[4F17F8] ; GDI32.LineTo
004DE004 - FF25 FC174F00 jmp dword ptr ds:[4F17FC] ; GDI32.MaskBlt
004DE00A - FF25 00184F00 jmp dword ptr ds:[4F1800] ; GDI32.MoveToEx
004DE010 - FF25 04184F00 jmp dword ptr ds:[4F1804] ; GDI32.PatBlt
004DE016 - FF25 08184F00 jmp dword ptr ds:[4F1808] ; GDI32.Pie
004DE01C - FF25 0C184F00 jmp dword ptr ds:[4F180C] ; GDI32.PlayEnhMetaFile
004DE022 - FF25 10184F00 jmp dword ptr ds:[4F1810] ; GDI32.PolyPolyline
004DE028 - FF25 14184F00 jmp dword ptr ds:[4F1814] ; GDI32.Polygon
004DE02E - FF25 18184F00 jmp dword ptr ds:[4F1818] ; GDI32.Polyline
004DE034 - FF25 1C184F00 jmp dword ptr ds:[4F181C] ; GDI32.RealizePalette
004DE03A - FF25 20184F00 jmp dword ptr ds:[4F1820] ; GDI32.RectVisible
004DE040 - FF25 24184F00 jmp dword ptr ds:[4F1824] ; GDI32.Rectangle
004DE046 - FF25 28184F00 jmp dword ptr ds:[4F1828] ; GDI32.RestoreDC
004DE04C - FF25 2C184F00 jmp dword ptr ds:[4F182C] ; GDI32.SaveDC
004DE052 - FF25 30184F00 jmp dword ptr ds:[4F1830] ; GDI32.SelectClipRgn
004DE058 - FF25 34184F00 jmp dword ptr ds:[4F1834] ; GDI32.SelectObject
004DE05E - FF25 38184F00 jmp dword ptr ds:[4F1838] ; GDI32.SelectPalette
004DE064 - FF25 3C184F00 jmp dword ptr ds:[4F183C] ; GDI32.SetBkColor
004DE06A - FF25 40184F00 jmp dword ptr ds:[4F1840] ; GDI32.SetBkMode
004DE070 - FF25 44184F00 jmp dword ptr ds:[4F1844] ; GDI32.SetBrushOrgEx
004DE076 - FF25 48184F00 jmp dword ptr ds:[4F1848] ; GDI32.SetDIBColorTable
004DE07C - FF25 4C184F00 jmp dword ptr ds:[4F184C] ; GDI32.SetEnhMetaFileBits
004DE082 - FF25 50184F00 jmp dword ptr ds:[4F1850] ; GDI32.SetMapMode
004DE088 - FF25 54184F00 jmp dword ptr ds:[4F1854] ; GDI32.SetPixel
004DE08E - FF25 58184F00 jmp dword ptr ds:[4F1858] ; GDI32.SetROP2
004DE094 - FF25 5C184F00 jmp dword ptr ds:[4F185C] ; GDI32.SetStretchBltMode
004DE09A - FF25 60184F00 jmp dword ptr ds:[4F1860] ; GDI32.SetTextColor
004DE0A0 - FF25 64184F00 jmp dword ptr ds:[4F1864] ; GDI32.SetViewportExtEx
004DE0A6 - FF25 68184F00 jmp dword ptr ds:[4F1868] ; GDI32.SetViewportOrgEx
004DE0AC - FF25 6C184F00 jmp dword ptr ds:[4F186C] ; GDI32.SetWinMetaFileBits
004DE0B2 - FF25 70184F00 jmp dword ptr ds:[4F1870] ; GDI32.SetWindowExtEx
004DE0B8 - FF25 74184F00 jmp dword ptr ds:[4F1874] ; GDI32.SetWindowOrgEx
004DE0BE - FF25 78184F00 jmp dword ptr ds:[4F1878] ; GDI32.StretchBlt
004DE0C4 - FF25 7C184F00 jmp dword ptr ds:[4F187C] ; GDI32.UnrealizeObject
004DE0CA CC int3
004DE0CB CC int3
004DE0CC - FF25 98184F00 jmp dword ptr ds:[4F1898] ; SHELL32.DragAcceptFiles
004DE0D2 - FF25 9C184F00 jmp dword ptr ds:[4F189C] ; SHELL32.DragFinish
004DE0D8 - FF25 A0184F00 jmp dword ptr ds:[4F18A0] ; SHELL32.DragQueryFileA
004DE0DE - FF25 A4184F00 jmp dword ptr ds:[4F18A4] ; SHELL32.ShellExecuteA
004DE0E4 - FF25 841B4F00 jmp dword ptr ds:[4F1B84] ; USER32.ActivateKeyboardLayout
004DE0EA - FF25 881B4F00 jmp dword ptr ds:[4F1B88] ; USER32.AdjustWindowRectEx
004DE0F0 - FF25 8C1B4F00 jmp dword ptr ds:[4F1B8C] ; USER32.BeginPaint
004DE0F6 - FF25 901B4F00 jmp dword ptr ds:[4F1B90] ; USER32.CallNextHookEx
004DE0FC - FF25 941B4F00 jmp dword ptr ds:[4F1B94] ; USER32.CallWindowProcA
004DE102 - FF25 981B4F00 jmp dword ptr ds:[4F1B98] ; USER32.CharLowerA
004DE108 - FF25 9C1B4F00 jmp dword ptr ds:[4F1B9C] ; USER32.CharLowerBuffA
004DE10E - FF25 A01B4F00 jmp dword ptr ds:[4F1BA0] ; USER32.CharNextA
004DE114 - FF25 A41B4F00 jmp dword ptr ds:[4F1BA4] ; USER32.CharUpperBuffA
004DE11A - FF25 A81B4F00 jmp dword ptr ds:[4F1BA8] ; USER32.CheckMenuItem
004DE120 - FF25 AC1B4F00 jmp dword ptr ds:[4F1BAC] ; USER32.ChildWindowFromPoint
004DE126 - FF25 B01B4F00 jmp dword ptr ds:[4F1BB0] ; USER32.ClientToScreen
004DE12C - FF25 B41B4F00 jmp dword ptr ds:[4F1BB4] ; USER32.CloseClipboard
004DE132 - FF25 B81B4F00 jmp dword ptr ds:[4F1BB8] ; USER32.CreateIcon
004DE138 - FF25 BC1B4F00 jmp dword ptr ds:[4F1BBC] ; USER32.CreateMenu
004DE13E - FF25 C01B4F00 jmp dword ptr ds:[4F1BC0] ; USER32.CreatePopupMenu
004DE144 - FF25 C41B4F00 jmp dword ptr ds:[4F1BC4] ; USER32.CreateWindowExA
004DE14A - FF25 C81B4F00 jmp dword ptr ds:[4F1BC8] ; USER32.DefFrameProcA
004DE150 - FF25 CC1B4F00 jmp dword ptr ds:[4F1BCC] ; USER32.DefMDIChildProcA
004DE156 - FF25 D01B4F00 jmp dword ptr ds:[4F1BD0] ; USER32.DefWindowProcA
004DE15C - FF25 D41B4F00 jmp dword ptr ds:[4F1BD4] ; USER32.DeleteMenu
004DE162 - FF25 D81B4F00 jmp dword ptr ds:[4F1BD8] ; USER32.DestroyIcon
004DE168 - FF25 DC1B4F00 jmp dword ptr ds:[4F1BDC] ; USER32.DestroyIcon
004DE16E - FF25 E01B4F00 jmp dword ptr ds:[4F1BE0] ; USER32.DestroyMenu
004DE174 - FF25 E41B4F00 jmp dword ptr ds:[4F1BE4] ; USER32.DestroyWindow
004DE17A - FF25 E81B4F00 jmp dword ptr ds:[4F1BE8] ; USER32.DispatchMessageA
004DE180 - FF25 EC1B4F00 jmp dword ptr ds:[4F1BEC] ; USER32.DrawEdge
004DE186 - FF25 F01B4F00 jmp dword ptr ds:[4F1BF0] ; USER32.DrawFocusRect
004DE18C - FF25 F41B4F00 jmp dword ptr ds:[4F1BF4] ; USER32.DrawFrameControl
004DE192 - FF25 F81B4F00 jmp dword ptr ds:[4F1BF8] ; USER32.DrawIcon
004DE198 - FF25 FC1B4F00 jmp dword ptr ds:[4F1BFC] ; USER32.DrawIconEx
004DE19E - FF25 001C4F00 jmp dword ptr ds:[4F1C00] ; USER32.DrawMenuBar
004DE1A4 - FF25 041C4F00 jmp dword ptr ds:[4F1C04] ; USER32.DrawTextA
004DE1AA - FF25 081C4F00 jmp dword ptr ds:[4F1C08] ; USER32.EmptyClipboard
004DE1B0 - FF25 0C1C4F00 jmp dword ptr ds:[4F1C0C] ; USER32.EnableMenuItem
004DE1B6 - FF25 101C4F00 jmp dword ptr ds:[4F1C10] ; USER32.EnableScrollBar
004DE1BC - FF25 141C4F00 jmp dword ptr ds:[4F1C14] ; USER32.EnableWindow
004DE1C2 - FF25 181C4F00 jmp dword ptr ds:[4F1C18] ; USER32.EndPaint
004DE1C8 - FF25 1C1C4F00 jmp dword ptr ds:[4F1C1C] ; USER32.EnumClipboardFormats
004DE1CE - FF25 201C4F00 jmp dword ptr ds:[4F1C20] ; USER32.EnumThreadWindows
004DE1D4 - FF25 241C4F00 jmp dword ptr ds:[4F1C24] ; USER32.EnumWindows
004DE1DA - FF25 281C4F00 jmp dword ptr ds:[4F1C28] ; USER32.EqualRect
004DE1E0 - FF25 2C1C4F00 jmp dword ptr ds:[4F1C2C] ; USER32.FillRect
004DE1E6 - FF25 301C4F00 jmp dword ptr ds:[4F1C30] ; USER32.FindWindowA
004DE1EC - FF25 341C4F00 jmp dword ptr ds:[4F1C34] ; USER32.FrameRect
004DE1F2 - FF25 381C4F00 jmp dword ptr ds:[4F1C38] ; USER32.GetActiveWindow
004DE1F8 - FF25 3C1C4F00 jmp dword ptr ds:[4F1C3C] ; USER32.GetCapture
004DE1FE - FF25 401C4F00 jmp dword ptr ds:[4F1C40] ; USER32.GetCaretPos
004DE204 - FF25 441C4F00 jmp dword ptr ds:[4F1C44] ; USER32.GetClassInfoA
004DE20A - FF25 481C4F00 jmp dword ptr ds:[4F1C48] ; USER32.GetClassNameA
004DE210 - FF25 4C1C4F00 jmp dword ptr ds:[4F1C4C] ; USER32.GetClientRect
004DE216 - FF25 501C4F00 jmp dword ptr ds:[4F1C50] ; USER32.GetClipboardData
004DE21C - FF25 541C4F00 jmp dword ptr ds:[4F1C54] ; USER32.GetComboBoxInfo
004DE222 - FF25 581C4F00 jmp dword ptr ds:[4F1C58] ; USER32.GetCursor
004DE228 - FF25 5C1C4F00 jmp dword ptr ds:[4F1C5C] ; USER32.GetCursorPos
004DE22E - FF25 601C4F00 jmp dword ptr ds:[4F1C60] ; USER32.GetDC
004DE234 - FF25 641C4F00 jmp dword ptr ds:[4F1C64] ; USER32.GetDCEx
004DE23A - FF25 681C4F00 jmp dword ptr ds:[4F1C68] ; USER32.GetDesktopWindow
004DE240 - FF25 6C1C4F00 jmp dword ptr ds:[4F1C6C] ; USER32.GetDlgItem
004DE246 - FF25 701C4F00 jmp dword ptr ds:[4F1C70] ; USER32.GetDoubleClickTime
004DE24C - FF25 741C4F00 jmp dword ptr ds:[4F1C74] ; USER32.GetFocus
004DE252 - FF25 781C4F00 jmp dword ptr ds:[4F1C78] ; USER32.GetForegroundWindow
004DE258 - FF25 7C1C4F00 jmp dword ptr ds:[4F1C7C] ; USER32.GetIconInfo
004DE25E - FF25 801C4F00 jmp dword ptr ds:[4F1C80] ; USER32.GetKeyNameTextA
004DE264 - FF25 841C4F00 jmp dword ptr ds:[4F1C84] ; USER32.GetKeyState
004DE26A - FF25 881C4F00 jmp dword ptr ds:[4F1C88] ; USER32.GetKeyboardLayout
004DE270 - FF25 8C1C4F00 jmp dword ptr ds:[4F1C8C] ; USER32.GetKeyboardLayoutList
004DE276 - FF25 901C4F00 jmp dword ptr ds:[4F1C90] ; USER32.GetKeyboardState
004DE27C - FF25 941C4F00 jmp dword ptr ds:[4F1C94] ; USER32.GetKeyboardType
004DE282 - FF25 981C4F00 jmp dword ptr ds:[4F1C98] ; USER32.GetLastActivePopup
004DE288 - FF25 9C1C4F00 jmp dword ptr ds:[4F1C9C] ; USER32.GetMenu
004DE28E - FF25 A01C4F00 jmp dword ptr ds:[4F1CA0] ; USER32.GetMenuItemCount
004DE294 - FF25 A41C4F00 jmp dword ptr ds:[4F1CA4] ; USER32.GetMenuItemID
004DE29A - FF25 A81C4F00 jmp dword ptr ds:[4F1CA8] ; USER32.GetMenuItemInfoA
004DE2A0 - FF25 AC1C4F00 jmp dword ptr ds:[4F1CAC] ; USER32.GetMenuState
004DE2A6 - FF25 B01C4F00 jmp dword ptr ds:[4F1CB0] ; USER32.GetMenuStringA
004DE2AC - FF25 B41C4F00 jmp dword ptr ds:[4F1CB4] ; USER32.GetMessagePos
004DE2B2 - FF25 B81C4F00 jmp dword ptr ds:[4F1CB8] ; USER32.GetMessageTime
004DE2B8 - FF25 BC1C4F00 jmp dword ptr ds:[4F1CBC] ; USER32.GetParent
004DE2BE - FF25 C01C4F00 jmp dword ptr ds:[4F1CC0] ; USER32.GetPropA
004DE2C4 - FF25 C41C4F00 jmp dword ptr ds:[4F1CC4] ; USER32.GetScrollBarInfo
004DE2CA - FF25 C81C4F00 jmp dword ptr ds:[4F1CC8] ; USER32.GetScrollInfo
004DE2D0 - FF25 CC1C4F00 jmp dword ptr ds:[4F1CCC] ; USER32.GetScrollPos
004DE2D6 - FF25 D01C4F00 jmp dword ptr ds:[4F1CD0] ; USER32.GetScrollRange
004DE2DC - FF25 D41C4F00 jmp dword ptr ds:[4F1CD4] ; USER32.GetSubMenu
004DE2E2 - FF25 D81C4F00 jmp dword ptr ds:[4F1CD8] ; USER32.GetSystemMenu
004DE2E8 - FF25 DC1C4F00 jmp dword ptr ds:[4F1CDC] ; USER32.GetSystemMetrics
004DE2EE - FF25 E01C4F00 jmp dword ptr ds:[4F1CE0] ; USER32.GetTopWindow
004DE2F4 - FF25 E41C4F00 jmp dword ptr ds:[4F1CE4] ; USER32.GetWindow
004DE2FA - FF25 E81C4F00 jmp dword ptr ds:[4F1CE8] ; USER32.GetWindowDC
004DE300 - FF25 EC1C4F00 jmp dword ptr ds:[4F1CEC] ; USER32.GetWindowLongA
004DE306 - FF25 F01C4F00 jmp dword ptr ds:[4F1CF0] ; USER32.GetWindowPlacement
004DE30C - FF25 F41C4F00 jmp dword ptr ds:[4F1CF4] ; USER32.GetWindowRect
004DE312 - FF25 F81C4F00 jmp dword ptr ds:[4F1CF8] ; USER32.GetWindowTextA
004DE318 - FF25 FC1C4F00 jmp dword ptr ds:[4F1CFC] ; USER32.GetWindowThreadProcessId
004DE31E - FF25 001D4F00 jmp dword ptr ds:[4F1D00] ; USER32.InflateRect
004DE324 - FF25 041D4F00 jmp dword ptr ds:[4F1D04] ; USER32.InsertMenuA
004DE32A - FF25 081D4F00 jmp dword ptr ds:[4F1D08] ; USER32.InsertMenuItemA
004DE330 - FF25 0C1D4F00 jmp dword ptr ds:[4F1D0C] ; USER32.IntersectRect
004DE336 - FF25 101D4F00 jmp dword ptr ds:[4F1D10] ; USER32.InvalidateRect
004DE33C - FF25 141D4F00 jmp dword ptr ds:[4F1D14] ; USER32.IsCharAlphaA
004DE342 - FF25 181D4F00 jmp dword ptr ds:[4F1D18] ; USER32.IsCharAlphaNumericA
004DE348 - FF25 1C1D4F00 jmp dword ptr ds:[4F1D1C] ; USER32.IsChild
004DE34E - FF25 201D4F00 jmp dword ptr ds:[4F1D20] ; USER32.IsDialogMessageA
004DE354 - FF25 241D4F00 jmp dword ptr ds:[4F1D24] ; USER32.IsIconic
004DE35A - FF25 281D4F00 jmp dword ptr ds:[4F1D28] ; USER32.IsRectEmpty
004DE360 - FF25 2C1D4F00 jmp dword ptr ds:[4F1D2C] ; USER32.IsWindow
004DE366 - FF25 301D4F00 jmp dword ptr ds:[4F1D30] ; USER32.IsWindowEnabled
004DE36C - FF25 341D4F00 jmp dword ptr ds:[4F1D34] ; USER32.IsWindowVisible
004DE372 - FF25 381D4F00 jmp dword ptr ds:[4F1D38] ; USER32.IsZoomed
004DE378 - FF25 3C1D4F00 jmp dword ptr ds:[4F1D3C] ; USER32.KillTimer
004DE37E - FF25 401D4F00 jmp dword ptr ds:[4F1D40] ; USER32.LoadBitmapA
004DE384 - FF25 441D4F00 jmp dword ptr ds:[4F1D44] ; USER32.LoadCursorA
004DE38A - FF25 481D4F00 jmp dword ptr ds:[4F1D48] ; USER32.LoadIconA
004DE390 - FF25 4C1D4F00 jmp dword ptr ds:[4F1D4C] ; USER32.LoadImageA
004DE396 - FF25 501D4F00 jmp dword ptr ds:[4F1D50] ; USER32.LoadKeyboardLayoutA
004DE39C - FF25 541D4F00 jmp dword ptr ds:[4F1D54] ; USER32.LoadStringA
004DE3A2 - FF25 581D4F00 jmp dword ptr ds:[4F1D58] ; USER32.MapVirtualKeyA
004DE3A8 - FF25 5C1D4F00 jmp dword ptr ds:[4F1D5C] ; USER32.MapWindowPoints
004DE3AE - FF25 601D4F00 jmp dword ptr ds:[4F1D60] ; USER32.MessageBeep
004DE3B4 - FF25 641D4F00 jmp dword ptr ds:[4F1D64] ; USER32.MessageBoxA
004DE3BA - FF25 681D4F00 jmp dword ptr ds:[4F1D68] ; USER32.OemToCharA
004DE3C0 - FF25 6C1D4F00 jmp dword ptr ds:[4F1D6C] ; USER32.OffsetRect
004DE3C6 - FF25 701D4F00 jmp dword ptr ds:[4F1D70] ; USER32.OpenClipboard
004DE3CC - FF25 741D4F00 jmp dword ptr ds:[4F1D74] ; USER32.PeekMessageA
004DE3D2 - FF25 781D4F00 jmp dword ptr ds:[4F1D78] ; USER32.PostMessageA
004DE3D8 - FF25 7C1D4F00 jmp dword ptr ds:[4F1D7C] ; USER32.PostQuitMessage
004DE3DE - FF25 801D4F00 jmp dword ptr ds:[4F1D80] ; USER32.PtInRect
004DE3E4 - FF25 841D4F00 jmp dword ptr ds:[4F1D84] ; USER32.RedrawWindow
004DE3EA - FF25 881D4F00 jmp dword ptr ds:[4F1D88] ; USER32.RegisterClassA
004DE3F0 - FF25 8C1D4F00 jmp dword ptr ds:[4F1D8C] ; USER32.RegisterWindowMessageA
004DE3F6 - FF25 901D4F00 jmp dword ptr ds:[4F1D90] ; USER32.RegisterWindowMessageA
004DE3FC - FF25 941D4F00 jmp dword ptr ds:[4F1D94] ; USER32.ReleaseCapture
004DE402 - FF25 981D4F00 jmp dword ptr ds:[4F1D98] ; USER32.ReleaseDC
004DE408 - FF25 9C1D4F00 jmp dword ptr ds:[4F1D9C] ; USER32.RemoveMenu
004DE40E - FF25 A01D4F00 jmp dword ptr ds:[4F1DA0] ; USER32.RemovePropA
004DE414 - FF25 A41D4F00 jmp dword ptr ds:[4F1DA4] ; USER32.ScreenToClient
004DE41A - FF25 A81D4F00 jmp dword ptr ds:[4F1DA8] ; USER32.ScrollWindow
004DE420 - FF25 AC1D4F00 jmp dword ptr ds:[4F1DAC] ; USER32.ScrollWindowEx
004DE426 - FF25 B01D4F00 jmp dword ptr ds:[4F1DB0] ; USER32.SendMessageA
004DE42C - FF25 B41D4F00 jmp dword ptr ds:[4F1DB4] ; USER32.SetActiveWindow
004DE432 - FF25 B81D4F00 jmp dword ptr ds:[4F1DB8] ; USER32.SetCapture
004DE438 - FF25 BC1D4F00 jmp dword ptr ds:[4F1DBC] ; USER32.SetClassLongA
004DE43E - FF25 C01D4F00 jmp dword ptr ds:[4F1DC0] ; USER32.SetClipboardData
004DE444 - FF25 C41D4F00 jmp dword ptr ds:[4F1DC4] ; USER32.SetCursor
004DE44A - FF25 C81D4F00 jmp dword ptr ds:[4F1DC8] ; USER32.SetFocus
004DE450 - FF25 CC1D4F00 jmp dword ptr ds:[4F1DCC] ; USER32.SetForegroundWindow
004DE456 - FF25 D01D4F00 jmp dword ptr ds:[4F1DD0] ; USER32.SetKeyboardState
004DE45C - FF25 D41D4F00 jmp dword ptr ds:[4F1DD4] ; USER32.SetMenu
004DE462 - FF25 D81D4F00 jmp dword ptr ds:[4F1DD8] ; USER32.SetMenuItemInfoA
004DE468 - FF25 DC1D4F00 jmp dword ptr ds:[4F1DDC] ; USER32.SetPropA
004DE46E - FF25 E01D4F00 jmp dword ptr ds:[4F1DE0] ; USER32.SetRect
004DE474 - FF25 E41D4F00 jmp dword ptr ds:[4F1DE4] ; USER32.SetScrollInfo
004DE47A - FF25 E81D4F00 jmp dword ptr ds:[4F1DE8] ; USER32.SetScrollPos
004DE480 - FF25 EC1D4F00 jmp dword ptr ds:[4F1DEC] ; USER32.SetScrollRange
004DE486 - FF25 F01D4F00 jmp dword ptr ds:[4F1DF0] ; USER32.SetTimer
004DE48C - FF25 F41D4F00 jmp dword ptr ds:[4F1DF4] ; USER32.SetWindowLongA
004DE492 - FF25 F81D4F00 jmp dword ptr ds:[4F1DF8] ; USER32.SetWindowPlacement
004DE498 - FF25 FC1D4F00 jmp dword ptr ds:[4F1DFC] ; USER32.SetWindowPos
004DE49E - FF25 001E4F00 jmp dword ptr ds:[4F1E00] ; USER32.SetWindowRgn
004DE4A4 - FF25 041E4F00 jmp dword ptr ds:[4F1E04] ; USER32.SetWindowTextA
004DE4AA - FF25 081E4F00 jmp dword ptr ds:[4F1E08] ; USER32.SetWindowsHookExA
004DE4B0 - FF25 0C1E4F00 jmp dword ptr ds:[4F1E0C] ; USER32.ShowCursor
004DE4B6 - FF25 101E4F00 jmp dword ptr ds:[4F1E10] ; USER32.ShowOwnedPopups
004DE4BC - FF25 141E4F00 jmp dword ptr ds:[4F1E14] ; USER32.ShowScrollBar
004DE4C2 - FF25 181E4F00 jmp dword ptr ds:[4F1E18] ; USER32.ShowWindow
004DE4C8 - FF25 1C1E4F00 jmp dword ptr ds:[4F1E1C] ; USER32.SystemParametersInfoA
004DE4CE - FF25 201E4F00 jmp dword ptr ds:[4F1E20] ; USER32.TrackPopupMenu
004DE4D4 - FF25 241E4F00 jmp dword ptr ds:[4F1E24] ; USER32.TranslateMDISysAccel
004DE4DA - FF25 281E4F00 jmp dword ptr ds:[4F1E28] ; USER32.TranslateMessage
004DE4E0 - FF25 2C1E4F00 jmp dword ptr ds:[4F1E2C] ; USER32.UnhookWindowsHookEx
004DE4E6 - FF25 301E4F00 jmp dword ptr ds:[4F1E30] ; USER32.UnionRect
004DE4EC - FF25 341E4F00 jmp dword ptr ds:[4F1E34] ; USER32.UnregisterClassA
004DE4F2 - FF25 381E4F00 jmp dword ptr ds:[4F1E38] ; USER32.UpdateWindow
004DE4F8 - FF25 3C1E4F00 jmp dword ptr ds:[4F1E3C] ; USER32.ValidateRect
004DE4FE - FF25 401E4F00 jmp dword ptr ds:[4F1E40] ; USER32.WaitMessage
004DE504 - FF25 441E4F00 jmp dword ptr ds:[4F1E44] ; USER32.WinHelpA
004DE50A - FF25 481E4F00 jmp dword ptr ds:[4F1E48] ; USER32.WindowFromDC
004DE510 - FF25 4C1E4F00 jmp dword ptr ds:[4F1E4C] ; USER32.WindowFromPoint
004DE516 - FF25 501E4F00 jmp dword ptr ds:[4F1E50] ; USER32.wsprintfA
004DE51C - FF25 541E4F00 jmp dword ptr ds:[4F1E54] ; USER32.GetSysColor
004DE522 CC int3
004DE523 CC int3
004DE524 - FF25 9C1E4F00 jmp dword ptr ds:[4F1E9C] ; oleaut32.SafeArrayCreate
004DE52A - FF25 A01E4F00 jmp dword ptr ds:[4F1EA0] ; oleaut32.SafeArrayGetElement
004DE530 - FF25 A41E4F00 jmp dword ptr ds:[4F1EA4] ; oleaut32.SafeArrayGetLBound
004DE536 - FF25 A81E4F00 jmp dword ptr ds:[4F1EA8] ; oleaut32.SafeArrayGetUBound
004DE53C - FF25 AC1E4F00 jmp dword ptr ds:[4F1EAC] ; oleaut32.SafeArrayPtrOfIndex
004DE542 - FF25 B01E4F00 jmp dword ptr ds:[4F1EB0] ; oleaut32.SafeArrayPutElement
004DE548 - FF25 B41E4F00 jmp dword ptr ds:[4F1EB4] ; oleaut32.SafeArrayRedim
004DE54E - FF25 B81E4F00 jmp dword ptr ds:[4F1EB8] ; oleaut32.SysAllocStringLen
004DE554 - FF25 BC1E4F00 jmp dword ptr ds:[4F1EBC] ; oleaut32.SysFreeString
004DE55A - FF25 C01E4F00 jmp dword ptr ds:[4F1EC0] ; oleaut32.SysReAllocStringLen
004DE560 - FF25 C41E4F00 jmp dword ptr ds:[4F1EC4] ; oleaut32.VariantChangeType
004DE566 - FF25 C81E4F00 jmp dword ptr ds:[4F1EC8] ; oleaut32.VariantClear
004DE56C - FF25 CC1E4F00 jmp dword ptr ds:[4F1ECC] ; oleaut32.VariantCopy
004DE572 - FF25 D01E4F00 jmp dword ptr ds:[4F1ED0] ; oleaut32.VariantCopyInd
004DE578 - FF25 D41E4F00 jmp dword ptr ds:[4F1ED4] ; oleaut32.VariantInit 〈--- 结束地址为 004F1ED4 + 4 = 004F1ED8
004DE57E CC int3
004DE57F CC int3
004DE580 0000 add byte ptr ds:[eax],al
004DE582 0000 add byte ptr ds:[eax],al
004DE584 0000 add byte ptr ds:[eax],al
004DE586 0000 add byte ptr ds:[eax],al
我们找到了,输入表地址始于 :004F10F8
结束于 :004F1ED8
长度 :DE0
所有的函数都没有经过加密,这倒是比较体谅我们!什么,下一步该干什么?用OD载入原程序,在程序OEP处(00401564)设内存访问断点,按2次F9键,程序便会停在OEP处,再次启动ImportRec.exe,找到"ExeGuarder.exe"进程,在OEP栏内仍然填00001564,用鼠标依次点击"IAT AutoSearch"和"Get Imports"按钮,我们看到,在OEP栏下面的RVA栏显示的是000F12D4,Size栏显示的是000001C8,这两个值都是错误的!让我们自己修改它,在RVA栏填入我们刚才找到的输入表首地址的RVA值000F10F8(000F10F8=004F10F8-00400000),在Size栏内填入输入表的长度00000DE0,这时,再次按下"Get Imports"按钮,这次找到了比原先多得多的Thunk和函数,有些Thunk有效,有些无效。因为我们事先知道,所有的系统函数都没有经过加密。所以,我们可以毫不犹豫地把所有那些无效的Thunk直接删除掉。接下来的工作当然是最后一道工序-"Fix Dump"了。经过这样处理后,程序已经可以正常运行了。
三、注册
脱过壳后,程序已经基本没有什么秘密可言了,动、静态分析结合,很快找到检查注册码的函数:
00405DD8 FFB0 C8140000 push dword ptr ds:[eax+14C8] <--- 键入的注册码地址
00405DDE E8 A9FBFFFF call ExeGuard.0040598C <--- 返回EAX=2 表示注册码正确
跟踪进去我们很快发现了两处ASCII 码字符串:
004059BD BA 26F94D00 mov edx,ExeGuard.004DF926 ; ASCII "QNBYZSFXWYBZDTSJLERRDBRYY-533SV2"
00405A17 BA 47F94D00 mov edx,ExeGuard.004DF947 ; ASCII "RGNXSULBBPJLXZCBBYDBDDCFY-533FV2"
经过输入证实,注册码是固定的字符串,与所谓的邮箱地址毫无关系,这两个字符串就是注册码!
RGNXSULBBPJLXZCBBYDBDDCFY-533FV2 -- 永久注册码
QNBYZSFXWYBZDTSJLERRDBRYY-533SV2 -- 20次限用注册码
--如果引用或转载请注明作者和出处,并保持文章的完整性,谢谢!--
---- 2005年12月8日----
附件:exeguarder_dumped.part1.rar 附件:exeguarder_dumped.part2.rar
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)