一个软件的MD5注册算法

004A6E99     .  E8 46270000  call <jmp.&MFC42.#3097>  OD中断在这里
004A6E9E     .  8B4C24 08    mov ecx,dword ptr ss:[esp+8]
004A6EA2     .  8379 F8 17   cmp dword ptr ds:[ecx-8],17   比较注册码是否等于17即23位
004A6EA6     .  75 24        jnz short NetWatch.004A6ECC   不对则出错
。。。。。。。。。。。。。。。。。。。。。。。。。
004A6EB6     .  E8 BD260000  call <jmp.&MFC42.#3098>
004A6EBB     .  8D4424 18    lea eax,dword ptr ss:[esp+18] 注册码入EAX
004A6EBF     .  50           push eax
004A6EC0     .  E8 2BEEFFFF  call NetWatch.004A5CF0    注册算法CALL,进入
004A6EC5     .  83C4 04      add esp,4
004A6EC8     .  85C0         test eax,eax
004A6ECA     .  75 1B        jnz short NetWatch.004A6EE7   不跳则出错
004A6ECC     >  68 00100000  push 1000
004A6ED1     .  68 105B4D00  push NetWatch.004D5B10
004A6ED6     .  68 70B64D00  push NetWatch.004DB670
004A6EDB     .  8BCE         mov ecx,esi
004A6EDD     .  E8 00260000  call <jmp.&MFC42.#4224>    出错信息

004A5CF0    /$Content$nbsp; 81EC 9C00000>sub esp,9C            进入后来到这里
004A5CF6    |.  83C9 FF      or ecx,FFFFFFFF
004A5CF9    |.  33C0         xor eax,eax
004A5CFB    |.  56           push esi
004A5CFC    |.  8BB424 A4000>mov esi,dword ptr ss:[esp+A4]
004A5D03    |.  57           push edi
004A5D04    |.  8BFE         mov edi,esi
004A5D06    |.  F2:AE        repne scas byte ptr es:[edi]
004A5D08    |.  F7D1         not ecx
004A5D0A    |.  49           dec ecx
004A5D0B    |.  83F9 17      cmp ecx,17
004A5D0E    |.  0F85 9201000>jnz NetWatch.004A5EA6  再次比较注册码的位数,不对则出错
004A5D14    |.  8A4E 05      mov cl,byte ptr ds:[esi+5]比较注册码第六位是否等于2D即“-”符
004A5D17    |.  B0 2D        mov al,2D
004A5D19    |.  3AC8         cmp cl,al
004A5D1B    |.  0F85 8501000>jnz NetWatch.004A5EA6      不对则出错
004A5D21    |.  3846 0B      cmp byte ptr ds:[esi+B],al 比较注册码第12位是否等于2D即“-”符
004A5D24    |.  0F85 7C01000>jnz NetWatch.004A5EA6       不对则出错
004A5D2A    |.  3846 11      cmp byte ptr ds:[esi+11],al 比较注册码第18位是否等于2D即“-”符
004A5D2D    |.  0F85 7301000>jnz NetWatch.004A5EA6       不对则出错
004A5D33    |.  B9 08000000  mov ecx,8
004A5D38    |.  33C0         xor eax,eax
004A5D3A    |.  8D7C24 2C    lea edi,dword ptr ss:[esp+2C]
004A5D3E    |.  6A 05        push 5                                ; /maxlen = 5
004A5D40    |.  F3:AB        rep stos dword ptr es:[edi]           ; |
004A5D42    |.  8D4424 30    lea eax,dword ptr ss:[esp+30]         ; |
004A5D46    |.  56           push esi                              ; |src
004A5D47    |.  50           push eax                              ; |dest
004A5D48    |.  FF15 B85C4B0>call dword ptr ds:[<&MSVCRT.strncpy>] ; /strncpy
004A5D4E    |.  8B3D 385C4B0>mov edi,dword ptr ds:[<&MSVCRT.strnca>;  msvcrt.strncat
004A5D54    |.  8D4E 06      lea ecx,dword ptr ds:[esi+6]
004A5D57    |.  6A 05        push 5                                ; /maxlen = 5
004A5D59    |.  8D5424 3C    lea edx,dword ptr ss:[esp+3C]         ; |
004A5D5D    |.  51           push ecx                              ; |src
004A5D5E    |.  52           push edx                              ; |dest
004A5D5F    |.  FFD7         call edi                              ; /strncat
004A5D61    |.  8D46 0C      lea eax,dword ptr ds:[esi+C]
004A5D64    |.  6A 05        push 5
004A5D66    |.  8D4C24 48    lea ecx,dword ptr ss:[esp+48]
004A5D6A    |.  50           push eax
004A5D6B    |.  51           push ecx
004A5D6C    |.  FFD7         call edi
004A5D6E    |.  83C6 12      add esi,12
004A5D71    |.  6A 05        push 5
004A5D73    |.  8D5424 54    lea edx,dword ptr ss:[esp+54]
004A5D77    |.  56           push esi
004A5D78    |.  52           push edx
004A5D79    |.  FFD7         call edi              以上是把注册码的“-”符 去掉后连起来
004A5D7B    |.  83C4 30      add esp,30
004A5D7E    |.  33C0         xor eax,eax
004A5D80    |>  8A4C04 2C    /mov cl,byte ptr ss:[esp+eax+2C]
004A5D84    |.  80F9 41      |cmp cl,41
004A5D87    |.  0F8C 1901000>|jl NetWatch.004A5EA6
004A5D8D    |.  80F9 5A      |cmp cl,5A
004A5D90    |.  0F8F 1001000>|jg NetWatch.004A5EA6
004A5D96    |.  40           |inc eax
004A5D97    |.  83F8 14      |cmp eax,14
004A5D9A    |.^ 7C E4        /jl short NetWatch.004A5D80   查找字符串是否是A~Z的字母,否则出错
004A5D9C    |.  8A4424 2C    mov al,byte ptr ss:[esp+2C]   第一位注册码入AL  记为N1
004A5DA0    |.  2C 48        sub al,48 
004A5DA2    |.  3C 01        cmp al,1
004A5DA4    |.  0F85 FC00000>jnz NetWatch.004A5EA6   比较第一位注册码减48是否等于1,不等则出错
004A5DAA    |.  66:0FBE4424 >movsx ax,byte ptr ss:[esp+2D]第2位注册码入AX 记为N2
004A5DB0    |.  66:0FBE5424 >movsx dx,byte ptr ss:[esp+2E]第3位注册码入DX 记为N3
004A5DB6    |.  8D0C80       lea ecx,dword ptr ds:[eax+eax*4] N2+N2*4 结果记为R1
004A5DB9    |.  8D844A 92FCF>lea eax,dword ptr ds:[edx+ecx*2-36E]
004A5DC0    |.  66:3D 0200   cmp ax,2
004A5DC4    |.  0F85 DC00000>jnz NetWatch.004A5EA6   比较 N3+R1*2-36E=2  不等于2则出错
004A5DCA    |.  8D4C24 4C    lea ecx,dword ptr ss:[esp+4C]
004A5DCE    |.  51           push ecx
004A5DCF    |.  E8 7C29FCFF  call NetWatch.00468750  进入

00468750    /$Content$nbsp; 8B4424 04    mov eax,dword ptr ss:[esp+4]   进入后来到这里
00468754    |.  33C9         xor ecx,ecx
00468756    |.  8948 14      mov dword ptr ds:[eax+14],ecx
00468759    |.  8948 10      mov dword ptr ds:[eax+10],ecx
0046875C    |.  C700 0123456>mov dword ptr ds:[eax],67452301
00468762    |.  C740 04 89AB>mov dword ptr ds:[eax+4],EFCDAB89
00468769    |.  C740 08 FEDC>mov dword ptr ds:[eax+8],98BADCFE
00468770    |.  C740 0C 7654>mov dword ptr ds:[eax+C],10325476   呵呵,这不会是MD5的四个变量吧br>00468777    /.  C3           retn                               返回

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2008年8月9日
下一篇 2008年8月10日

相关推荐

一个软件的MD5注册算法
安全中国 www.anqn.com 更新时间:2007-9-27 20:58:00
热 点: