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

 

008061D8  ^ E9 A6FCFFFF     JMP     ezcddax.00805E83
008061DD    90              NOP
008061DE    90              NOP
008061DF    90              NOP
008061E0    90              NOP
008061E1    90              NOP
008061E2    90              NOP

83 05 10 8F 82 00 04 8B 15 10 8F 82 00 8B 12 89 15 00 8F
82 00 83 FA 00 74 E6 83 FA FF 74 08 E9
A6 FC FF FF 90 90 90 90 90 90

经过调试,把处理代码修改为下面这样,实行的功能基本完成。

运行修改代码前必须做到:

   <1>. 把dump下的.text段二进制复制到,现在调试时的.text段中。
   <2>. Alt+M 在内存窗口中修改.text段的[访问属性]为[完全访问]。
   <3>. 把收集的CC地址的二进制值复制到指定的内存中,我是放在[00828000]处,调试时发现不是int3的CC二进制修改为00000000,不停调试,不停的修改。
   <4>. 在CC地址的最后放入FFFFFFFF用以表示CC修复结束。
   <5>. 调试时要注意复制修改后的程序二进制数据,防止出现错误,完成后把.text中的二进制数据复制到dump的文件中保存。

00805E39   .  50                 PUSH    EAX                                  ; /pContext
00805E3A   .  8B8D 50EEFFFF      MOV     ECX, DWORD PTR SS:[EBP-11B0]         ; |
00805E40   .  51                 PUSH    ECX                                  ; |hThread
00805E41   .  FF15 E0808300      CALL    DWORD PTR DS:[<&KERNEL32.GetThreadCo>; \GetThreadContext
00805E47   .  90                 NOP
00805E48   .  90                 NOP
00805E49   .  52                 PUSH    EDX
00805E4A   .  8B15 00808200      MOV     EDX, DWORD PTR DS:[828000]           ;  ezcddax.00439891
00805E50   .  8915 008F8200      MOV     DWORD PTR DS:[828F00], EDX
00805E56   .  C705 108F8200 0080>MOV     DWORD PTR DS:[828F10], ezcddax.00828>
00805E60   .  5A                 POP     EDX
00805E61   .  90                 NOP
00805E62   .  90                 NOP
00805E63   .  90                 NOP
00805E64   .  90                 NOP
00805E65   .  90                 NOP
00805E66   .  90                 NOP
00805E67   .  90                 NOP
00805E68   .  90                 NOP
00805E69   .  90                 NOP
00805E6A   .  90                 NOP
00805E6B   .  90                 NOP
00805E6C   .  90                 NOP
00805E6D   .  90                 NOP
00805E6E   .  90                 NOP
00805E6F   .  90                 NOP
00805E70   .  90                 NOP
00805E71   .  90                 NOP
00805E72   .  90                 NOP
00805E73   .  90                 NOP
00805E74   .  90                 NOP
00805E75   .  90                 NOP
00805E76   .  90                 NOP
00805E77   .  90                 NOP
00805E78   .  90                 NOP
00805E79   .  90                 NOP
00805E7A   .  90                 NOP
00805E7B   .  90                 NOP
00805E7C   .  90                 NOP
00805E7D   .  90                 NOP
00805E7E   .  90                 NOP
00805E7F   .  90                 NOP
00805E80   .  90                 NOP
00805E81   .  90                 NOP
00805E82   .  90                 NOP
00805E83   >  90                 NOP
00805E84   .  90                 NOP
00805E85   .  90                 NOP
00805E86   .  90                 NOP
00805E87   .  90                 NOP
00805E88   .  90                 NOP
00805E89   .  90                 NOP
00805E8A   .  60                 PUSHAD
00805E8B   .  C785 78EBFFFF 0000>MOV     DWORD PTR SS:[EBP-1488], 0
00805E95   .  6A FF              PUSH    -1                                   ; /Arg3 = FFFFFFFF
00805E97   .  6A 04              PUSH    4                                    ; |Arg2 = 00000004
00805E99   .  8D95 34ECFFFF      LEA     EDX, DWORD PTR SS:[EBP-13CC]        
; |堆栈地址=0012E3D0
00805E9F   .  52                 PUSH    EDX                                  ; |Arg1
00805EA0   .  E8 EB60FDFF        CALL    ezcddax.007DBF90                    
; \ezcddax.007DBF90
00805EA5   .  83C4 0C            ADD     ESP, 0C
00805EA8   .  8985 4CEEFFFF      MOV     DWORD PTR SS:[EBP-11B4], EAX
00805EAE   .  8B85 4CEEFFFF      MOV     EAX, DWORD PTR SS:[EBP-11B4]
00805EB4   .  33D2               XOR     EDX, EDX
00805EB6   .  B9 19000000        MOV     ECX, 19
00805EBB   .  F7F1               DIV     ECX
00805EBD   .  8995 48EEFFFF      MOV     DWORD PTR SS:[EBP-11B8], EDX
00805EC3   .  8B95 34ECFFFF      MOV     EDX, DWORD PTR SS:[EBP-13CC]
00805EC9   .  52                 PUSH    EDX
00805ECA   .  8B85 48EEFFFF      MOV     EAX, DWORD PTR SS:[EBP-11B8]
00805ED0   .  FF1485 98CD8300    CALL    DWORD PTR DS:[EAX*4+83CD98]
00805ED7   .  83C4 04            ADD     ESP, 4
00805EDA   .  8985 78EBFFFF      MOV     DWORD PTR SS:[EBP-1488], EAX
00805EE0   .  C785 74EBFFFF 0000>MOV     DWORD PTR SS:[EBP-148C], 0
00805EEA   .  8B8D 48EEFFFF      MOV     ECX, DWORD PTR SS:[EBP-11B8]
00805EF0   .  8B148D 00F38300    MOV     EDX, DWORD PTR DS:[ECX*4+83F300]
00805EF7   .  8995 54EEFFFF      MOV     DWORD PTR SS:[EBP-11AC], EDX
00805EFD   >  8B85 74EBFFFF      MOV     EAX, DWORD PTR SS:[EBP-148C]
00805F03   .  3B85 54EEFFFF      CMP     EAX, DWORD PTR SS:[EBP-11AC]
00805F09   .  7D 5C              JGE     SHORT ezcddax.00805F67
00805F0B   .  8B85 54EEFFFF      MOV     EAX, DWORD PTR SS:[EBP-11AC]
00805F11   .  2B85 74EBFFFF      SUB     EAX, DWORD PTR SS:[EBP-148C]
00805F17   .  99                 CDQ
00805F18   .  2BC2               SUB     EAX, EDX
00805F1A   .  D1F8               SAR     EAX, 1
00805F1C   .  8B8D 74EBFFFF      MOV     ECX, DWORD PTR SS:[EBP-148C]
00805F22   .  03C8               ADD     ECX, EAX
00805F24   .  898D 70EBFFFF      MOV     DWORD PTR SS:[EBP-1490], ECX
00805F2A   .  8B95 48EEFFFF      MOV     EDX, DWORD PTR SS:[EBP-11B8]
00805F30   .  8B0495 7CF28300    MOV     EAX, DWORD PTR DS:[EDX*4+83F27C]
00805F37   .  8B8D 70EBFFFF      MOV     ECX, DWORD PTR SS:[EBP-1490]
00805F3D   .  8B95 78EBFFFF      MOV     EDX, DWORD PTR SS:[EBP-1488]
00805F43   .  3B1488             CMP     EDX, DWORD PTR DS:[EAX+ECX*4]
00805F46   .  76 11              JBE     SHORT ezcddax.00805F59
00805F48   .  8B85 70EBFFFF      MOV     EAX, DWORD PTR SS:[EBP-1490]
00805F4E   .  83C0 01            ADD     EAX, 1
00805F51   .  8985 74EBFFFF      MOV     DWORD PTR SS:[EBP-148C], EAX
00805F57   .  EB 0C              JMP     SHORT ezcddax.00805F65
00805F59   >  8B8D 70EBFFFF      MOV     ECX, DWORD PTR SS:[EBP-1490]
00805F5F   .  898D 54EEFFFF      MOV     DWORD PTR SS:[EBP-11AC], ECX
00805F65   >^ EB 96              JMP     SHORT ezcddax.00805EFD
00805F67   >  90                 NOP
00805F68   .  90                 NOP
00805F69   .  90                 NOP
00805F6A   .  90                 NOP
00805F6B   .  90                 NOP
00805F6C   .  90                 NOP
00805F6D   .  90                 NOP
00805F6E   .  90                 NOP
00805F6F   .  90                 NOP
00805F70   .  90                 NOP
00805F71   .  90                 NOP
00805F72   .  90                 NOP
00805F73   .  90                 NOP
00805F74   .  90                 NOP
00805F75   .  90                 NOP
00805F76   .  90                 NOP
00805F77   .  90                 NOP
00805F78   .  90                 NOP
00805F79   .  90                 NOP
00805F7A   .  90                 NOP
00805F7B   .  90                 NOP
00805F7C   .  90                 NOP
00805F7D   .  90                 NOP
00805F7E   .  90                 NOP
00805F7F   .  90                 NOP
00805F80   .  90                 NOP
00805F81   .  90                 NOP
00805F82   .  90                 NOP
00805F83   .  90                 NOP
00805F84   .  90                 NOP
00805F85   .  90                 NOP
00805F86   .  90                 NOP
00805F87   .  90                 NOP
00805F88   .  90                 NOP
00805F89   .  90                 NOP
00805F8A   .  90                 NOP
00805F8B   .  90                 NOP
00805F8C   .  90                 NOP
00805F8D   .  8B95 48EEFFFF      MOV     EDX, DWORD PTR SS:[EBP-11B8]
00805F93   .  8B0495 7CF28300    MOV     EAX, DWORD PTR DS:[EDX*4+83F27C]
00805F9A   .  8B8D 74EBFFFF      MOV     ECX, DWORD PTR SS:[EBP-148C]
00805FA0   .  8B1488             MOV     EDX, DWORD PTR DS:[EAX+ECX*4]
00805FA3   .  3B95 78EBFFFF      CMP     EDX, DWORD PTR SS:[EBP-1488]        
;  判断CC地址是否在表中
00805FA9   .  0F85 0A020000      JNZ     ezcddax.008061B9
00805FAF   .  90                 NOP
00805FB0   .  90                 NOP
00805FB1   .  90                 NOP                                         
;  下面开始修改相关代码:
00805FB2   .  90                 NOP                                         
;  首先通过壳计算jump代码长度的代码,获得代码长度,用以区分长短跳转。
00805FB3   .  E8 97010000        CALL    ezcddax.0080614F                   
  ;  把壳计算jump代码长度的一段修改成计算的函数
00805FB8   .  90                 NOP
00805FB9   .  90                 NOP
00805FBA   .  90                 NOP
00805FBB   .  90                 NOP
00805FBC   .  90                 NOP
00805FBD   .  90                 NOP
00805FBE   .  E8 F9000000        CALL    ezcddax.008060BC                    
;  计算jump偏移量
00805FC3   .  803D 208F8200 04   CMP     BYTE PTR DS:[828F20], 4           
   ;  根据代码长度判断长短跳转
00805FCA      7F 30              JG      SHORT ezcddax.00805FFC
00805FCC      7C 38              JL      SHORT ezcddax.00806006              
;  短跳转直接处理
00805FCE      66:833D 308F8200 0>CMP     WORD PTR DS:[828F30], 4             
;  这是jmp的另一种类型,arm把跳转到下一代码的类型也判断为jmp 偏移量是4
00805FD6      74 0F              JE      SHORT ezcddax.00805FE7
00805FD8      8B85 34ECFFFF      MOV     EAX, DWORD PTR SS:[EBP-13CC]        
;  剩下的就是长jmp类型了
00805FDE      C640 FF E9         MOV     BYTE PTR DS:[EAX-1], 0E9            
;  填入长jmp类型代码
00805FE2      E9 08010000        JMP     ezcddax.008060EF                    
;  直接到判断正反方向跳转的代码
00805FE7      8B85 34ECFFFF      MOV     EAX, DWORD PTR SS:[EBP-13CC]        
;  偏移量是4的jmp类型用nop填入
00805FED      C640 FF 90         MOV     BYTE PTR DS:[EAX-1], 90
00805FF1      C700 90909090      MOV     DWORD PTR DS:[EAX], 90909090
00805FF7      E9 BD010000        JMP     ezcddax.008061B9                    
;  修复算完成,直接到下一循环。
00805FFC      8B85 34ECFFFF      MOV     EAX, DWORD PTR SS:[EBP-13CC]        
;  如果是长跳转,写入长跳转标记代码
00806002      C640 FF 0F         MOV     BYTE PTR DS:[EAX-1], 0F             
;  注意是单字节,写入CC地址
00806006   >  8B85 48EEFFFF      MOV     EAX, DWORD PTR SS:[EBP-11B8]
0080600C   .  8B0C85 64F38300    MOV     ECX, DWORD PTR DS:[EAX*4+83F364]
00806013   .  8B95 74EBFFFF      MOV     EDX, DWORD PTR SS:[EBP-148C]
00806019   .  8B0491             MOV     EAX, DWORD PTR DS:[ECX+EDX*4]
0080601C   .  8985 5CEBFFFF      MOV     DWORD PTR SS:[EBP-14A4], EAX
00806022   .  8B8D 3CECFFFF      MOV     ECX, DWORD PTR SS:[EBP-13C4]
00806028   .  81E1 D70F0000      AND     ECX, 0FD7
0080602E   .  898D 6CEBFFFF      MOV     DWORD PTR SS:[EBP-1494], ECX
00806034   .  8B95 5CEBFFFF      MOV     EDX, DWORD PTR SS:[EBP-14A4]
0080603A   .  81E2 000000FF      AND     EDX, FF000000
00806040   .  C1EA 18            SHR     EDX, 18
00806043   .  8995 60EBFFFF      MOV     DWORD PTR SS:[EBP-14A0], EDX
00806049   .  8B85 5CEBFFFF      MOV     EAX, DWORD PTR SS:[EBP-14A4]
0080604F   .  25 FFFFFF00        AND     EAX, 0FFFFFF
00806054   .  8985 64EBFFFF      MOV     DWORD PTR SS:[EBP-149C], EAX
0080605A   .  8B8D 28ECFFFF      MOV     ECX, DWORD PTR SS:[EBP-13D8]
00806060   .  51                 PUSH    ECX
00806061   .  8B95 6CEBFFFF      MOV     EDX, DWORD PTR SS:[EBP-1494]
00806067   .  52                 PUSH    EDX
00806068   .  8B85 64EBFFFF      MOV     EAX, DWORD PTR SS:[EBP-149C]
0080606E   .  50                 PUSH    EAX
0080606F   .  8B8D 60EBFFFF      MOV     ECX, DWORD PTR SS:[EBP-14A0]
00806075   .  FF148D 0C888300    CALL    DWORD PTR DS:[ECX*4+83880C]         
;  模拟处理EFLAGS寄存器值来判断标志寄存器的标志位的函数入口
0080607C   .  83C4 0C            ADD     ESP, 0C
0080607F   .  8985 68EBFFFF      MOV     DWORD PTR SS:[EBP-1498], EAX
00806085   .  8B95 68EBFFFF      MOV     EDX, DWORD PTR SS:[EBP-1498]
0080608B   .  33D2               XOR     EDX, EDX
0080608D   .  803D 208F8200 04   CMP     BYTE PTR DS:[828F20], 4             
;  下面根据不同的代码长度,到不同的写入偏移量的代码
00806094   .  0F8C D3000000      JL      ezcddax.0080616D                     ;  <4 是短跳转
0080609A   .  7F 7D              JG      SHORT ezcddax.00806119               ;  >4 是长跳转
0080609C   .  74 51              JE      SHORT ezcddax.008060EF               ;  =4 是jmp类型
0080609E   .  90                 NOP
0080609F   .  90                 NOP
008060A0   .  90                 NOP
008060A1   .  90                 NOP
008060A2   .  90                 NOP
008060A3   .  90                 NOP
008060A4   .  90                 NOP
008060A5   .  90                 NOP
008060A6   .  90                 NOP
008060A7   .  90                 NOP
008060A8   .  90                 NOP
008060A9   .  90                 NOP
008060AA   .  90                 NOP
008060AB   .  90                 NOP
008060AC   .  90                 NOP
008060AD   .  90                 NOP
008060AE   .  90                 NOP
008060AF   .  90                 NOP
008060B0   .  90                 NOP
008060B1   .  90                 NOP
008060B2   .  90                 NOP
008060B3   .  90                 NOP
008060B4   .  90                 NOP
008060B5   .  90                 NOP
008060B6   .  90                 NOP
008060B7      90                 NOP
008060B8      90                 NOP
008060B9      90                 NOP
008060BA      90                 NOP
008060BB      90                 NOP
008060BC  /$  8B85 48EEFFFF      MOV     EAX, DWORD PTR SS:[EBP-11B8]        
;  修改成计算jump偏移量的函数
008060C2  |.  8B0C85 18F28300    MOV     ECX, DWORD PTR DS:[EAX*4+83F218]
008060C9  |.  8B85 74EBFFFF      MOV     EAX, DWORD PTR SS:[EBP-148C]
008060CF  |.  33D2               XOR     EDX, EDX
008060D1  |.  BE 17000000        MOV     ESI, 17
008060D6  |.  F7F6               DIV     ESI
008060D8  |.  8B85 74EBFFFF      MOV     EAX, DWORD PTR SS:[EBP-148C]
008060DE  |.  8B0C81             MOV     ECX, DWORD PTR DS:[ECX+EAX*4]
008060E1  |.  338C95 70EEFFFF    XOR     ECX, DWORD PTR SS:[EBP+EDX*4-1190]  
;  计算偏移量
008060E8  |.  890D 308F8200      MOV     DWORD PTR DS:[828F30], ECX          
;  存放,便于使用。
008060EE  \.  C3                 RETN
008060EF   >  66:813D 308F8200 8>CMP     WORD PTR DS:[828F30], 0FF80         
;  jmp类型中的长跳转中的正反方向判断代码
008060F8   .  0F8C 87000000      JL      ezcddax.00806185
008060FE   .  66:833D 308F8200 7>CMP     WORD PTR DS:[828F30], 7F
00806106   .  7E 2B              JLE     SHORT ezcddax.00806133
00806108   .  EB 7B              JMP     SHORT ezcddax.00806185
0080610A      90                 NOP
0080610B      90                 NOP
0080610C      90                 NOP
0080610D      90                 NOP
0080610E      90                 NOP
0080610F      90                 NOP
00806110      90                 NOP
00806111      90                 NOP
00806112      90                 NOP
00806113      90                 NOP
00806114      90                 NOP
00806115      90                 NOP
00806116      90                 NOP
00806117      90                 NOP
00806118      90                 NOP
00806119   >  8B15 308F8200      MOV     EDX, DWORD PTR DS:[828F30]          
;  长跳转类型
0080611F   .  2B15 208F8200      SUB     EDX, DWORD PTR DS:[828F20]
00806125   .  8B85 34ECFFFF      MOV     EAX, DWORD PTR SS:[EBP-13CC]
0080612B   .  8950 01            MOV     DWORD PTR DS:[EAX+1], EDX           
;  写入偏移量的地址是CC地址+1,因为长跳转是用双字节表示的
0080612E   .  E9 86000000        JMP     ezcddax.008061B9
00806133   >  8B15 308F8200      MOV     EDX, DWORD PTR DS:[828F30]          
;  向上的jmp长跳转修复代码
00806139   .  2B15 208F8200      SUB     EDX, DWORD PTR DS:[828F20]
0080613F   .  8B85 34ECFFFF      MOV     EAX, DWORD PTR SS:[EBP-13CC]
00806145   .  4A                 DEC     EDX
00806146   .  8910               MOV     DWORD PTR DS:[EAX], EDX
00806148   .  EB 6F              JMP     SHORT ezcddax.008061B9
0080614A      90                 NOP
0080614B      90                 NOP
0080614C      90                 NOP
0080614D      90                 NOP
0080614E      90                 NOP
0080614F  /$  8B85 48EEFFFF      MOV     EAX, DWORD PTR SS:[EBP-11B8]        
;  把壳计算jump代码长度的一段修改成计算的函数
00806155  |.  8B0C85 D0F38300    MOV     ECX, DWORD PTR DS:[EAX*4+83F3D0]
0080615C  |.  8B95 74EBFFFF      MOV     EDX, DWORD PTR SS:[EBP-148C]
00806162  |.  33C0               XOR     EAX, EAX
00806164  |.  8A0411             MOV     AL, BYTE PTR DS:[ECX+EDX]
00806167  |.  A2 208F8200        MOV     BYTE PTR DS:[828F20], AL            
;  取得的值存放,以便调用
0080616C  \.  C3                 RETN
0080616D   >  90                 NOP
0080616E   .  8B15 308F8200      MOV     EDX, DWORD PTR DS:[828F30]          

 ;  取偏移量,这个偏移量是从CC的下一个字节开始的
00806174   .  2B15 208F8200      SUB     EDX, DWORD PTR DS:[828F20]          

 ;  偏移量-jump代码长度=实际偏移量
0080617A   .  8B85 34ECFFFF      MOV     EAX, DWORD PTR SS:[EBP-13CC]        
;  取CC发生时的下一字节地址
00806180   .  8810               MOV     BYTE PTR DS:[EAX], DL               
;  写入实际偏移量,注意是单字节
00806182   .  EB 35              JMP     SHORT ezcddax.008061B9

上一页  [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号