EncryptPE V1.2003.5.18 脱壳疑问――Winxp sp2的Notepad
下载地址:
请点击 软件大小:
【软件简介】:1. 加密保护常规PE文件(EXE、DLL、OCX等),防静态分析修改,反动态跟踪调试。2. 将普通软件变成
共享软件,增加定时注册提醒、限制试用日期、限制试用次数、限制试用天数、限制每次试用多长时间等功能。3. 根据
最终用户的机器信息、注册用户名计算注册码,从 100 多种加密算法中随机选择一种用于注册码的计算。4. 支持多语
言,除GB外的其他语言形式的界面元素由“EncryptPE.INI”文件设置,便于增删改,注册窗口界面与语言相关。5. 向
待加密软件提供方便的编程接口,便于设计个性注册方式,同时使被加密程序与加密壳之间融为一个整体,增加破解难
度。6. 经加密软件可以运行于多种 Windows 平台,包括 9X/ME/NT/2000/XP。
【试 炼 品】:用 EncryptPE V1.2003.5.18 加壳的Winxp sp2的Notepad
下载地址:
请点击 【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
参考fly大侠的98的记事本 !98的记事本已经脱壳成功。于是自己在xpsp2下加了一个,却无法到oep,
郁闷,请高手指点
【调试环境】:WinXP、flyODBG、PEiD、LordPE、ImportREC
―――――――――――――――――――――――――――――――――
【脱壳过程】:
一、寻找OEP
用IsDebug 1.4插件去掉flyODBG的调试器标志。设置flyODBG忽略除了“INT3异常”之外的所有其它异常选项。添加“同
时忽略0EEDFADE、C0000008、009B25C、00953D74”异常。
――――――――――――――――――――――――
0040D000 60 pushad//进入OD后停在这!
0040D001 9C pushfd
0040D002 64:FF35 00000000 push dword ptr fs:[0]
0040D009 E8 79010000 call Notepad.0040D187
F9运行,程序会中断在INT3异常处,Shift+F9通过异常
711D7B6E CC int3//第1次异常
7119CAEC CC int3//第2次异常
711D7B6E CC int3//第3次异常
009592D0 CC int3//第4次异常
…… …… 省 略 …… ……
程序会在0EEDFADE和C0000008处长时间异常,所以上面忽略了这2个指定异常。
确定弹出的注册提示,回到OD,再次异常
7119CF57 CC int3//异常 停,看看堆栈
7119CF58 90 nop
7119CF59 64:8F05 00000000 pop dword ptr fs:[0]
7119CF60 C3 retn
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
7119CF57异常时的堆栈:
0007FF98 /0007FFE0 指针到下一个 SEH 记录
0007FF9C |7119CE8D SE 句柄
0007FFA0 |711A37BF 返回到 V1200351.711A37BF 来自 V1200351.7119CE88
0007FFA4 |7C930738 ntdll.7C930738
0012FF98 0012FFE0 指针到下一个 SEH 记录
0012FF9C 7119CE8D SE 句柄 //此处下断
0012FFA0 711A37BF 返回到 V1200351.711A37BF 来自 V1200351.7119CE88
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
在7119CE8D断下后,
7119CE8D 53 push ebx //此处下断,SHIFT+F9断在这,取消断点,单步运行!
7119CE8E 52 push edx
7119CE8F 8B5C24 14 mov ebx,dword ptr ss:[esp+14]
7119CE93 8B93 C4000000 mov edx,dword ptr ds:[ebx+C4]
7119CE99 8B83 C0000000 mov eax,dword ptr ds:[ebx+C0]
7119CE9F A3 38F61B71 mov dword ptr ds:[711BF638],eax
7119CEA4 E8 8F040000 call V1200351.7119D338
7119CEA9 9C pushfd
7119CEAA 58 pop eax
7119CEAB A3 38F61B71 mov dword ptr ds:[711BF638],eax
7119CEB0 E8 83040000 call V1200351.7119D338
7119CEB5 8B83 B8000000 mov eax,dword ptr ds:[ebx+B8]
7119CEBB 40 inc eax
7119CEBC 8983 B8000000 mov dword ptr ds:[ebx+B8],e======问题来了,到这里就出现进程中止,
如何到oep???
7119CEC2 8B4424 0C mov eax,dword ptr ss:[esp+C]
7119CEC6 8B00 mov eax,dword ptr ds:[eax]
7119CEC8 3D 03000080 cmp eax,80000003
7119CECD 75 71 jnz short V1200351.7119CF40
7119CECF 803D 54F61B71 01 cmp byte ptr ds:[711BF654],1
7119CED6 74 4F je short V1200351.7119CF27
7119CED8 8B42 0C mov eax,dword ptr ds:[edx+C]
7119CEDB 8983 9C000000 mov dword ptr ds:[ebx+9C],eax
7119CEE1 8B42 10 mov eax,dword ptr ds:[edx+10]
7119CEE4 8983 A0000000 mov dword ptr ds:[ebx+A0],eax
7119CEEA 8B42 14 mov eax,dword ptr ds:[edx+14]
7119CEED 8983 B4000000 mov dword ptr ds:[ebx+B4],eax
7119CEF3 8B42 1C mov eax,dword ptr ds:[edx+1C]
7119CEF6 8983 A4000000 mov dword ptr ds:[ebx+A4],eax
7119CEFC 8B42 20 mov eax,dword ptr ds:[edx+20]
7119CEFF 8983 A8000000 mov dword ptr ds:[ebx+A8],eax
7119CF05 8B42 24 mov eax,dword ptr ds:[edx+24]
7119CF08 8983 AC000000 mov dword ptr ds:[ebx+AC],eax
7119CF0E 8B42 28 mov eax,dword ptr ds:[edx+28] ★ ★
7119CF11 8983 B0000000 mov dword ptr ds:[ebx+B0],eax; 按照教程这里应该是notepad.004010CC//OEP
值
7119CF17 8B02 mov eax,dword ptr ds:[edx]
7119CF19 8942 24 mov dword ptr ds:[edx+24],eax
7119CF1C 89D0 mov eax,edx
7119CF1E 83C0 24 add eax,24
[课程]Linux pwn 探索篇!