论坛: 编程破解 标题: [转帖]ArmadilloV5.XPatchKeyAndUnpack 复制本贴地址    
作者: yongmin [yongmin]    论坛用户   登录
作者:glts
转贴自:一蓑烟雨
【文章标题】: Armadillo V5.X Patch Key And Unpack
【文章作者】: glts
【加壳方式】: Armadill V5.X
【调试环境】: WinXP、TheODBG、PEiD、LordPE、ImportREC
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

[quote]【详细过程】
  目标对像:Armadillo V5.X标准 单进程 带KEY程序 已有其它机器的硬件号 和 可用KEY及用户名
  练习目的:学习Armadillo V5.X Patch KEY 和简单脱壳
 
  〖侦 查 敌 情〗
  查壳得知为Armadillo V5.0X -> Silicon Realms Toolworks
 
  Armadillo find 显示如下信息 有点吓人 5X版本基本都这样显示 此工具也应该升下级了
  ======== 29-10-2007 01:44:14 ========
  ★ 目标为Armadillo保护
  ★ 特征识别 = B0ABB0F5
  保护系统级别为 (专业版)
  ◆所用到的保护模式有◆
  屏蔽调试器
  双进程模式
  使用输入表乱续模式
  使用策略代码衔接模式
  使用 Nanomites 处理模式
  【备份密钥设置】
  不固定的备份密钥
  【程序压缩设置】
  较好/较慢地压缩方式
  【其它保护设置】
  存储外部环境变量
  使用 Digital River 版本密钥
  不要只依赖单机模式经过之前初步分析跟踪之后得出下过程
 
  〖Patch KEY 过程〗
  一、bp GetSystemTime 中断后返回引用:
00C5AAF0    FF15 0C43CA00  CALL DWORD PTR DS:[CA430C]              ; kernel32.GetSystemTime
  00C5AAF6    0FB74D FA      MOVZX ECX,WORD PTR SS:[EBP-6]
  00C5AAFA    51              PUSH ECX
  00C5AAFB    0FB755 F8      MOVZX EDX,WORD PTR SS:[EBP-8]
  00C5AAFF    52              PUSH EDX
  00C5AB00    0FB745 F6      MOVZX EAX,WORD PTR SS:[EBP-A]
  00C5AB04    50              PUSH EAX
  00C5AB05    0FB74D F4      MOVZX ECX,WORD PTR SS:[EBP-C]
  00C5AB09    51              PUSH ECX
  00C5AB0A    0FB755 F2      MOVZX EDX,WORD PTR SS:[EBP-E]
  00C5AB0E    52              PUSH EDX
  00C5AB0F    0FB745 EE      MOVZX EAX,WORD PTR SS:[EBP-12]
  00C5AB13    50              PUSH EAX
  00C5AB14    0FB74D EC      MOVZX ECX,WORD PTR SS:[EBP-14]
  00C5AB18    51              PUSH ECX
  00C5AB19    E8 22010000    CALL 00C5AC40                          //F7
  00C5AB1E    50              PUSH EAX
 
  CALL 00C5AC40  //F7――――――――――――――――――――
  00C5AC40    55              PUSH EBP
  00C5AC41    8BEC            MOV EBP,ESP
  00C5AC43    83EC 0C        SUB ESP,0C
  00C5AC46    6A 00          PUSH 0
  00C5AC48    B9 8814CB00    MOV ECX,0CB1488
  00C5AC4D    E8 BE4DFFFF    CALL 00C4FA10
  00C5AC52    8BE5            MOV ESP,EBP
  00C5AC54    5D              POP EBP
  00C5AC55    C3              RETN
 
  CALL 00C4FA10 //F7―――――――――――――――――――――
  00C4FA10    55              PUSH EBP
  00C4FA11    8BEC            MOV EBP,ESP
  00C4FA13    83EC 14        SUB ESP,14
  00C4FA16    894D F0        MOV DWORD PTR SS:[EBP-10],ECX
  00C4FA19    8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]
  00C4FA1C    8B88 5C060000  MOV ECX,DWORD PTR DS:[EAX+65C]
  00C4FA22    894D FC        MOV DWORD PTR SS:[EBP-4],ECX
  00C4FA25    8B55 F0        MOV EDX,DWORD PTR SS:[EBP-10]
  00C4FA28    8B82 5C060000  MOV EAX,DWORD PTR DS:[EDX+65C]
  00C4FA2E    8945 F8        MOV DWORD PTR SS:[EBP-8],EAX
  00C4FA31    6A 01          PUSH 1
  00C4FA33    8B4D F8        MOV ECX,DWORD PTR SS:[EBP-8]
  00C4FA36    E8 B5730100    CALL 00C66DF0                     
  00C4FA3B    8845 F7        MOV BYTE PTR SS:[EBP-9],AL
  00C4FA3E    B9 01000000    MOV ECX,1
  00C4FA43    85C9            TEST ECX,ECX
  00C4FA45    7C 21          JL SHORT 00C4FA68
  00C4FA47    BA 01000000    MOV EDX,1
  00C4FA4C    83FA 01        CMP EDX,1
  00C4FA4F    7F 17          JG SHORT 00C4FA68
  00C4FA51    B8 01000000    MOV EAX,1
  00C4FA56    C1E0 02        SHL EAX,2
  00C4FA59    8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
  00C4FA5C    8B9401 5C200000 MOV EDX,DWORD PTR DS:[ECX+EAX+205C]
  00C4FA63    8955 EC        MOV DWORD PTR SS:[EBP-14],EDX
  00C4FA66    EB 07          JMP SHORT 00C4FA6F
  00C4FA68    C745 EC 0000000>MOV DWORD PTR SS:[EBP-14],0
  00C4FA6F    8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
  00C4FA72    50              PUSH EAX
  00C4FA73    6A 01          PUSH 1
  00C4FA75    8B4D FC        MOV ECX,DWORD PTR SS:[EBP-4]
  00C4FA78    E8 B3730100    CALL 00C66E30                              //F7
  00C4FA7D    0FB64D F7      MOVZX ECX,BYTE PTR SS:[EBP-9]
  00C4FA81    F7D9            NEG ECX
  00C4FA83    1BC9            SBB ECX,ECX
  00C4FA85    81E1 11111111  AND ECX,11111111
  00C4FA8B    33C1            XOR EAX,ECX
  00C4FA8D    3345 EC        XOR EAX,DWORD PTR SS:[EBP-14]
  00C4FA90    8BE5            MOV ESP,EBP
  00C4FA92    5D              POP EBP
  00C4FA93    C2 0400        RETN 4
 
 
  CALL 00C66E30  //F7――――――――――――――――――――
 
  00C66E30    55              PUSH EBP
  00C66E31    8BEC            MOV EBP,ESP
  00C66E33    83EC 10        SUB ESP,10
  00C66E36    56              PUSH ESI
  00C66E37    894D F0        MOV DWORD PTR SS:[EBP-10],ECX
  00C66E3A    C745 FC 0000000>MOV DWORD PTR SS:[EBP-4],0
  00C66E41    8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
  00C66E44    50              PUSH EAX
  00C66E45    8B4D F0        MOV ECX,DWORD PTR SS:[EBP-10]
  00C66E48    E8 A3FFFFFF    CALL 00C66DF0
  00C66E4D    0FB6C8          MOVZX ECX,AL
  00C66E50    85C9            TEST ECX,ECX
  00C66E52    74 0A          JE SHORT 00C66E5E
  00C66E54    E8 172B0200    CALL 00C89970
  00C66E59    8945 FC        MOV DWORD PTR SS:[EBP-4],EAX
  00C66E5C    EB 5E          JMP SHORT 00C66EBC
  00C66E5E    BA 0D000000    MOV EDX,0D
  00C66E63    C1E2 02        SHL EDX,2
  00C66E66    A1 D41ACB00    MOV EAX,DWORD PTR DS:[CB1AD4]
  00C66E6B    8B0C10          MOV ECX,DWORD PTR DS:[EAX+EDX]
  00C66E6E    83F1 00        XOR ECX,0
  00C66E71    894D F8        MOV DWORD PTR SS:[EBP-8],ECX
  00C66E74    BA 15000000    MOV EDX,15
  00C66E79    C1E2 02        SHL EDX,2
  00C66E7C    A1 D41ACB00    MOV EAX,DWORD PTR DS:[CB1AD4]
  00C66E81    8B0C10          MOV ECX,DWORD PTR DS:[EAX+EDX]
  00C66E84    83F1 00        XOR ECX,0
  00C66E87    894D F4        MOV DWORD PTR SS:[EBP-C],ECX
  00C66E8A    8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]
  00C66E8D    C1E2 08        SHL EDX,8
  00C66E90    8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]
  00C66E93    8D4C10 18      LEA ECX,DWORD PTR DS:[EAX+EDX+18]
  00C66E97    8B55 F8        MOV EDX,DWORD PTR SS:[EBP-8]
  00C66E9A    3355 F4        XOR EDX,DWORD PTR SS:[EBP-C]
  00C66E9D    B8 0F000000    MOV EAX,0F
  00C66EA2    C1E0 02        SHL EAX,2
  00C66EA5    8B35 D41ACB00  MOV ESI,DWORD PTR DS:[CB1AD4]            ; RainMain.00540378
  00C66EAB    8B0406          MOV EAX,DWORD PTR DS:[ESI+EAX]
  00C66EAE    83F0 00        XOR EAX,0
  00C66EB1    33D0            XOR EDX,EAX
  00C66EB3    8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C]
  00C66EB6    331481          XOR EDX,DWORD PTR DS:[ECX+EAX*4]
  00C66EB9    8955 FC        MOV DWORD PTR SS:[EBP-4],EDX      //EDX 放的是本机硬件号 F2下断
  00C66EBC    8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
  00C66EBF    5E              POP ESI
  00C66EC0    8BE5            MOV ESP,EBP
  00C66EC2    5D              POP EBP
  00C66EC3    C2 0800        RETN 8引用:
33 14 81 89 55 FC引用:
00C59002    50              PUSH EAX
  00C59003    68 2C4BCA00    PUSH 0CA4B2C                            ; ASCII "%04X-%04X"
  00C59008    8D8D E8FCFFFF  LEA ECX,DWORD PTR SS:[EBP-318]
  00C5900E    51              PUSH ECX
  00C5900F    E8 8A430300    CALL 00C8D39E
  00C59014    83C4 10        ADD ESP,10
  00C59017    6A 00          PUSH 0
  00C59019    8D95 E8FCFFFF  LEA EDX,DWORD PTR SS:[EBP-318]
  00C5901F    52              PUSH EDX
  00C59020    68 D84CCA00    PUSH 0CA4CD8                            ; ASCII "FINGERPRINT"
  00C59025    8B8D 70FBFFFF  MOV ECX,DWORD PTR SS:[EBP-490]
  00C5902B    81C1 4C240000  ADD ECX,244C
  00C59031    E8 FA1EFFFF    CALL 00C4AF30
  00C59036    6A 00          PUSH 0
  00C59038    8B8D 70FBFFFF  MOV ECX,DWORD PTR SS:[EBP-490]
  00C5903E    E8 6D050000    CALL 00C595B0                            ; 此CALL 再次调用 00C66E30  子程序终上所述为硬件号生成及PATCH过程---在输入用户名和KEY之后还会在00C66EB9 中断N次 中断之后把硬件号都改之为正确KEY的硬件号直到程序运行
 
 
  如此KEY就PATCH好了接下来脱壳:引用:
1、BP VirtualProtect
 
  SHIFT+F9 N次之后堆栈如下:
  0012983C  00C81D8D  /CALL 到 VirtualProtect 来自 00C81D87
  00129840  004A5DBC  |Address = RainMain.004A5DBC
  00129844  00000014  |Size = 14 (20.)                              //此值有变化 故取消断点返回
  00129848  00000004  |NewProtect = PAGE_READWRITE
  0012984C  0012C2F4  \pOldProtect = 0012C2F4
  00129850  1CD2BDAE
  00129854  00540378  RainMain.00540378
 
 
 
  00C81D8D    6A 14          PUSH 14                              //返回到此
  00C81D8F    E8 3FB40000    CALL 00C8D1D3
  00C81D94    83C4 04        ADD ESP,4
  00C81D97    8985 A4AEFFFF  MOV DWORD PTR SS:[EBP+FFFFAEA4],EAX
  00C81D9D    83BD A4AEFFFF 0>CMP DWORD PTR SS:[EBP+FFFFAEA4],0
  00C81DA4    74 59          JE SHORT 00C81DFF
  00C81DA6    8B0D 8CB3CB00  MOV ECX,DWORD PTR DS:[CBB38C]
  00C81DAC    898D ACADFFFF  MOV DWORD PTR SS:[EBP+FFFFADAC],ECX
  00C81DB2    8B95 74DAFFFF  MOV EDX,DWORD PTR SS:[EBP-258C]
  00C81DB8    0395 38D6FFFF  ADD EDX,DWORD PTR SS:[EBP-29C8]
  00C81DBE    8B85 A4AEFFFF  MOV EAX,DWORD PTR SS:[EBP+FFFFAEA4]
  00C81DC4    8910            MOV DWORD PTR DS:[EAX],EDX
  00C81DC6    8B8D 58D7FFFF  MOV ECX,DWORD PTR SS:[EBP-28A8]
  00C81DCC    C1E1 02        SHL ECX,2
  00C81DCF    8B95 A4AEFFFF  MOV EDX,DWORD PTR SS:[EBP+FFFFAEA4]
  00C81DD5    894A 04        MOV DWORD PTR DS:[EDX+4],ECX
  00C81DD8    8B85 A4AEFFFF  MOV EAX,DWORD PTR SS:[EBP+FFFFAEA4]
  00C81DDE    C640 0C 00      MOV BYTE PTR DS:[EAX+C],0
  00C81DE2    8B8D A4AEFFFF  MOV ECX,DWORD PTR SS:[EBP+FFFFAEA4]
  00C81DE8    8B95 ACADFFFF  MOV EDX,DWORD PTR SS:[EBP+FFFFADAC]
  00C81DEE    8951 10        MOV DWORD PTR DS:[ECX+10],EDX
  00C81DF1    8B85 A4AEFFFF  MOV EAX,DWORD PTR SS:[EBP+FFFFAEA4]
  00C81DF7    8985 CCACFFFF  MOV DWORD PTR SS:[EBP+FFFFACCC],EAX
  00C81DFD    EB 0A          JMP SHORT 00C81E09
  00C81DFF    C785 CCACFFFF 0>MOV DWORD PTR SS:[EBP+FFFFACCC],0
  00C81E09    8B8D CCACFFFF  MOV ECX,DWORD PTR SS:[EBP+FFFFACCC]
  00C81E0F    890D 8CB3CB00  MOV DWORD PTR DS:[CBB38C],ECX
  00C81E15    8B15 8CB3CB00  MOV EDX,DWORD PTR DS:[CBB38C]
  00C81E1B    8B85 5CD7FFFF  MOV EAX,DWORD PTR SS:[EBP-28A4]
  00C81E21    8942 08        MOV DWORD PTR DS:[EDX+8],EAX
  00C81E24    C785 60D7FFFF 0>MOV DWORD PTR SS:[EBP-28A0],0
  00C81E2E    FF15 4043CA00  CALL DWORD PTR DS:[CA4340]              ; kernel32.GetTickCount
 
 
 
  返回后CTRL+F 搜索"PUSH 100" 注意__整个块 不要选择 来到如下
 
  00C82000    68 00010000    PUSH 100
  00C82005    8D8D 00C4FFFF  LEA ECX,DWORD PTR SS:[EBP-3C00]
  00C8200B    51              PUSH ECX
  00C8200C    8B95 00C5FFFF  MOV EDX,DWORD PTR SS:[EBP-3B00]
  00C82012    8B02            MOV EAX,DWORD PTR DS:[EDX]
  00C82014    50              PUSH EAX
  00C82015    E8 F6AC0000    CALL 00C8CD10                              //ENTER 进入此CALL
 

  00C8CD10    55              PUSH EBP                                  //修改为RET直接让其返回
  00C8CD11    8BEC            MOV EBP,ESP
  00C8CD13    83EC 2C        SUB ESP,2C
  00C8CD16    833D 7CDCCB00 0>CMP DWORD PTR DS:[CBDC7C],0
  00C8CD1D    75 59          JNZ SHORT 00C8CD78
  00C8CD1F    C745 EC 29BAA06>MOV DWORD PTR SS:[EBP-14],6AA0BA29
  00C8CD26    68 00010000    PUSH 100
  00C8CD2B    E8 A3040000    CALL 00C8D1D3引用:
2、BP CreateThread  SHift+F9中断后取消断点 返回 一路F8到如下代码
 
  00C85B43    8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]            ; RainMain.00546E88
  00C85B46    833A 01        CMP DWORD PTR DS:[EDX],1
  00C85B49    75 3E          JNZ SHORT 00C85B89
  00C85B4B    A1 D41ACB00    MOV EAX,DWORD PTR DS:[CB1AD4]
  00C85B50    8B0D D41ACB00  MOV ECX,DWORD PTR DS:[CB1AD4]            ; RainMain.00540378
  00C85B56    8B50 60        MOV EDX,DWORD PTR DS:[EAX+60]
  00C85B59    3351 64        XOR EDX,DWORD PTR DS:[ECX+64]
  00C85B5C    A1 D41ACB00    MOV EAX,DWORD PTR DS:[CB1AD4]
  00C85B61    3350 14        XOR EDX,DWORD PTR DS:[EAX+14]
  00C85B64    8955 DC        MOV DWORD PTR SS:[EBP-24],EDX
  00C85B67    8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
  00C85B6A    8B51 04        MOV EDX,DWORD PTR DS:[ECX+4]
  00C85B6D    52              PUSH EDX
  00C85B6E    8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
  00C85B71    8B48 08        MOV ECX,DWORD PTR DS:[EAX+8]
  00C85B74    51              PUSH ECX
  00C85B75    6A 00          PUSH 0
  00C85B77    8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]
  00C85B7A    8B42 0C        MOV EAX,DWORD PTR DS:[EDX+C]
  00C85B7D    50              PUSH EAX
  00C85B7E    8B4D F4        MOV ECX,DWORD PTR SS:[EBP-C]
  00C85B81    2B4D DC        SUB ECX,DWORD PTR SS:[EBP-24]
  00C85B84    FFD1            CALL ECX                                //韦幅王直奔光明顶 轻工了得
  00C85B86    8945 FC        MOV DWORD PTR SS:[EBP-4],EAX
  00C85B89    8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
  00C85B8C    5E              POP ESI
  00C85B8D    8BE5            MOV ESP,EBP
  00C85B8F    5D              POP EBP
  00C85B90    C3              RETNOEP:引用:
0049BF5E    55              PUSH EBP
  0049BF5F    8BEC            MOV EBP,ESP
  0049BF61    6A FF          PUSH -1
  0049BF63    68 781D4B00    PUSH 004B1D78
  0049BF68    68 96BE4900    PUSH 0049BE96                            ; JMP 到 msvcrt._except_handler3
  0049BF6D    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
  0049BF73    50              PUSH EAX
  0049BF74    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
  0049BF7B    83EC 68        SUB ESP,68
  0049BF7E    53              PUSH EBX
  0049BF7F    56              PUSH ESI
  0049BF80    57              PUSH EDI
  0049BF81    8965 E8        MOV DWORD PTR SS:[EBP-18],ESP
  0049BF84    33DB            XOR EBX,EBX
  0049BF86    895D FC        MOV DWORD PTR SS:[EBP-4],EBX
  0049BF89    6A 02          PUSH 2
  0049BF8B    FF15 E05C4A00  CALL DWORD PTR DS:[4A5CE0]              ; msvcrt.__set_app_type
  0049BF91    59              POP ECX
  0049BF92    830D 18FF4D00 F>OR DWORD PTR DS:[4DFF18],FFFFFFFF
  0049BF99    830D 1CFF4D00 F>OR DWORD PTR DS:[4DFF1C],FFFFFFFF
  0049BFA0    FF15 E45C4A00  CALL DWORD PTR DS:[4A5CE4]              ; msvcrt.__p__fmode
  0049BFA6    8B0D 0CFF4D00  MOV ECX,DWORD PTR DS:[4DFF0C]
  0049BFAC    8908            MOV DWORD PTR DS:[EAX],ECX
  0049BFAE    FF15 E85C4A00  CALL DWORD PTR DS:[4A5CE8]              ; msvcrt.__p__commode
  0049BFB4    8B0D 08FF4D00  MOV ECX,DWORD PTR DS:[4DFF08]
  0049BFBA    8908            MOV DWORD PTR DS:[EAX],ECX
  0049BFBC    A1 B45D4A00    MOV EAX,DWORD PTR DS:[4A5DB4]
  0049BFC1    8B00            MOV EAX,DWORD PTR DS:[EAX]
  0049BFC3    A3 14FF4D00    MOV DWORD PTR DS:[4DFF14],EAX
  0049BFC8    E8 92020000    CALL 0049C25F
  0049BFCD    391D A0344C00  CMP DWORD PTR DS:[4C34A0],EBX
  0049BFD3    75 0C          JNZ SHORT 0049BFE1
  0049BFD5    68 5CC24900    PUSH 0049C25C
  0049BFDA    FF15 B05D4A00  CALL DWORD PTR DS:[4A5DB0]              ; msvcrt.__setusermatherr
  0049BFE0    59              POP ECX
  0049BFE1    E8 64020000    CALL 0049C24A
  0049BFE6    68 20F34B00    PUSH 004BF320
  0049BFEB    68 1CF34B00    PUSH 004BF31C
  0049BFF0    E8 4F020000    CALL 0049C244                            ; JMP 到 msvcrt._initterm
  0049BFF5    A1 04FF4D00    MOV EAX,DWORD PTR DS:[4DFF04]
  0049BFFA    8945 94        MOV DWORD PTR SS:[EBP-6C],EAX
  0049BFFD    8D45 94        LEA EAX,DWORD PTR SS:[EBP-6C]
  0049C000    50              PUSH EAX
DUMP&FIX CUT掉无效的 程序运行正常

地主 发表时间: 08-01-27 10:53

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号