首页
社区
课程
招聘
bambam V0.01完美脱壳――bambam.exe主程序
发表于: 2005-2-26 16:25 5936

bambam V0.01完美脱壳――bambam.exe主程序

fly 活跃值
85
2005-2-26 16:25
5936
bambam V0.01完美脱壳――bambam.exe主程序
            
           
            
下载页面:  http://bbs.pediy.com/showthread.php?s=&threadid=11469
软件简介:  bedrock在eXetools发布的压缩壳。  
            
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
            
【调试环境】:WinXP、Ollydbg、PEiD、LordPE
            
―――――――――――――――――――――――――――――――――
【脱壳过程】:
         
         
bambam是压缩壳,因此脱壳很简单。
PEiD的Sign:[bambam V0.01 -> bedrock]
signature = 6A 14 E8 9A 05 00 00 8B D8 53 68 ?? ?? ?? ?? E8 6C FD FF FF
ep_only = true
简单写了一下脱壳过程,给新手朋友们练习。
其实不必这样走,直接通过搜索特定命令,F4过去就行了。   
―――――――――――――――――――――――――――――――――
一、脱壳的最佳时机

bambam和ASPack有点相似,在某个时机脱壳,可以不必用ImportREC来修复输入表。

00413280     6A 14               push 14
//进入Ollydbg后暂停在这
00413282     E8 9A050000         call bambam.00413821
00413287     8BD8                mov ebx,eax
00413289     53                  push ebx
0041328A     68 FB384100         push bambam.004138FB
0041328F     E8 6CFDFFFF         call bambam.00413000

下断:BP LoadLibraryA
F9运行,中断后取消断点。Alt+F9返回

00413528     FF15 49384100       call dword ptr ds:[<&KERNEL32.LoadLibraryA>]
0041352E     8BE8                mov ebp,eax
//返回这里   运行LordPE来Dump出这个进程  ★
注意了:此时程序已经解压,输入表还是原来的,没有填充系统函数地址,正是Dump的好时机
00413530     83FD FF             cmp ebp,-1
00413533     74 47               je short bambam.0041357C
00413535     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
00413539     8B06                mov eax,dword ptr ds:[esi]
0041353B     8B79 10             mov edi,dword ptr ds:[ecx+10]
0041353E     8B0D 6B394100       mov ecx,dword ptr ds:[41396B]
00413544     03F9                add edi,ecx
00413546     85C0                test eax,eax
00413548     74 38               je short bambam.00413582
0041354A     A9 00000080         test eax,80000000
0041354F     74 07               je short bambam.00413558
00413551     25 FFFF0000         and eax,0FFFF
00413556     EB 03               jmp short bambam.0041355B
00413558     8D43 02             lea eax,dword ptr ds:[ebx+2]
0041355B     50                  push eax
0041355C     55                  push ebp
0041355D     FF15 59384100       call dword ptr ds:[<&KERNEL32.GetProcAddress>>
00413563     83C6 04             add esi,4
00413566     8907                mov dword ptr ds:[edi],eax
00413568     8B0D 6B394100       mov ecx,dword ptr ds:[41396B]
0041356E     83C7 04             add edi,4
00413571     8B06                mov eax,dword ptr ds:[esi]
00413573     85C0                test eax,eax
00413575     8D1C08              lea ebx,dword ptr ds:[eax+ecx]
00413578     75 D0               jnz short bambam.0041354A
0041357A     EB 06               jmp short bambam.00413582
0041357C     8B0D 6B394100       mov ecx,dword ptr ds:[41396B]
00413582     8B4424 10           mov eax,dword ptr ss:[esp+10]
00413586     83C0 14             add eax,14
00413589     894424 10           mov dword ptr ss:[esp+10],eax
0041358D     0F85 7BFFFFFF       jnz bambam.0041350E
//循环
00413593     8B15 FF384100       mov edx,dword ptr ds:[4138FF]
//Dump后直接F4来到这里
//[004138FF]=0000B580   记下了,这个就是输入表的RVA  ★
00413599     C705 FF384100 00000>mov dword ptr ds:[4138FF],0
004135A3     8D3C11              lea edi,dword ptr ds:[ecx+edx]
004135A6     8BC8                mov ecx,eax
004135A8     2BCF                sub ecx,edi
004135AA     33C0                xor eax,eax
004135AC     8BD1                mov edx,ecx
004135AE     C1E9 02             shr ecx,2
004135B1     F3:AB               rep stos dword ptr es:[edi]
004135B3     8BCA                mov ecx,edx
004135B5     83E1 03             and ecx,3
004135B8     F3:AA               rep stos byte ptr es:[edi]
004135BA     5F                  pop edi
004135BB     5E                  pop esi
004135BC     5D                  pop ebp
004135BD     5B                  pop ebx
004135BE     59                  pop ecx
004135BF     C3                  retn

―――――――――――――――――――――――――――――――――
二、OEP

0041342E     E8 BD000000         call bambam.004134F0
00413433     A1 6B394100         mov eax,dword ptr ds:[41396B]
00413438     8B48 3C             mov ecx,dword ptr ds:[eax+3C]
0041343B     8B9401 C0000000     mov edx,dword ptr ds:[ecx+eax+C0]
00413442     85D2                test edx,edx
00413444     74 5A               je short bambam.004134A0

004134A0     A0 74394100         mov al,byte ptr ds:[413974]
004134A5     C605 73394100 01    mov byte ptr ds:[413973],1
004134AC     84C0                test al,al
004134AE     74 36               je short bambam.004134E6

004134E6     E8 15030000         call bambam.00413800
//进入

00413800     55                  push ebp
00413801     8BEC                mov ebp,esp
00413803     53                  push ebx
00413804     56                  push esi
00413805     57                  push edi
00413806     A1 FB384100         mov eax,dword ptr ds:[4138FB]
//[004138FB]=000043C9       OEP的RVA  ★
0041380B     0305 6B394100       add eax,dword ptr ds:[41396B]
00413811     A3 FB384100         mov dword ptr ds:[4138FB],eax
00413816     FF25 FB384100       jmp dword ptr ds:[4138FB] ; bambam.004043C9
//飞向光明之巅  ^O^

―――――――――――――――――――――――――――――――――
三、PE修正

用LordPE修正dump.exe的OEP RVA=000043C9、输入表RVA=0000B580,保存之。
删除最后的.bedrock壳区段,重建PE优化一下。勉强可以算是“完美”脱壳吧。

            
―――――――――――――――――――――――――――――――――   
                                
         ,     _/
        /| _.-~/            \_     ,        青春都一晌
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""
   
              UnPacked By :   fly
               2005-02-26 16:00

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 275
活跃值: (466)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
好贴正如美妇,我第一个顶
2005-2-26 16:27
0
雪    币: 319
活跃值: (2639)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
3
其实不必这样走,直接通过搜索特定命令,F4过去就行了。

请问FLY,特定命令是怎么找到的?总要跟踪以后才知道吧。授之以鱼,不如授之以渔。所以采用直接搜索特定命令的方法不可取。不然还不如直接用脱壳机好了。请FLY兄弟不要生气:)
2005-2-26 16:38
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
某些壳会有他特定命令的
不是每一个壳都需要自己跟踪的
2005-2-26 17:07
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
辛苦了
脱壳对 fly 来说早已是轻车熟路,哪里需要跟,哪里是陷阱,哪里可以走捷径早就清清楚楚
2005-2-26 21:06
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
6
最初由 csjwaman 发布
其实不必这样走,直接通过搜索特定命令,F4过去就行了。

请问FLY,特定命令是怎么找到的?总要跟踪以后才知道吧。授之以鱼,不如授之以渔。所以采用直接搜索特定命令的方法不可取。不然还不如直接用脱壳机好了。请FLY兄弟不要生气:)


这话有点道理。
2005-2-27 08:46
0
雪    币: 275
活跃值: (466)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
如果要讲解怎么跟踪到关键指令,那么时间和文章长度也太长了。谁有这个精力??
2005-2-27 08:49
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
8
最初由 采臣・宁 发布
如果要讲解怎么跟踪到关键指令,那么时间和文章长度也太长了。谁有这个精力??


破解和脱壳本来就是很累的事情。
2005-2-27 08:55
0
雪    币: 275
活跃值: (466)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
最初由 simonzh2000 发布


破解和脱壳本来就是很累的事情。

写破解文章比破解和脱壳更累哦,当然,这不关破解技术高低的问题。
2005-2-27 13:33
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
10
辛苦了
2005-2-27 16:17
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
11
最初由 csjwaman 发布
其实不必这样走,直接通过搜索特定命令,F4过去就行了。

请问FLY,特定命令是怎么找到的?总要跟踪以后才知道吧。授之以鱼,不如授之以渔。所以采用直接搜索特定命令的方法不可取。不然还不如直接用脱壳机好了。请FLY兄弟不要生气:)

有道理,希望即使有特定命令也能总结出此壳通用形式的指令处.
授之以鱼,不如授之以渔。希望更多的是由经验而产生的灵感表达.
2005-2-27 16:24
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
12
简单的壳无所谓
复杂壳的特定命令某些时候是跟踪N次后才得到的
如SVK Protector 1.32 Demo的mov dword ptr ss:[esp+1C], edx
当然,你愿意自己跟踪谁也没有意见的

纸上得来终觉浅
知道快速方法后自己再单步搞一下,会收获很多
2005-2-27 16:38
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
13
辛苦了,支持一下
2005-2-27 22:12
0
游客
登录 | 注册 方可回帖
返回