首页
社区
课程
招聘
请教xp下手工脱asprotect1.2壳
发表于: 2004-6-23 19:31 4745

请教xp下手工脱asprotect1.2壳

2004-6-23 19:31
4745
点击下载:附件!
    主要研究在xp下对这个小程序的手工脱壳,是asprotect1.2的壳。用od载入,停在:
00401000 >  68 01004500   PUSH ex1700.00450001
00401005    C3            RETN
    因为我的问题不在这里,可在命令行里下g 4501B8,执行后再下g 3F004F,来到我能到达的倒数第二个seh陷阱处:
003F004F    E8 3A000000    CALL 003F008E        <====这个call跟进
003F0054    68 5D003F00    PUSH 3F005D
003F0059    FF0424         INC DWORD PTR [ESP]
003F005C    C3             RETN
    我看了以前的教程,大概意思就是遇到这样的call要跟进。这里下去也没什么问题,问题在最后一个seh陷阱,我把倒数第二个列出来是为了大哥们帮我看时可以方便一点,我能到的最后一个seh陷阱是:
003EFCAA    E8 3A000000    CALL 003EFCE9        <====这个call跟进
003EFCAF    68 B8FC3E00    PUSH 3EFCB8
003EFCB4    FF0424         INC DWORD PTR [ESP]
003EFCB7    C3             RETN
    这个call跟进后是:
003EFCE9    31C0            XOR EAX,EAX
003EFCEB    EB 02           JMP SHORT 003EFCEF
    接下来:
003EFCEF    64:FF30         PUSH DWORD PTR FS:[EAX]
003EFCF2    EB 01           JMP SHORT 003EFCF5
    再下来:
003EFCF5    64:8920      MOV FS:[EAX],ESP
003EFCF8    3100         XOR [EAX],EAX        这一行会产生异常
003EFCFA    EB 01        JMP SHORT 003EFCFD 直接把光标设到这儿,再按F4
    再下来:
003EFCFD    64:8F05 0000000>POP DWORD PTR FS:[0]       ; 0012FE60
003EFD04    EB 02           JMP SHORT 003EFD08
    再下来:
003EFD08    58              POP EAX                    ; 003EFCAF
003EFD09    E8 25000000     CALL 003EFD33        《====疑问call
    3EFD09这个call跟进会在产生异常后退出,不跟进会跑到系统里出不来,然后就飞了。我的疑问是这样的程序如何手动跟?
    asprotect的壳用工具都能找到入口点吗?是不是不用手动跟啦?
    另外,在xp下一些很简单的壳,转存以后都要修复输入表吗?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (7)
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
OD载入后略除内存以外的所有异常
经过20次异常后代码如下
00D07704    FE03            INC BYTE PTR DS:[EBX]
00D07706  ^ EB E8           JMP SHORT 00D076F0
00D07708    40              INC EAX //20次后这里异常
00D07709    B9 00000000     MOV ECX,0
00D0770E    64:8F01         POP DWORD PTR FS:[ECX]
00D07711    59              POP ECX
00D07712    E8 00000000     CALL 00D07717
00D07717    83F8 21         CMP EAX,21
00D0771A    E8 09000000     CALL 00D07728
00D0771F    83E8 39         SUB EAX,39
00D07722    E9 05000000     JMP 00D0772C
00D07727    98              CWDE
00D07728    C3              RETN //在这下断,Shif+F9
00D07729    C1D0 9B         RCL EAX,9B                               ; 移动常数超出 1..31 的范围
00D0772C    B8 A6BCC7DE     MOV EAX,DEC7BCA6
00D07731    8B3424          MOV ESI,DWORD PTR SS:[ESP]
00D07734    58              POP EAX
00D07735    81EE 3F17D400   SUB ESI,0D4173F
00D0773B    98              CWDE
打开内存镜象,在CODE段下F2断点,F9就到OEP了

点击下载:附件!
2004-6-23 19:41
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
我想要弄懂原理,掌握一套通用的方法。
kimmal大侠的意思是说:不用单步走的方法跟,利用内存访问异常断点来跟,是吗?
00D07728 C3 RETN //在这下断,Shif+F9
这又是如何知道的呢?

不过这个方法是好用的,感谢kimmal大侠!
2004-6-23 20:43
0
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
晕,大侠不敢当
我菜鸟都算不上~!
我也才学脱壳的,只是脱的多些罢了~!
名牌壳脱过一些~!
2004-6-23 21:06
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
最初由 moon 发布
我想要弄懂原理,掌握一套通用的方法。
kimmal大侠的意思是说:不用单步走的方法跟,利用内存访问异常断点来跟,是吗?
00D07728 C3 RETN //在这下断,Shif+F9
这又是如何知道的呢?

不过这个方法是好用的,感谢kimmal大侠!


对于aspr 1.3X以前的壳

不用单步跟踪
忽略除了 内存访问异常 之外的所有其他异常
shift+f9
看看程序多少次运行
重新来
按shift+f9
-1次
就来到最后1次典型异常了

其实看的熟了,就可以直接shift+f9走到最后1次典型异常处
旧版的这段代码基本是固定的

然后用ESP定律,或者第2段内存断点的方法都可以找到OEP
2004-6-23 22:33
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
多谢fly大侠指导!

to: kimmal,“脱得多”不是办法,要善于总结,fly的方法比你要高明,你在00D07728设一个断点,这步没用。

    大侠还得帮忙,找入口点我是会啦,可转存以后修复输入表这一步我怎么也搞不定,不知为什么。我是用od本身来转存调试进程,然后用imr来修复输入表,为什么还是不能运行?
2004-6-23 22:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
先SHIFT+F9 N次,然后在N-1次,到最后异常处,在就是ESP定律..这个ESP定律,何解??

可否一述?
2006-7-1 16:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
对于aspr 1.3X以前的壳

不用单步跟踪
忽略除了 内存访问异常 之外的所有其他异常
shift+f9
看看程序多少次运行
重新来
按shift+f9
-1次
就来到最后1次典型异常了

其实看的熟了,就可以直接shift+f9走到最后1次典型异常处
旧版的这段代码基本是固定的

然后用ESP定律,或者第2段内存断点的方法都可以找到OEP



终于明白了。。找到OEP了。。而且用IMRE 这个软件根据用OD找到的OEP,发现了IAT,可是按照《加密解密第二版》P381页上所说的,右键,选择“Trace level1(Disasm)"的时候,CPU一直是100%,从昨天晚上22:30到现在,还是没有处理完。。。这是怎么回事啊。。。。说明一下,加壳软件被OD一直挂起在! 这也是用IMRE软件的要求之一, 要多久IMRE才能处理完啊。。。 我现在把原来的IMRE结束掉了。。现在在用IMRE的原版再一次点击右键,“Trace level1(Disasm)",现在是IMRE的CPU最高,然后就是挂起的加壳软件第二高,担心,数小时后,CPU都会100%的样子,啊。。。
这样子正常吗?

我的系统: 2003,cpu C2.9G,512M
2006-7-3 05:31
0
游客
登录 | 注册 方可回帖
返回
//