nbsp; nop
01640053 8B15 00016401 mov edx,dword ptr ds:[1640100]
01640059 90 nop
0164005A 90 nop
0164005B 90 nop
0164005C ^ EB BE jmp short 0164001C
0164005E 90 nop
0164005F 90 nop
01640060 90 nop
01640061 90 nop
01640062 83C0 04 add eax,4
01640065 3D 60654000 cmp eax,406520 ----------------------IAT的终点
0164006A ^ 7E D2 jle short 0164003E
0164006C ^ EB E3 jmp short 01640051
方便大家粘贴2进制
代码:
BA 00 10 40 00 80 3A E8 75 12 8B 42 01 03 C2 83 C0 05 3D 00 00 D0 00 75 03 EB 0C 90 42 81 FA 00
20 40 00 72 E0 EB FE 89 15 00 01 64 01 60 FF E2 90 90 90 90 90 90 90 60 B8 E4 62 40 00 90 39 10
75 20 8B 0D 00 01 64 01 C7 01 FF 25 00 00 89 41 02 61 90 8B 15 00 01 64 01 90 90 90 EB BE 90 90
90 90 83 C0 04 3D 60 65 40 00 7E D2 EB E3
然后F9运行一会,用LordPe纠正大小后dump,用ImportREC 1.6F修复,填上OEP=10CC,点IAT自动
搜索,获得
输入信息,全部为有效指针
修复抓取文件。运行
脱壳文件,能正常运行.收工.
引用: 最初由 wangcai 发布
楼主我发现个
问题 你
脱壳的NOTEPAD.EXE 打开后点->文件->打开 后出错.............
看到了,可以OD载入
脱壳后的dumped_,F9运行,打开后点->文件->打开,停在以下
代码处,
00404FAA $- FF25 1C654000 jmp dword ptr ds:[<&comdlg32.CommDlgE>; comdlg32.CommDlgExtendedError
00404FB0 FF15 18654000 call dword ptr ds:[<&comdlg32.GetSave>; comdlg32.GetSaveFileNameA
00404FB6 FF15 14654000 call dword ptr ds:[<&comdlg32.PageSet>; comdlg32.PageSetupDlgA
00404FBC $- FF25 10654000 jmp dword ptr ds:[<&comdlg32.FindText>; comdlg32.FindTextA
00404FC2 FF15 0C654000 call dword ptr ds:[<&comdlg32.ChooseF>; comdlg32.ChooseFontA
00404FC8 FF15 08654000 call dword ptr ds:[<&comdlg32.GetOpen>; comdlg32.GetOpenFileNameA
00404FCE FF15 20654000 call dword ptr ds:[<&comdlg32.GetFile>; comdlg32.GetFileTitleA
00404FD4 . 0000 add byte ptr ds:[eax],al----------停在这里
对比没有加壳的NOTEPAD发现从00404AA到00404FCE处应该全部是jmp,但是
脱壳后的dumped_有的jmp已经变成call,将call修改为jmp,程序正常运行.原因应该是到OEP后patch的过程中:
0164001D 81FA D04F4000 cmp edx,404FD0 ---------404FD0这个数值太大的原因.应该是多少,还在寻找