• 标 题: 新狐传真群发2.0注册算法分析
  • 作 者:lordor
  • 时 间:2003/06/29 06:05pm
  • 链 接:http://bbs.pediy.com

新狐传真群发2.0注册算法分析

对象:新狐传真群发2.0
作者:lordor[CCG][BCG][DFCG]
Mail:lordor@sina.com
QQ:88378557
目的:属技术交流,无其它目的,请不要任意散布或用用商业用途。初学破解,如有不对的地方欢迎批评指出。
工具:ollydbg1.09C,fi301,dede3.2

软件下载地址:http://www.8715.com

假设:
软件序列号码:424844352
登记注册码:87654321

一、使用dede查找核心模块:

使用dede打开程序,找到
speedbutton10click
在这里有注册信息,抄下第一句,为后面动态分析
004D1B04   55                     push    ebp

二、动态分析,了解注册过程

用ollydbg载入程序,在004D1B04下断,输入注册码,会断到这里

004D1B04  /.  55            PUSH EBP
004D1B05  |.  8BEC          MOV EBP,ESP
004D1B07  |.  83C4 E0       ADD ESP,-20
004D1B0A  |.  53            PUSH EBX
004D1B0B  |.  33C9          XOR ECX,ECX
004D1B0D  |.  894D E0       MOV DWORD PTR SS:[EBP-20],ECX
004D1B10  |.  894D F4       MOV DWORD PTR SS:[EBP-C],ECX
004D1B13  |.  8BD8          MOV EBX,EAX
004D1B15  |.  33C0          XOR EAX,EAX
004D1B17  |.  55            PUSH EBP
004D1B18  |.  68 201C4D00   PUSH faxsky.004D1C20
004D1B1D  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
004D1B20  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
004D1B23  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
004D1B26  |.  BA 341C4D00   MOV EDX,faxsky.004D1C34                  ;  ASCII "00000000"
004D1B2B  |.  E8 5C35F3FF   CALL faxsky.0040508C
004D1B30  |.  8D4D F4       LEA ECX,DWORD PTR SS:[EBP-C]
004D1B33  |.  BA 481C4D00   MOV EDX,faxsky.004D1C48
004D1B38  |.  B8 681C4D00   MOV EAX,faxsky.004D1C68
004D1B3D  |.  E8 C2CEF6FF   CALL faxsky.0043EA04                     ;  取得输入的注册码
004D1B42  |.  3C 01         CMP AL,1
004D1B44  |.  0F85 B8000000 JNZ faxsky.004D1C02                      ;  没输入则跳走
004D1B4A  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
004D1B4D  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  注册码
004D1B50  |.  E8 837BF3FF   CALL faxsky.004096D8
004D1B55  |.  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]
004D1B58  |.  E8 CB7EF3FF   CALL faxsky.00409A28                     ;  注册码转换为十六进制表示

,eax=05397FB1
004D1B5D  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX             ;  数05397FB1保存
004D1B60  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
004D1B63  |.  6A 00         PUSH 0
004D1B65  |.  6A 42         PUSH 42
004D1B67  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004D1B6A  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
004D1B6D  |.  E8 7A44F3FF   CALL faxsky.00405FEC                     ;  eax=05397FB1/42
004D1B72  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX             ;  eax保存
004D1B75  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX             ;  余数保存
004D1B78  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004D1B7B  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
004D1B7E  |.  2D 33590100   SUB EAX,15933                            ;  eax=eax-15933
004D1B83  |.  83DA 00       SBB EDX,0                                ;  sbb
004D1B86  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX             ;  保存eax
004D1B89  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX             ;  保存
004D1B8C  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
004D1B8F  |.  E8 2CE5FFFF   CALL faxsky.004D00C0                     ;  取cup日id,此为6b1
004D1B94  |.  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]
004D1B97  |.  8BC1          MOV EAX,ECX
004D1B99  |.  99            CDQ
004D1B9A  |.  3B55 FC       CMP EDX,DWORD PTR SS:[EBP-4]             ;  比较1,注册码必须被42(hex)

整除
004D1B9D  |.  75 4E         JNZ SHORT faxsky.004D1BED
004D1B9F  |.  3B45 F8       CMP EAX,DWORD PTR SS:[EBP-8]             ;  比较2,与cupid比较
004D1BA2  |.  75 49         JNZ SHORT faxsky.004D1BED
004D1BA4  |.  33D2          XOR EDX,EDX
004D1BA6  |.  8B83 88030000 MOV EAX,DWORD PTR DS:[EBX+388]
004D1BAC  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
004D1BAE  |.  FF51 64       CALL DWORD PTR DS:[ECX+64]
004D1BB1  |.  B2 01         MOV DL,1
004D1BB3  |.  8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
004D1BB9  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
004D1BBB  |.  FF51 64       CALL DWORD PTR DS:[ECX+64]
004D1BBE  |.  33D2          XOR EDX,EDX
004D1BC0  |.  8B83 94030000 MOV EAX,DWORD PTR DS:[EBX+394]
004D1BC6  |.  E8 9939F7FF   CALL faxsky.00445564
004D1BCB  |.  8B83 B0030000 MOV EAX,DWORD PTR DS:[EBX+3B0]
004D1BD1  |.  E8 E2F3FEFF   CALL faxsky.004C0FB8
004D1BD6  |.  6A 00         PUSH 0                                   ; /Arg1 = 00000000
004D1BD8  |.  66:8B0D 741C4>MOV CX,WORD PTR DS:[4D1C74]              ; |
004D1BDF  |.  B2 02         MOV DL,2                                 ; |
004D1BE1  |.  B8 801C4D00   MOV EAX,faxsky.004D1C80                  ; |
004D1BE6  |.  E8 FDCCF6FF   CALL faxsky.0043E8E8                     ; \成功
004D1BEB  |.  EB 15         JMP SHORT faxsky.004D1C02
004D1BED  |>  6A 00         PUSH 0                                   ; /Arg1 = 00000000
004D1BEF  |.  66:8B0D 741C4>MOV CX,WORD PTR DS:[4D1C74]              ; |
004D1BF6  |.  B2 01         MOV DL,1                                 ; |
004D1BF8  |.  B8 9C1C4D00   MOV EAX,faxsky.004D1C9C                  ; |
004D1BFD  |.  E8 E6CCF6FF   CALL faxsky.0043E8E8                     ; \出错框
004D1C02  |>  33C0          XOR EAX,EAX
004D1C04  |.  5A            POP EDX

反推注册码:取得cpuid=6b1(hex),加上15933(hex)得15FE4(hex),然后再乘42(hex),得5AB8C8,转换为十进制即为5945544

-------------------------------------

三、总结。
注册码是出来了,但还是晕倒,注册完后才发现软件是不完整的程序,不过可以学一下dede与od配合查找注册码的思路。

cracked by lordor
03.6.29