首页 | 业界新闻 | 黑客教程 | 安全漏洞 | 安全文章 | 破解技术 | 技术文摘 | 黑客文化 | 本站原创 | 安全贴吧 | 在线留言 | IP查询 | 软件下载 | 繁体中文 |
您现在的位置: 黑色反击 >> 技术资讯 >> 破解技术 >> 破解实例 >> 正文
手工修复Armadillo壳中的CC方法
时间:2006-3-21 0:32:44 出处:看雪论坛 作者:未知 编辑:mervin 点击数:

 

007E381D  |.  83EC 0C         SUB     ESP, 0C
007E3820  |.  53              PUSH    EBX
007E3821  |.  56              PUSH    ESI
007E3822  |.  57              PUSH    EDI
007E3823  |.  8B45 08         MOV     EAX, DWORD PTR SS:[EBP+8]
007E3826  |.  50              PUSH    EAX                               ; /Arg1
007E3827  |.  FF15 64CC8300   CALL    DWORD PTR DS:[83CC64]             ; \ezcddax.007DE435
007E382D  |.  83C4 04         ADD     ESP, 4
007E3830  |.  8945 FC         MOV     DWORD PTR SS:[EBP-4], EAX
007E3833  |.  8B45 FC         MOV     EAX, DWORD PTR SS:[EBP-4]         ;  取Context域中EFLAGS寄存器值
007E3836  |.  52              PUSH    EDX
007E3837  |.  BA FFFF0000     MOV     EDX, 0FFFF
007E383C  |.  23C2            AND     EAX, EDX                          ;  取位
007E383E  |.  53              PUSH    EBX
007E383F  |.  50              PUSH    EAX                               ;  入栈
007E3840  |.  B7 07           MOV     BH, 7
007E3842  |.  FECF            DEC     BH
007E3844  |.  FECF            DEC     BH
007E3846  |.  FECF            DEC     BH
007E3848  |.  FECF            DEC     BH
007E384A  |.  FECF            DEC     BH
007E384C  |.  FECF            DEC     BH
007E384E  |.  FECF            DEC     BH
007E3850  |.  25 00080000     AND     EAX, 800                          ;  障眼法
007E3855  |.  0FC9            BSWAP   ECX
007E3857  |.  58              POP     EAX                               ;  出栈
007E3858  |.  0FC9            BSWAP   ECX
007E385A  |.  22E7            AND     AH, BH                            ;  取位
007E385C  |.  B3 86           MOV     BL, 86
007E385E  |.  80EB 05         SUB     BL, 5
007E3861  |.  FECB            DEC     BL
007E3863  |.  FECB            DEC     BL
007E3865  |.  FECB            DEC     BL
007E3867  |.  FECB            DEC     BL
007E3869  |.  FECB            DEC     BL
007E386B  |.  FECB            DEC     BL
007E386D  |.  FECB            DEC     BL
007E386F  |.  80EB 1A         SUB     BL, 1A
007E3872  |.  FECB            DEC     BL
007E3874  |.  80EB 1F         SUB     BL, 1F
007E3877  |.  66:F7D3         NOT     BX
007E387A  |.  0FC8            BSWAP   EAX
007E387C  |.  66:F7D3         NOT     BX
007E387F  |.  0FC8            BSWAP   EAX
007E3881  |.  22C3            AND     AL, BL

//////////////////////////////////////////////////                           
;  BL=40 ('@')  AL=46 ('F')
这句才是关键,EFLAGS寄存器值and 40
分析看看,十六进制的40是二进制值10000000 受影响的是第七位ZF位,测试条件是ZF=0
相关知识请看:http://www.pediy.com/tutorial/chap2/Chap2-3.htm
这样就可以判断这个跳转类型是JNE/JNZ  短跳转在CC地址写入类型的代码75;长跳转在CC发生时地址写入85
///////////////////////////////////////////////////

007E3883  |.  8BC0            MOV     EAX, EAX
007E3885  |.  5B              POP     EBX
007E3886  |.  F7D8            NEG     EAX
007E3888  |.  1BC0            SBB     EAX, EAX
007E388A  |.  40              INC     EAX

/////////////////////////////////////////////////
测试ZF位是否为0
/////////////////////////////////////////////////

007E388B  |.  5A              POP     EDX
007E388C  |.  8945 F4         MOV     DWORD PTR SS:[EBP-C], EAX
007E388F  |.  8B0D D4838300   MOV     ECX, DWORD PTR DS:[8383D4]
007E3895  |.  330D D8838300   XOR     ECX, DWORD PTR DS:[8383D8]
007E389B  |.  D1E1            SHL     ECX, 1
007E389D  |.  894D F8         MOV     DWORD PTR SS:[EBP-8], ECX
007E38A0  |.  837D F4 00      CMP     DWORD PTR SS:[EBP-C], 0
007E38A4  |.  74 09           JE      SHORT ezcddax.007E38AF
007E38A6  |.  8B55 F8         MOV     EDX, DWORD PTR SS:[EBP-8]
007E38A9  |.  83CA 01         OR      EDX, 1
007E38AC  |.  8955 F8         MOV     DWORD PTR SS:[EBP-8], EDX
007E38AF  |>  8B45 F8         MOV     EAX, DWORD PTR SS:[EBP-8]
007E38B2  |.  50              PUSH    EAX                               ; /Arg1
007E38B3  |.  FF15 00CC8300   CALL    DWORD PTR DS:[83CC00]             ; \ezcddax.007DE2C9
007E38B9  |.  83C4 04         ADD     ESP, 4
007E38BC  |.  5F              POP     EDI
007E38BD  |.  5E              POP     ESI
007E38BE  |.  5B              POP     EBX
007E38BF  |.  8BE5            MOV     ESP, EBP
007E38C1  |.  5D              POP     EBP
007E38C2  \.  C3              RETN

修改为:

007E381A    55                 PUSH    EBP
007E381B    8BEC               MOV     EBP, ESP
007E381D    83EC 0C            SUB     ESP, 0C
007E3820    53                 PUSH    EBX
007E3821    56                 PUSH    ESI
007E3822    57                 PUSH    EDI
007E3823    8B45 08            MOV     EAX, DWORD PTR SS:[EBP+8]
007E3826    50                 PUSH    EAX
007E3827    FF15 64CC8300      CALL    DWORD PTR DS:[83CC64]            ; ezcddax.007DE435
007E382D    83C4 04            ADD     ESP, 4
007E3830    8945 FC            MOV     DWORD PTR SS:[EBP-4], EAX
007E3833    8B45 FC            MOV     EAX, DWORD PTR SS:[EBP-4]        ; 取Context域中EFLAGS寄存器值
007E3836    90                 NOP                                      ; 取CC地址
007E3837    90                 NOP
007E3838    36:A1 108F8200     MOV     EAX, DWORD PTR SS:[828F10]
007E383E    8B00               MOV     EAX, DWORD PTR DS:[EAX]          ; 取CC地址
007E3840    8078 FF 0F         CMP     BYTE PTR DS:[EAX-1], 0F          ; 比较是不是长跳转标志
007E3844    74 06              JE      SHORT ezcddax.007E384C
007E3846    C640 FF 75         MOV     BYTE PTR DS:[EAX-1], 75          ; 短跳转写入在CC地址
007E384A    EB 20              JMP     SHORT ezcddax.007E386C
007E384C    C600 85            MOV     BYTE PTR DS:[EAX], 85            ; 长跳转写入,注意是写在CC发生时的地址而不是CC地址
007E384F    90                 NOP
007E3850    33C0               XOR     EAX, EAX
007E3852    90                 NOP
007E3853    90                 NOP
007E3854    90                 NOP
007E3855    90                 NOP
007E3856    90                 NOP
007E3857    90                 NOP
007E3858    90                 NOP
007E3859    90                 NOP
007E385A    90                 NOP
007E385B    90                 NOP
007E385C    90                 NOP
007E385D    90                 NOP
007E385E    90                 NOP
007E385F    90                 NOP
007E3860    90                 NOP
007E3861    90                 NOP
007E3862    90                 NOP
007E3863    90                 NOP
007E3864    90                 NOP
007E3865    90                 NOP
007E3866    90                 NOP
007E3867    90                 NOP
007E3868    90                 NOP
007E3869    90                 NOP
007E386A    90                 NOP
007E386B    90                 NOP
007E386C    90                 NOP
007E386D    90                 NOP
007E386E    90                 NOP
007E386F    90                 NOP
007E3870    90                 NOP
007E3871    90                 NOP
007E3872    90                 NOP
007E3873    90                 NOP
007E3874    90                 NOP
007E3875    90                 NOP
007E3876    90                 NOP
007E3877    90                 NOP
007E3878    90                 NOP
007E3879    90                 NOP
007E387A    90                 NOP
007E387B    90                 NOP
007E387C    90                 NOP
007E387D    90                 NOP
007E387E    90                 NOP
007E387F    90                 NOP
007E3880    90                 NOP
007E3881    90                 NOP
007E3882    90                 NOP
007E3883    90                 NOP
007E3884    90                 NOP
007E3885    90                 NOP
007E3886    90                 NOP
007E3887    90                 NOP
007E3888    90                 NOP
007E3889    90                 NOP
007E388A    90                 NOP
007E388B    90                 NOP
007E388C    8945 F4            MOV     DWORD PTR SS:[EBP-C], EAX
007E388F    8B0D D4838300      MOV     ECX, DWORD PTR DS:[8383D4]
007E3895    330D D8838300      XOR     ECX, DWORD PTR DS:[8383D8]
007E389B    D1E1               SHL     ECX, 1
007E389D    894D F8            MOV     DWORD PTR SS:[EBP-8], ECX
007E38A0    837D F4 00         CMP     DWORD PTR SS:[EBP-C], 0
007E38A4    74 09              JE      SHORT ezcddax.007E38AF
007E38A6    8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-8]
007E38A9    83CA 01            OR      EDX, 1
007E38AC    8955 F8            MOV     DWORD PTR SS:[EBP-8], EDX
007E38AF    8B45 F8            MOV     EAX, DWORD PTR SS:[EBP-8]
007E38B2    50                 PUSH    EAX
007E38B3    FF15 00CC8300      CALL    DWORD PTR DS:[83CC00]            ; ezcddax.007DE2C9
007E38B9    83C4 04            ADD     ESP, 4
007E38BC    5F                 POP     EDI
007E38BD    5E                 POP     ESI
007E38BE    5B                 POP     EBX
007E38BF    8BE5               MOV     ESP, EBP
007E38C1    5D                 POP     EBP
007E38C2    C3                 RETN

55 8B EC 83 EC 0C 53 56 57 8B 45 08 50 FF 15 64 CC 83 00 83 C4 04 89 45 FC 8B 45 FC 90 90 36 A1
10 8F 82 00 8B 00 80 78 FF 0F 74 06 C6 40 FF 75 EB 20 C6 00 85 90 33 C0 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 89 45 F4 8B 0D D4 83 83 00 33 0D D8 83 83
00 D1 E1 89 4D F8 83 7D F4 00 74 09 8B 55 F8 83 CA 01 89 55 F8 8B 45 F8 50 FF 15 00 CC 83 00 83
C4 04 5F 5E 5B 8B E5 5D C3

修复后的代码:

00439986    84C0            TEST    AL, AL
00439988    75 24           JNZ     SHORT ezcddax.004399AE          //修复后的代码,是个jnz短跳转类型
0043998A    68 FF000000     PUSH    0FF
0043998F    8D85 70F4FFFF   LEA     EAX, DWORD PTR SS:[EBP-B90]

 

还有许多跳转,就不能一一跟踪了,想修改CC的可以根据这个方法,跟踪下去。

对于跳转类型的判断其实也不难,就是壳把代码分散开来,所以修改的量比较大,所以这个方法也不是个好办法。
因为时间关系没有全部的完成,只是给出了基本的方法,大家可以参考这个方法,不必拘于这个方法。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 

精彩推荐
hack菜鸟入门
VB 从零开始编外挂(完
IPC入侵全接触
QQ跨站漏洞巧利用,强
WinXP中CPU占用100%原
黑客新技术 灰鸽子巧妙
实例讲解 黑客入侵论坛
ADSL共享上网方式大总
BMP文件格式分析
十招教你学会破解
热门软件
网 友 评 论
关于我们 - 联系方式 - 招聘信息 - 合作伙伴 - 网站地图 - 广告服务 - 我要投稿 - 设为首页 - 加入收藏
黑色反击 力倡网络安全,崇尚互联共享,欢迎各种媒体转载我们的原创作品 [转载请注明出处]。
EMAIL:hf110.com@gmail.com 备案:苏ICP备05010002号