首页
社区
课程
招聘
[求助]ASProtect 1.23 RC4 - 1.3.08.24 之NOTEPADy脱壳问题
发表于: 2006-9-29 18:51 3699

[求助]ASProtect 1.23 RC4 - 1.3.08.24 之NOTEPADy脱壳问题

2006-9-29 18:51
3699
D不忽略内存访问异常,其余全忽略,隐藏OD,载入程序:
00401000 N>  68 01D04000     push NOTEPADy.0040D001     停在这里
00401005     E8 01000000     call NOTEPADy.0040100B
0040100A     C3              retn

按Shift+F9运行,N次后,注意堆栈区:
0013FF3C   0013FF44  指针到下一个 SEH 记录
0013FF40   00FC4347  SE 句柄
0013FF44   0013FFE0  指针到下一个 SEH 记录
0013FF48   00FC4C89  SE 句柄
0013FF4C   0013FF90
0013FF50   00FB0000
0013FF54   00F80000
0013FF58   00FC4178
0013FF5C   00FE31B0  ASCII "+U69wAAApMo="   出现硬盘指纹
继续四次后,再看堆栈区:
0013FF64  /0013FFE0  指针到下一个 SEH 记录
0013FF68  |00AA39CF  SE 句柄
0013FF6C  |00A90000
0013FF70  |00A70000
0013FF74  |00AA4138
0013FF78  |00AB41E8        硬盘指纹消失
0013FF7C  |00AB55D8

异常停在:
00AA39EC     3100            xor dword ptr ds:[eax],eax   最后一次异常停在这里,壳已解压用LordPE脱壳
00AA39EE     64:8F05 0000000>pop dword ptr fs:[0]
00AA39F5     58              pop eax
00AA39F6     833D B07EAA00 0>cmp dword ptr ds:[AA7EB0],0
00AA39FD     74 14           je short 00AA3A13
00AA39FF     6A 0C           push 0C
00AA3A01     B9 B07EAA00     mov ecx,0AA7EB0
00AA3A06     8D45 F8         lea eax,dword ptr ss:[ebp-8]
00AA3A09     BA 04000000     mov edx,4
00AA3A0E     E8 2DD1FFFF     call 00AA0B40
00AA3A13     FF75 FC         push dword ptr ss:[ebp-4]
00AA3A16     FF75 F8         push dword ptr ss:[ebp-8]
00AA3A19     8B45 F4         mov eax,dword ptr ss:[ebp-C]
00AA3A1C     8338 00         cmp dword ptr ds:[eax],0
00AA3A1F     74 02           je short 00AA3A23
00AA3A21     FF30            push dword ptr ds:[eax]
00AA3A23     FF75 F0         push dword ptr ss:[ebp-10]
00AA3A26     FF75 EC         push dword ptr ss:[ebp-14]
00AA3A29     C3              retn              这里下F2断点,Shift+F9运行到此,随后取消
在命令行下tc ebp==12fff0,一会儿到:
00AB57CC    /EB 02           jmp short 00AB57D0
00AB57CE    |CD20 F2EB019A   vxdjump 9A01EBF2
00AB57D4     51              push ecx
00AB57D5     F3:             prefix rep:
00AB57D6     EB 02           jmp short 00AB57DA

按F7会走到:
00AB583A     896C24 00       mov dword ptr ss:[esp],ebp //Stolen Code第一句,是PUSH EBP的变形
00AB583E     8BEC            mov ebp,esp                 //Stolen Code第二句
00AB5840     83EC 44         sub esp,44                 //Stolen Code第三句 ,标准化为ADD ESP,-44
00AB5843    /3E:EB 02        jmp short 00AB5848

OK!Alt+M,在00401000段下F2断点,Shift+F9运行:
004010CD     0000            add byte ptr ds:[eax],al     真OEP在这
004010CF     0000            add byte ptr ds:[eax],al
004010D1     0000            add byte ptr ds:[eax],al
004010D3     FF15 E4634000   call dword ptr ds:[4063E4]  停在这里,伪OEP处
004010D9     8BF0            mov esi,eax
004010DB     8A00            mov al,byte ptr ds:[eax]
004010DD     3C 22           cmp al,22

用Imp修复脱壳文件,载入程序,填入OEP=1000,点IAT自动搜索,填入大小=1000,点获得输入信息,用追踪等次1
修复,再用ASProtect 1.22插件修复,还有很多无效指针,只能手动修复,对每个无效指针点右键单击选择
Deasm\HexView查看,如果Imp提示read error!则可以安全剪切!再把OEP改为10CD,修复!
然后载入脱壳后程序,把抽取的字节补上去,保存文件!能正常运行了!

问题1 在命令行下tc ebp==12fff0,一会儿到:
00AB57CC    /EB 02           jmp short 00AB57D0
00AB57CE    |CD20 F2EB019A   vxdjump 9A01EBF2
00AB57D4     51              push ecx
00AB57D5     F3:             prefix rep:
00AB57D6     EB 02           jmp short 00AB57DA

为什么要下 tc ebp==12fff0 这个命令?

为什么是12fff0?是固定的 还是随机的?如何查看这个数值?

问题2

按F7会走到:
00AB583A     896C24 00       mov dword ptr ss:[esp],ebp //Stolen Code第一句,是PUSH EBP的变形
00AB583E     8BEC            mov ebp,esp                 //Stolen Code第二句
00AB5840     83EC 44         sub esp,44                 //Stolen Code第三句 ,标准化为ADD ESP,-44

如何判断

ASProtect 1.23 RC4 这个壳,如何判断有无Stolen Code?
有没工具查看ASProtect的保护方式?

问题3

OK!Alt+M,在00401000段下F2断点,Shift+F9运行:
004010CD     0000            add byte ptr ds:[eax],al     真OEP在这
004010CF     0000            add byte ptr ds:[eax],al
004010D1     0000            add byte ptr ds:[eax],al
004010D3     FF15 E4634000   call dword ptr ds:[4063E4]  停在这里,伪OEP处
004010D9     8BF0            mov esi,eax
004010DB     8A00            mov al,byte ptr ds:[eax]
004010DD     3C 22           cmp al,22

如何判断真实OEP位置?如果不知道OEP?如何查找

谢谢指点

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
2
我试着解释下:
一般未加壳程序入口:
push ebp
mov ebp,esp
当步过第二行,ebp=esp,而esp一般=12fff0,所以只要TC EBP=12fff0就能到达第三行.
往上翻翻,就能看到第二行与第一行.
根据经验 ASProtect 1.23 RC4 - 1.3.08.24 只是偷前面几行代码而已.因此可以Alt+M直接在code下断,再根据参考程序(随便相同语言的程序)即可恢复被偷的代码.
2006-9-30 07:49
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
3
最初由 cyto 发布
我试着解释下:
一般未加壳程序入口:
push ebp
mov ebp,esp
当步过第二行,ebp=esp,而esp一般=12fff0,所以只要TC EBP=12fff0就能到达第三行.
........

Thanks
2006-9-30 10:26
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
4
如何判断

ASProtect 1.23 RC4 这个壳,如何判断有无Stolen Code?
有没工具查看ASProtect的保护方式?

请问 有没有跟ARM一样的 查这个壳的保护方式的工具?
2006-9-30 10:29
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
5
最初由 bestchao 发布
如何判断

ASProtect 1.23 RC4 这个壳,如何判断有无Stolen Code?
有没工具查看ASProtect的保护方式?

........


当最后一次异常后,下断code,继续F9,看看停下的位置即可知道有无stolen code。
目前没有看到工具查保护方式。
2006-9-30 12:00
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
6
感谢 cyto 大侠的指点

祝10.1快乐 身体健康and万事如意
2006-9-30 12:02
0
游客
登录 | 注册 方可回帖
返回
//