TA的每日心情 | 慵懒 2018-6-6 15:51 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
【文章标题】: Armadillo V5.X Patch Key And Unpack
【文章作者】: glts
【加壳方式】: Armadill V5.X
【调试环境】: WinXP、TheODBG、PEiD、LordPE、ImportREC
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【详细过程】
目标对像: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
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 RETN
OEP:
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掉无效的 程序运行正常
-----------------------------------------------------------------------------------------------------------------------------------
视频录像:https://www.chinapyg.com/viewthr ... &extra=page%3D1
[ 本帖最后由 glts 于 2007-10-29 12:16 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
评分
-
查看全部评分
|