首页
社区
课程
招聘
[原创]Armadillo CopyM-II+Code Splicing+CC
发表于: 2006-3-8 09:58 4171

[原创]Armadillo CopyM-II+Code Splicing+CC

2006-3-8 09:58
4171
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
【调试环境】:Win2003、OllyDBD、PEiD、LordPE、ImportREC
【脱壳过程】:
           前两天有人问我能不能脱一个软件的壳,我试了下,发现是用的 Armadillo CopyM-II+Code Splicing+CC方式加的壳,按看雪论坛的教程走了下,脱壳成功。特写下来作一笔记共享。(附注:XP以下的系统就别看了,2000下不能这么脱)
        一、OEP
       下断BP WaitForDebugEvent,F9,暂停:
      
0012BCB8    005058BF  /CALL 到 WaitForDebugEvent 来自 MSEND.005058B9
0012BCBC    0012CD90  |pDebugEvent = 0012CD90
0012BCC0    000003E8  \Timeout = 1000. ms

         右击堆栈,0012CD90处跟随,然后进代码窗口005058BF ,Ctrl+F,搜索:OR EAX,FFFFFFF8
00505E8F   .  83C8 F8       OR EAX,FFFFFFF8

向上找到
00505E43   >  83BD CCF5FFFF>CMP DWORD PTR SS:[EBP-A34],0
00505E4A   .  0F8C A8020000 JL MSEND1.005060F8
00505E50   .  8B8D CCF5FFFF MOV ECX,DWORD PTR SS:[EBP-A34]
00505E56   .  3B0D 480F5400 CMP ECX,DWORD PTR DS:[540F48]
00505E5C   .  0F8D 96020000 JGE MSEND1.005060F8
00505E62   .  8B95 40F6FFFF MOV EDX,DWORD PTR SS:[EBP-9C0]

在00505E43这里下断点,然后把DWORD PTR SS:[EBP-A34]清0,此时数据窗口中:
0012CDA8  004AF0A0  MSEND1.004AF0A0


二、DUMP
现在继续向下找到这里:
00505F0D   .  51            PUSH ECX
00505F0E   .  E8 2F210000   CALL MSEND1.00508042
00505F13   .  83C4 0C       ADD ESP,0C
00505F16      25 FF000000   AND EAX,0FF
//这里打补丁
00505F1B      85C0          TEST EAX,EAX
00505F1D      0F84 D5010000 JE MSEND1.005060F8
00505F23      837D D8 00    CMP DWORD PTR SS:[EBP-28],0
补丁代码:
00505F16      FF85 CCF5FFFF INC DWORD PTR SS:[EBP-A34]
00505F1C      C705 4C0F5400>MOV DWORD PTR DS:[540F4C],1
00505F26    ^ E9 18FFFFFF   JMP MSEND1.00505E43

然后去005060F8处下断,F9停下,继续打补丁:
005060F8      68 C0080000   PUSH 8C0
005060FD      E8 2B31347C   CALL kernel32.DebugActiveProcessStop

先保证设置你的OD为实时调试器,然后再运行一下。
这时你看到了什么?OD自动附加到了子进程里面了,并且停在OEP处,这时候就可以把Code Splicing段保存下来了,Alt+M打开内存窗口,找到类型=Priv 访问=RWE的区段,备份到文件。
内存映射, 条目 31
 地址=039D0000
 大小=00020000 (131072.)
 属主=         039D0000 (自身)
 区段=
 类型=Priv 00021040
 访问=RWE
 初始访问=RWE


补上Code Splicing
此时LODEPE上场,先DUMP下主程序,然后从磁盘载入刚才保存的Code Splicing段,修正RVA后保存文件。

三、IAT修复
因为这个软件没有使用IAT乱序,所以和一般的方法没什么区别了,用OD打开,下断BP  DebugActiveProcess,再附加,IMR修复,一切都是“流水作业”(jingulong语)。

四、CC
这里偶不敢多言,前人早有论述,可惜看不懂,所以基本上是连蒙带猜的,好在CC不算多,改了几处INT3地址
004ADF81    CC              INT3
004ADF82  ^ 76 B8           JBE SHORT dumpedm_.004ADF3C
004ADF84    60              PUSHAD
004ADF85    48              DEC EAX
004ADF86    8B0D 70FD4B00   MOV ECX,DWORD PTR DS:[4BFD70]
004ADF8C    A1 78FD4B00     MOV EAX,DWORD PTR DS:[4BFD78]
004ADF91    8B15 74FD4B00   MOV EDX,DWORD PTR DS:[4BFD74]
004ADF97    66:83FA 00      CMP DX,0
004ADF9B    CC              INT3
004ADF9C    2D C700C4F1     SUB EAX,F1C400C7
004ADFA1    0200            ADD AL,BYTE PTR DS:[EAX]
004ADFA3    33C0            XOR EAX,EAX
004ADFA5    C3              RETN
004ADFA6    66:83F9 3C      CMP CX,3C
004ADFAA    CC              INT3
004ADFAB    35 C7002A23     XOR EAX,232A00C7
004ADFB0    3036            XOR BYTE PTR DS:[ESI],DH
004ADFB2    C740 04 236B313>MOV DWORD PTR DS:[EAX+4],32316B23
004ADFB9    66:C740 08 3334 MOV WORD PTR DS:[EAX+8],3433
004ADFBF    33C0            XOR EAX,EAX
004ADFC1    C3              RETN
004ADFC2    66:83F9 32      CMP CX,32
004ADFC6    CC              INT3
004ADFC7    3E:C700 C3C0B1A>MOV DWORD PTR DS:[EAX],A6B1C0C3
004ADFCE    C740 04 C8EDBCF>MOV DWORD PTR DS:[EAX+4],FEBCEDC8
004ADFD5    66:C740 08 BAC3 MOV WORD PTR DS:[EAX+8],0C3BA
004ADFDB    33C0            XOR EAX,EAX
004ADFDD    C3              RETN

改为:

004ADF81    90              NOP
004ADF82    90              NOP
004ADF83    90              NOP
004ADF84    90              NOP
004ADF85    48              DEC EAX
004ADF86    8B0D 70FD4B00   MOV ECX,DWORD PTR DS:[4BFD70]
004ADF8C    A1 78FD4B00     MOV EAX,DWORD PTR DS:[4BFD78]
004ADF91    8B15 74FD4B00   MOV EDX,DWORD PTR DS:[4BFD74]
004ADF97    66:83FA 00      CMP DX,0
004ADF9B    75 09           JNZ SHORT dumpedm_.004ADFA6
004ADF9D    C700 C4F10200   MOV DWORD PTR DS:[EAX],2F1C4
004ADFA3    33C0            XOR EAX,EAX
004ADFA5    C3              RETN
004ADFA6    66:83F9 3C      CMP CX,3C
004ADFAA    75 16           JNZ SHORT dumpedm_.004ADFC2
004ADFAC    C700 2A233036   MOV DWORD PTR DS:[EAX],3630232A
004ADFB2    C740 04 236B313>MOV DWORD PTR DS:[EAX+4],32316B23
004ADFB9    66:C740 08 3334 MOV WORD PTR DS:[EAX+8],3433
004ADFBF    33C0            XOR EAX,EAX
004ADFC1    C3              RETN
004ADFC2    66:83F9 32      CMP CX,32
004ADFC6    75 16           JNZ SHORT dumpedm_.004ADFDE
004ADFC8    C700 C3C0B1A6   MOV DWORD PTR DS:[EAX],A6B1C0C3
004ADFCE    C740 04 C8EDBCF>MOV DWORD PTR DS:[EAX+4],FEBCEDC8
004ADFD5    66:C740 08 BAC3 MOV WORD PTR DS:[EAX+8],0C3BA
004ADFDB    33C0            XOR EAX,EAX
004ADFDD    C3              RETN

TEST=>OK.

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
过节果然教程很多
南蛮妈妈顶你
2006-3-8 10:00
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
南蛮妈妈手好快!
2006-3-8 10:03
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
4
学习armadillo
2006-3-8 14:14
0
游客
登录 | 注册 方可回帖
返回
//