【破解作者】 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文件的文件头处,到这里为止完成了壳常规运做的第一步:
获取文件头地址!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!