现在的位置: 首页 > 综合 > 正文

壳乱弹(2)单步分析篇破解教程1

2012年04月15日 ⁄ 综合 ⁄ 共 2724字 ⁄ 字号 评论关闭

【破解作者】 layper
【作者邮箱】 layper2002@yahoo.com.cn
【作者主页】 www.sy135.com
【使用工具】 peid,od,
【破解平台】 Win9x/NT/2000/XP
【软件名称】 壳乱弹(2)单步分析篇
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

呵呵,终于进入2006年了,祝大家新年快乐!!心想事成!!
我又来侃大山了!!!!:)
其实我写壳乱弹篇与篇之间没什么联系性,主要是想到什么就写什么!!看得懂就看一下,看不懂就算了。别当真!

学习了一段时间脱壳后,我希望有所提高,所以就想着试试单步走分析一下壳,我觉得这是提高技术的一个好办法。

我选择分析ASProtect 1.2x - 1.3x加壳的程序,开工。

00401000 >  68 01C05A00             push CWoool.005AC001
00401005    E8 01000000             call CWoool.0040100B
0040100A    C3                      retn
0040100B    C3                      retn

OD载入后我们看见这几句代码。这个壳一开始就利用这几句代码做跳板,跳到执行壳的地方,你查查ALT+M
内存映射,项目 32
 地址=005AC000
 大小=0002A000 (172032.)
 物主=CWoool   00400000
 区段=.cwoool
 包含=imports,relocations
 类型=Imag 01001002
 访问=R
 初始访问=RWE
看见没有包含imports,知道是干什么的了吧:)

走过这里后,
005AC001    60                      pushad
005AC002    E8 03000000             call CWoool.005AC00A     ;F7入
005AC007  - E9 EB045D45             jmp 45B7C4F7
005AC00C    55                      push ebp
005AC00D    C3                      retn

F7走入之后
005AC00A    5D                      pop ebp                            ; CWoool.005AC007
005AC00B    45                      inc ebp
005AC00C    55                      push ebp
005AC00D    C3                      retn

看见没有代码为之一变,呵呵,这个是扰乱静态分析的一个手段,估计可能是花指令,我不是高手,估计它原本是
    call lyp
    db e9
    jmp next
lyp:
    pop  ebp
    inc  ebp
    push ebp
    retn
next:
    ....
大概是这个样子(可能不太正确)。其实一些花指令就是插入一些指令的机器码后经过组合扰乱分析的.
005AC008   /EB 04                   jmp short CWoool.005AC00E  ;跳转
005AC00A   |5D                      pop ebp
005AC00B   |45                      inc ebp
005AC00C   |55                      push ebp
005AC00D   |C3                      retn
005AC00E   /E8 01000000             call CWoool.005AC014      ;F7进
005AC013   /EB 5D                   jmp short CWoool.005AC072
005AC015   |BB EDFFFFFF             mov ebx,-13
005AC01A   |03DD                    add ebx,ebp
005AC01C   |81EB 00C01A00           sub ebx,1AC000
005AC022   |807D 4D 01              cmp byte ptr ss:[ebp+4D],1

代码改变
005AC014    5D                      pop ebp                            ;EBP=005AC013
005AC015    BB EDFFFFFF             mov ebx,-13                        ;EBX=-13
005AC01A    03DD                    add ebx,ebp
005AC01C    81EB 00C01A00           sub ebx,1AC000                     ;EBX=400000 "MZP"
005AC022    807D 4D 01              cmp byte ptr ss:[ebp+4D],1
005AC026    75 0C                   jnz short CWoool.005AC034

可以看出,这个壳最喜欢插入EB/E9即jmp来扰乱静态分析.把0050AC001~0050AC0014代码还原后可能是这样
    pushad
    call lyp
    db e9
    jmp lyp1
lyp:
    pop  ebp
    inc  ebp
    push ebp
    retn
lyp1:
    call lyp2
    db   e9
lyp3:
    pop ebp
    mov ebx,-13
    sub ebx,1AC000
看出它是做什么没有!它应该是取文件头部的"MZP"的地址,由于壳要先取得程序的控制权,必须先定位到被加壳的
PE文件的文件头处,到这里为止完成了壳常规运做的第一步:
获取文件头地址!

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

抱歉!评论已关闭.