Mail:lordor@sina.com 目的:属技术交流,无其它目的,请不要任意散布或用用商业用途。初学破解,如有不对的地方欢迎批评指出。 工具:softice,w32Dasm,ollydbg 试炼码: 识别号:HHID558109930 注册号:654321
写教程真的写上瘾,再来篇。
004ABCAC |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 004ABCAF |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 004ABCB2 |. 8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300] 004ABCB8 |. E8 636BF9FF CALL unpacked.00442820 ; 取注册号unpa 004ABCBD |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; 注册号入eaxDWOR 004ABCC0 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 004ABCC3 |. E8 3CD4F5FF CALL unpacked.00409104 ; 复制注册号到edx的地址.00409104 004ABCC8 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 注册号入eaxDWOR 004ABCCB |. 50 PUSH EAX 004ABCCC |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 004ABCCF |. 8B83 F8020000 MOV EAX,DWORD PTR DS:[EBX+2F8] 004ABCD5 |. E8 466BF9FF CALL unpacked.00442820 ; 取识别号unpa 004ABCDA |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; 识别号入eaxDWOR 004ABCDD |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C] 004ABCE0 |. E8 9BF9FFFF CALL unpacked.004AB680 ; 产生注册真码,进入 004ABCE5 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] ; 真码入edx,DW 004ABCE8 |. 58 POP EAX ; 出输入注册号到eax 004ABCE9 |. E8 8690F5FF CALL unpacked.00404D74 ; 关键比较unpa 004ABCEE |. 0F85 F4000000 JNZ unpacked.004ABDE8 ; 不等则跳到出错cked.00 004ABCF4 |. 6A 40 PUSH 40 ; /style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL 004ABCF6 |. 68 50BE4A00 PUSH unpacked.004ABE50 ; |Title = "黄河英语通"4ABE5 004ABCFB |. 68 5CBE4A00 PUSH unpacked.004ABE5C ; |Text = "注册成功!"04ABE 004ABD00 |. A1 70F44E00 MOV EAX,DWORD PTR DS:[4EF470] ; | 004ABD05 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] ; | 004ABD07 |. 8B40 30 MOV EAX,DWORD PTR DS:[EAX+30] ; | 004ABD0A |. 50 PUSH EAX ; |hOwner 004ABD0B |. E8 80BDF5FF CALL ; \MessageBoxA 004ABD10 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18] 004ABD13 |. 8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
-------------------------------- 产生真码call
004AB6A3 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 004AB6A6 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 004AB6A9 |. 8BC7 MOV EAX,EDI 004AB6AB |. E8 B892F5FF CALL unpacked.00404968 004AB6B0 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 004AB6B3 |. BA 9CB74A00 MOV EDX,unpacked.004AB79C 004AB6B8 |. E8 7B95F5FF CALL unpacked.00404C38 ; 把识别号保存到地址中 004AB6BD |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 识别号所在地址 004AB6C0 |. 0FB630 MOVZX ESI,BYTE PTR DS:[EAX] ; 识别号第一位十六进制值入esi 004AB6C3 |. 66:6BC6 64 IMUL AX,SI,64 ; ax=si*64 004AB6C7 |. 66:8945 F8 MOV WORD PTR SS:[EBP-8],AX ; 保存ax到[ebp-8] 004AB6CB |. 8BC6 MOV EAX,ESI ; eax=esi 004AB6CD |. C1E0 09 SHL EAX,9 ; 左移9位 004AB6D0 |. 66:8945 F6 MOV WORD PTR SS:[EBP-A],AX ; ax保存[ebp-a] 004AB6D4 |. B3 01 MOV BL,1 ; 计数器初始化为1 004AB6D6 |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4] ; 识别号所在地址,入eax 004AB6D9 |. E8 5295F5FF |CALL unpacked.00404C30 ; 取长度 004AB6DE |. 50 |PUSH EAX 004AB6DF |. 33C0 |XOR EAX,EAX 004AB6E1 |. 8AC3 |MOV AL,BL ; 计数器入al 004AB6E3 |. 5A |POP EDX 004AB6E4 |. 8BCA |MOV ECX,EDX ; 识别号长度入ecx 004AB6E6 |. 99 |CDQ 004AB6E7 |. F7F9 |IDIV ECX ; 此即为计数器取识别号长度的模数 004AB6E9 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] ; 识别号所在地址,入eax 004AB6EC |. 8A0410 |MOV AL,BYTE PTR DS:[EAX+EDX] ; 取第bl(经过上面模数运算)位识别号。 004AB6EF |. 0FB7D6 |MOVZX EDX,SI ; edx=si 004AB6F2 |. C1EA 08 |SHR EDX,8 ; edx 右移8位 004AB6F5 |. 32C2 |XOR AL,DL ; al与dl 异或 004AB6F7 |. 33D2 |XOR EDX,EDX 004AB6F9 |. 8AD3 |MOV DL,BL ; 计数器入dl 004AB6FB |. B9 A8B74A00 |MOV ECX,unpacked.004AB7A8 ; ASCII "Qwert yuiop asdfg hjkl zxcvbnm" 004AB700 |. 324411 FF |XOR AL,BYTE PTR DS:[ECX+EDX-1] ; 取第bl位字符串 004AB704 |. 50 |PUSH EAX 004AB705 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] 004AB708 |. E8 2395F5FF |CALL unpacked.00404C30 ; 取识别号长度 004AB70D |. 5A |POP EDX ; 异或值入edx 004AB70E |. 02D0 |ADD DL,AL ; 与位数相加 004AB710 |. 8855 FB |MOV BYTE PTR SS:[EBP-5],DL ; 保存到[ebp-5] 004AB713 |. 33C0 |XOR EAX,EAX 004AB715 |. 8A45 FB |MOV AL,BYTE PTR SS:[EBP-5] 004AB718 |. B9 23000000 |MOV ECX,23 ; 23入ecx 004AB71D |. 99 |CDQ 004AB71E |. F7F9 |IDIV ECX 004AB720 |. 42 |INC EDX ; 余数加1 004AB721 |. 8855 FB |MOV BYTE PTR SS:[EBP-5],DL ; 保存到[ebp-5] 004AB724 |. 8D45 F0 |LEA EAX,DWORD PTR SS:[EBP-10] 004AB727 |. 33D2 |XOR EDX,EDX 004AB729 |. 8A55 FB |MOV DL,BYTE PTR SS:[EBP-5] 004AB72C |. B9 D0B74A00 |MOV ECX,unpacked.004AB7D0 ; ASCII "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789" 004AB731 |. 8A5411 FF |MOV DL,BYTE PTR DS:[ECX+EDX-1] ; 查密码表,取第dl位 004AB735 |. E8 0E94F5FF |CALL unpacked.00404B48 ; 清空密码表 004AB73A |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10] ; 取得的一位十六进制值入edx 004AB73D |. 8BC7 |MOV EAX,EDI 004AB73F |. E8 F494F5FF |CALL unpacked.00404C38 ; 保存 004AB744 |. 33C0 |XOR EAX,EAX 004AB746 |. 8AC3 |MOV AL,BL 004AB748 |. 8B17 |MOV EDX,DWORD PTR DS:[EDI] 004AB74A |. 0FB64402 FF |MOVZX EAX,BYTE PTR DS:[EDX+EAX-1] ; 取得的一位十六进制入eax 004AB74F |. 66:03F0 |ADD SI,AX ; 与识别号第bl位相加 004AB752 |. 66:0FAF75 F8 |IMUL SI,WORD PTR SS:[EBP-8] ; 再乘以[ebp-8]处的值 004AB757 |. 66:0375 F6 |ADD SI,WORD PTR SS:[EBP-A] ; 再加上[ebp-a]处值 004AB75B |. 43 |INC EBX ; ebx加1 004AB75C |. 80FB 1F |CMP BL,1F ; 与31是否相等 004AB75F |.^ 0F85 71FFFFFF \JNZ unpacked.004AB6D6 004AB765 |. 33C0 XOR EAX,EAX 004AB767 |. 5A POP EDX 004AB768 |. 59 POP ECX 004AB769 |. 59 POP ECX 004AB76A |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 004AB76D |. 68 8AB74A00 PUSH unpacked.004AB78A 004AB772 |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 004AB775 |. E8 EE91F5FF CALL unpacked.00404968 ------------------------------------
总结:
字符串s1=Qwert yuiop asdfg hjkl zxcvbnm 字符串s2=ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789 取第1位识别号十六进制48(H),乘64(H)得数A=1c20(H),左移9位得数B=9000(H)。然后开始进行31次循环,得到30位注册号:
int Y=第1位识别号十六进制48(H); for(int i=1;i<31;i++) { 取识别号的长度len; 求i%len的模数X; 取第X位的识别号十六进制值; Y右移8位得数C; 第X位的识别号十六进制值与C异或得数D; 取字符串s1第i位十六进制值与第X位的识别号十六进制值异或,得E值; E值与识别号的长度len相加,得数F; 求F%35模数,模数加1,得数G; 取字符串s2第G位十六进制值,此即为第i位注册号; Y=Y+字符串s2第G位十六进制值; Y=Y*数A; Y=Y+B; }
识别号:HHID558109930 注册号:E5W799BWESP8CFFF7GKDH4B6JW3L8L |
|
查看所有0条评论>>