| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 编程技术 >> 黑客编程 >> 文章正文 用户登录 新用户注册
  黑客反汇编高速入门3          【字体:
黑客反汇编高速入门3
作者:哽咽    文章来源:CnXHacker.Net    点击数:    更新时间:2007-6-2    
;  jle  $L132346
  00028 8b 74 24 1c  mov  esi, DWORD PTR _pSrc$[esp+20]
$L129563:

; 82   :     {
; 83   :         // 取4个字节
; 84   :         c1 = DeBase64Tab[*pSrc++];

  0002c 0f be 06  movsx  eax, BYTE PTR [esi]
  0002f 46   inc  esi
  00030 8a 90 00 00 00
 00   mov  dl, BYTE PTR _DeBase64Tab[eax]

; 85   :         c2 = DeBase64Tab[*pSrc++];

  00036 0f be 06  movsx  eax, BYTE PTR [esi]

; 86   :   lc1 = *pSrc;

  00039 8a 5e 01  mov  bl, BYTE PTR [esi+1]
  0003c 46   inc  esi
  0003d 88 5c 24 13  mov  BYTE PTR _lc1$[esp+24], bl

; 87   :         c3 = DeBase64Tab[*pSrc++];

  00041 46   inc  esi
  00042 0f be db  movsx  ebx, bl
  00045 8a 80 00 00 00
 00   mov  al, BYTE PTR _DeBase64Tab[eax]

; 88   :   lc2 = *pSrc;
; 89   :   c4 = DeBase64Tab[*pSrc++];

  0004b 46   inc  esi
  0004c 8a 9b 00 00 00
 00   mov  bl, BYTE PTR _DeBase64Tab[ebx]
  00052 88 5c 24 20  mov  BYTE PTR _c3$[esp+20], bl
  00056 8a 5e ff  mov  bl, BYTE PTR [esi-1]
  00059 88 5c 24 24  mov  BYTE PTR 16+[esp+20], bl
  0005d 0f be db  movsx  ebx, bl
  00060 8a 9b 00 00 00
 00   mov  bl, BYTE PTR _DeBase64Tab[ebx]
  00066 88 5c 24 1c  mov  BYTE PTR _c4$[esp+20], bl

; 90   : 
; 91   :   if (lc2 == '=')

  0006a 8a 5c 24 24  mov  bl, BYTE PTR 16+[esp+20]
  0006e 80 fb 3d  cmp  bl, 61   ; 0000003dH
  00071 74 43   je  SHORT $L132344

; 106  :    }
; 107  :    break;
; 108  :   }
; 109  :
; 110  :         // 解码成3个字符
; 111  :   *pDst++ = (c1 << 2) | (c2 >> 4);

  00073 8a d8   mov  bl, al

; 112  :   *pDst++ = (c2 << 4) | (c3 >> 2);
; 113  :   *pDst++ = (c3 << 6) | c4;
; 114  :
; 115  :         nDstLen += 3;

  00075 83 c7 03  add  edi, 3
  00078 c0 eb 04  shr  bl, 4
  0007b c0 e2 02  shl  dl, 2
  0007e 0a da   or  bl, dl
  00080 8a 54 24 20  mov  dl, BYTE PTR _c3$[esp+20]
  00084 88 19   mov  BYTE PTR [ecx], bl
  00086 8a da   mov  bl, dl
  00088 c0 eb 02  shr  bl, 2
  0008b c0 e0 04  shl  al, 4
  0008e 41   inc  ecx
  0008f 0a d8   or  bl, al
  00091 8b 44 24 14  mov  eax, DWORD PTR _nDiv$[esp+24]
  00095 88 19   mov  BYTE PTR [ecx], bl
  00097 8a 5c 24 1c  mov  bl, BYTE PTR _c4$[esp+20]
  0009b c0 e2 06  shl  dl, 6
  0009e 41   inc  ecx
  0009f 0a d3   or  dl, bl
  000a1 88 11   mov  BYTE PTR [ecx], dl
  000a3 41   inc  ecx
  000a4 45   inc  ebp
  000a5 3b e8   cmp  ebp, eax
  000a7 7c 83   jl  SHORT $L129563

; 116  :      }
; 117  : 
; 118  :     // 输出加个结束符
; 119  :     *pDst = '\0';
; 120  : 
; 121  :     return nDstLen;

  000a9 8b c7   mov  eax, edi
  000ab 5f   pop  edi
  000ac 5e   pop  esi
  000ad 5d   pop  ebp
  000ae c6 01 00  mov  BYTE PTR [ecx], 0
  000b1 5b   pop  ebx

; 122  : }

  000b2 83 c4 08  add  esp, 8
  000b5 c3   ret  0
$L132344:

; 92   :   {
; 93   :    if (lc1 == '=')

  000b6 80 7c 24 13 3d  cmp  BYTE PTR _lc1$[esp+24], 61 ; 0000003dH
  000bb 75 19   jne  SHORT $L129567

; 94   :    { //原文中除3后余数是1
; 95   :     c3 = 0;
; 96   :     c4 = 0;
; 97   :     *pDst++ = (c1 << 2) | (c2 >> 4);

  000bd c0 e8 04  shr  al, 4
  000c0 c0 e2 02  shl  dl, 2
  000c3 0a c2   or  al, dl
  000c5 88 01   mov  BYTE PTR [ecx], al
  000c7 41   inc  ecx

; 98   :     nDstLen += 1;

  000c8 47   inc  edi

; 116  :      }
; 117  : 
; 118  :     // 输出加个结束符
; 119  :     *pDst = '\0';
; 120  : 
; 121  :     return nDstLen;

  000c9 8b c7   mov  eax, edi
  000cb 5f   pop  edi
  000cc 5e   pop  esi
  000cd 5d   pop  ebp
  000ce c6 01 00  mov  BYTE PTR [ecx], 0
  000d1 5b   pop  ebx

; 122  : }

  000d2 83 c4 08  add  esp, 8
  000d5 c3   ret  0
$L129567:

; 99   :    }
; 100  :    else
; 101  :    { //原文中除3后余数是2
; 102  :     c4 = 0;
; 103  :     *pDst++ = (c1 << 2) | (c2 >> 4);

  000d6 8a d8   mov  bl, al
  000d8 c0 eb 04  shr  bl, 4
  000db c0 e2 02  shl  dl, 2
  000de 0a da   or  bl, dl

; 104  :     *pDst++ = (c2 << 4) | (c3 >> 2);

  000e0 8a 54 24 20  mov  dl, BYTE PTR _c3$[esp+20]
  000e4 88 19   mov  BYTE PTR [ecx], bl
  000e6 41   inc  ecx
  000e7 c0 ea 02  shr  dl, 2
  000ea c0 e0 04  shl  al, 4
  000ed 0a d0   or  dl, al
  000ef 88 11   mov  BYTE PTR [ecx], dl
  000f1 41   inc  ecx

; 105  :     nDstLen += 2;

  000f2 83 c7 02  add  edi, 2
$L132346:

; 116  :      }
; 117  : 
; 118  :     // 输出加个结束符
; 119  :     *pDst = '\0';
; 120  : 
; 121  :     return nDstLen;

  000f5 8b c7   mov  eax, edi
  000f7 5f   pop  edi
  000f8 5e   pop  esi
  000f9 5d   pop  ebp
  000fa c6 01 00  mov  BYTE PTR [ecx], 0
  000fd 5b   pop  ebx

; 122  : }

  000fe 83 c4 08  add  esp, 8
  00101 c3   ret  0
?DecodeBase64@@YAHPBDPAEH@Z ENDP   ; DecodeBase64
_TEXT ENDS
_DATA SEGMENT
COMM ??_B?1???id@?$ctype@G@std@@$D@@9@51:BYTE       ; ??_B?1???id@?$ctype@G@std@@$D@@9@51
_DATA ENDS
; COMDAT _$E383
_TEXT SEGMENT
_$E383 PROC NEAR     ; COMDAT
  00000 8a 0d 00 00 00
 00   mov  cl, BYTE PTR ??_B?1???id@?$ctype@G@std@@$D@@9@51 ; ??_B?1???id@?$ctype@G@std@@$D@@9@51
  00006 b0 01   mov  al, 1
  00008 84 c8   test  cl, al
  0000a 75 08   jne  SHORT $L132352
  0000c 0a c8   or  cl, al
  0000e 88 0d 00 00 00
 00   mov  BYTE PTR ??_B?1???id@?$ctype@G@std@@$D@@9@51, cl ; ??_B?1???id@?$ctype@G@std@@$D@@9@51
$L132352:
  00014 e9 00 00 00 00  jmp  _$E382
_$E383 ENDP
_TEXT ENDS
PUBLIC ?id@?$ctype@G@std@@$E    ; std::ctype<unsigned short>::id
EXTRN _atexit:NEAR
; COMDAT _$E382
_TEXT SEGMENT
_$E382 PROC NEAR     ; COMDAT

; 467  :                 {_Ctype = _Lobj._Getctype(); }

  00000 68 00 00 00 00  push  OFFSET FLAT:?id@?$ctype@G@std@@$E ; std::ctype<unsigned short>::id
  00005 e8 00 00 00 00  call  _atexit
  0000a 59   pop 

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    美国最大黑客盗窃案 美国密情
    微软推新计划打击黑客帮助安
    无ARP欺骗的嗅探技术
    赛门铁克:谨防黑客借奥运发
    瑞星公司07月03日发布 每日计
    黑客入侵花旗银行ATM 窃取用
    XSS漏洞另一个攻击趋势
    “伪颗粒”变种后台秘密监视
    灰鸽子变种NH远程控制用户偷
    06月27日病毒播报
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.