首页
社区
课程
招聘
[分享]关于svkprotect1.32脱壳手迹
发表于: 2007-7-20 13:14 4468

[分享]关于svkprotect1.32脱壳手迹

2007-7-20 13:14
4468
关于svkprotect1.32脱壳手迹,本文不是说如何脱壳的,而是在看了很多文章还有教程以后得出的一些方法,但是
结果和文章中的还是有不一样的地方,主要就是在最后的函数修复方面,但是还是成功了,现在想和大家来讨
论讨论。
我们知道关于svkp是一个猛壳,对于像我们这样的出学者来说实在是太难了,起码这是我的想法,好了废话
我不说了,下面我们看看具体的思路。
OD载入

再次之前我们忽略所有异常,使用IsDebug来隐藏就ok了

0040A000 >  60         pushad          进入OD以后停留在这里
0040A001    E8 0000000>call EnableMe.0040A006
0040A006    5D         pop ebp
0040A007    81ED 06000>sub ebp,6
0040A00D    EB 05      jmp short EnableMe.0040A014
0040A00F    B8 0636420>mov eax,423606
0040A014    64:A0 2300>mov al,byte ptr fs:[23]
0040A01A    EB 03      jmp short EnableMe.0040A01F
0040A01C    C784E8 84C>mov dword ptr ds:[eax+ebp*8+3EBC084],7>
0040A027    67:B9 4900>mov ecx,49
0040A02D    8DB5 C5020>lea esi,dword ptr ss:[ebp+2C5]
0040A033    56         push esi
0040A034    8006 44    add byte ptr ds:[esi],44
0040A037    46         inc esi
0040A038  ^ E2 FA      loopd short EnableMe.0040A034

命令行下断:bp GetModuleHandleA+5,Shift+F9 两次,断下后取消断点,Alt+F9返回!(问:为什么要下这个断点,在fly的小册子上面也提到了这个方法。我所说的小册子是fly在x档案04年的时候给我们奉献的脱壳大餐呀)

06CF018F    E8 0200000>call 06CF0196      返回到这里
06CF0194    CD20 83042>vxdcall 8240483
06CF019A    C3         retn
06CF019B    E8 EB020FE>call EEDE048B
06CF01A0    50         push eax
06CF01A1    52         push edx
06CF01A2    EB 02      jmp short 06CF01A6
1、搜索特征码,搜索所有命令:mov dword ptr ds:[edi],eax
双击第4行,用SVKP 1.32插件去下花指令!
去除花指令以后应该是下面这个样子的
06CF2B9C    8907       mov dword ptr ds:[edi],eax
06CF2B9E    7C 03      jl short 06CF2BA3
06CF2BA0    90         nop
06CF2BA1    90         nop
06CF2BA2    90         nop
06CF2BA3    90         nop
06CF2BA4    90         nop
06CF2BA5    61         popad
06CF2BA6    E8 0100000>call 06CF2BAC
06CF2BAB    9A 83C4049>call far 9090:9004C483
06CF2BB2    90         nop
然后,把这段代码的popad移到mov dword ptr ds:[edi],eax上,nop掉原先的popad

2、搜索所有命令 cmp dword ptr ds:[ebx],251097CC  //用来处理特殊加密
双击第一个来到代码处  
06CF0F64    813B CC971>cmp dword ptr ds:[ebx],251097CC
06CF0F6A    EB 03      jmp short 06CF0F6F

记住的地址是06CF0F6A以后用的到
06CF0F64    813B CC971>cmp dword ptr ds:[ebx],251097CC       //F2下断  shift+F9运行,然后取消断点。
F8单步向下(遇到CALL按F7跟进)
06CF0FF4   /0F84 EB300>je 06CF40E5
06CF0FFA   |60         pushad

我们要找的就是PUSHAD的地址06CF0FFA  现在按ctrl+G回到刚才叫大家记住的地址06CF0F6A
把JMP SHORT 06CF0F6F换 JMP 06CF0FFA(也就是PUSHAD的地址)
继续bp GetModuleHandleA+5,Shift+F9中断2次 通过所有异常,断下后取消断点,Alt+F9返回

06CF018F    E8 0200000>call 06CF0196      返回到这里
06CF0194    CD20 83042>vxdcall 8240483
06CF019A    C3         retn
06CF019B    E8 EB020FE>call EEDE048B
06CF01A0    50         push eax
06CF01A1    52         push edx
06CF01A2    EB 02      jmp short 06CF01A6

3.下命令行断点hr 0012FFB0,Shift+F9中断3次!

取消断点

命令行下tc ebp==12FFC0(12FFC0=12FFC4-4) //12FFC4是壳入口处的ESP值

右键--分析代码,避免我们向上翻看的时候代码混乱!

纠正一下地址开始脱壳,不能运行,需要修复一下  不能修复

我们用LORDPE来脱壳  OD插件有时不好用
这个壳比较难修复,这个无效我试过剪切、等级1和等级3都不行修复

差相关资料试了好久才找到一种方法可行

双击无效指针,名称填GetModuleHandleA  确定   提示:(这里和教程文章说的不一样,我的始终有多处不能修复的函数,看图(1)而且使用ImportREC1.6始终不可以。所以使用1.4了)
然后我使用了svkpIAT的插件才修复的,如图2 图3是使用插件修复好的。现在就可以抓去dump文件了。

壳已经脱了。
我的QQ是:80265480
希望能和大家多多交流。

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可否提供脱壳的程序
2007-7-20 13:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2007-7-20 19:41
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
真的很厉害啊.
2007-7-20 22:10
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我所说的小册子是fly在x档案04年的时候给我们奉献的脱壳大餐呀
   这个东西搞的我垂涎三尺啊    太羡慕了
2007-9-22 15:31
0
游客
登录 | 注册 方可回帖
返回
//