【软件名称】《加密与解密》随书光盘中的CrackMe中的GC Crackme 8
【下载地址】
【应用平台】Win2000
【软件大小】127 KB
【软件限制】Name/Company/Serial/Code
【破解声明】发表此篇破文只是为了给我这样的菜鸟详细说明利用OD下内存断点的方法,我写这破文花了一天的时间很不容易,希望给菜鸟一些帮助
【破解工具】OllyDbg
【软件简介】
========================================================================================
【分析过程】1 用PEID查看,发现是UPX 0.89.6 - 1.02 / 1.05 - 1.22 -> Markus & Lazlo加壳,用OD很快脱壳了。
再用PEID查看,发现是DELPHI编写的程序,心中暗喜,DEDE利器可以派上用场了。
遗憾的是用DEDE打开,Procedure页中什么也看不见,这样我就不能找到断点了。
用OD打开,有一个入口点警告,发现脱壳后的程序仍然是经过压缩的,作为菜鸟,上来当然是搜索字符串,很失望,没有有用的东西了。然后,想利用GetWindowTextA函数下断,程序根本都不中断,这下,我就不知道该怎么办了,我是菜鸟啊!
2 我看了下roy给的tutorial,发现‘try to bpx getdlgitemtexta and getwindowtexta. it doesn' t works. try to bpx hmemcpy.it works.’,OH,My GOD! 我的是Win2000啊,bpx hmemcpy不行啊.
这时,我想起‘看雪论坛精华6’有篇文章,ollydbg破解教学之--------万能断点篇 ,我按照其方法,
‘载入程序选OD菜单栏上的插件-----命令行(快捷键是ALT+F1), 在弹出的窗口中输入万能断点命令:bpx hmemcpy,按ENTER键,结果又出现一个对话框: 在这个框里右键单击,出现一个对话框,选中在每个命令中设置断点(热键是S),单击,你看每一行 都变成了红色吧,这表示全部设下断点了,后面的过程很烦燥,你要一边按F9,边按F2把一些无用的断点去掉,有一点耐心吧, 当然也可以不这样做,但遇到断点跳不过的时候,你就得按F2把这个断点去掉. ’结果,按照其办法,F9运行到后来,弹出‘Error'对话框,Runtime error 216 at 00002AE4’。
3 办法都试了,看来只能用内存断点试一下了。下面详细介绍利用OD下内存断点破解全过程,希望将我的思路写出来,
一是我自己总结,二是和我这样的菜鸟共同学习。
输入以下信息
name: hai
org: dahai
sn: 123
code: 456
双击“Check”按钮,(说明,单击不行,单击后在内存中找不到用户名,双击后能找到用户名称了。必须双击)
ALT+M,然后在CODE段,搜索内存"hai",发现
00D18770 68 61 69 00 54 E4 42 00 54 E4 42 00 88 38 00 00 hai.T渎.T渎.?..
在00D18770 单元处的"68"上右键,下内存访问断点.然后回到应用程序,双击"Check"按钮,中断在下列地址。
77DFC853 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR >
77DFC855 E8 56FCFFFF CALL USER32.77DFC4B0
77DFC85A 5E POP ESI
77DFC85B 5F POP EDI
77DFC85C 8BC3 MOV EAX,EBX
77DFC85E 5B POP EBX
77DFC85F 5D POP EBP
77DFC860 C2 1000 RETN 10
一直按F8,直到下列代码:
0042BD11 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0042BD14 E8 A77AFDFF CALL crackme8.004037C0
0042BD19 83F8 05 CMP EAX,5 ; 用户名长度必须大于等于5
0042BD1C 7D 09 JGE SHORT crackme8.0042BD27
0042BD1E C605 20E74200 0>MOV BYTE PTR DS:[42E720],1 ; 42E720代表用户名是否合法,0为合法,1为非法
0042BD25 EB 07 JMP SHORT crackme8.0042BD2E
0042BD27 C605 20E74200 0>MOV BYTE PTR DS:[42E720],0
0042BD2E 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BD31 A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BD36 8B80 F0010000 MOV EAX,DWORD PTR DS:[EAX+1F0]
0042BD3C E8 67E0FEFF CALL crackme8.00419DA8
0042BD41 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; 单位不能为空
0042BD45 75 09 JNZ SHORT crackme8.0042BD50
0042BD47 C605 21E74200 0>MOV BYTE PTR DS:[42E721],1 ; 42E720代表用户名是否合法,0为合法,1为非法
0042BD4E EB 07 JMP SHORT crackme8.0042BD57
0042BD50 C605 21E74200 0>MOV BYTE PTR DS:[42E721],0
0042BD57 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BD5A A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BD5F 8B80 F4010000 MOV EAX,DWORD PTR DS:[EAX+1F4]
0042BD65 E8 3EE0FEFF CALL crackme8.00419DA8
0042BD6A 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; Serial不能为空
0042BD6E 75 09 JNZ SHORT crackme8.0042BD79
0042BD70 C605 22E74200 0>MOV BYTE PTR DS:[42E722],1 ; 42E720代表用户名是否合法,0为合法,1为非法
0042BD77 EB 07 JMP SHORT crackme8.0042BD80
0042BD79 C605 22E74200 0>MOV BYTE PTR DS:[42E722],0
0042BD80 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BD83 A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BD88 8B80 F8010000 MOV EAX,DWORD PTR DS:[EAX+1F8]
0042BD8E E8 15E0FEFF CALL crackme8.00419DA8
0042BD93 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; Code不能为空
0042BD97 75 09 JNZ SHORT crackme8.0042BDA2
0042BD99 C605 23E74200 0>MOV BYTE PTR DS:[42E723],1 ; 42E720代表用户名是否合法,0为合法,1为非法
0042BDA0 EB 07 JMP SHORT crackme8.0042BDA9
0042BDA2 C605 23E74200 0>MOV BYTE PTR DS:[42E723],0
0042BDA9 33C0 XOR EAX,EAX
0042BDAB 5A POP EDX
0042BDAC 59 POP ECX
0042BDAD 59 POP ECX
0042BDAE 64:8910 MOV DWORD PTR FS:[EAX],EDX
0042BDB1 68 CBBD4200 PUSH crackme8.0042BDCB
0042BDB6 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
0042BDB9 BA 02000000 MOV EDX,2
0042BDBE E8 A577FDFF CALL crackme8.00403568
0042BDC3 C3 RETN
RETN之后到达:
0042BEF4 803D 20E74200 0>CMP BYTE PTR DS:[42E720],0 ; 判断用户名称是否合法
0042BEFB 0F85 C5000000 JNZ crackme8.0042BFC6
0042BF01 803D 21E74200 0>CMP BYTE PTR DS:[42E721],0 ; 判断单位是否合法
0042BF08 0F85 B8000000 JNZ crackme8.0042BFC6
0042BF0E 803D 22E74200 0>CMP BYTE PTR DS:[42E722],0 ; 判断Serial是否合法
0042BF15 0F85 AB000000 JNZ crackme8.0042BFC6
0042BF1B 803D 23E74200 0>CMP BYTE PTR DS:[42E723],0 ; 判断Code是否合法
0042BF22 0F85 9E000000 JNZ crackme8.0042BFC6
0042BF28 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BF2B 8B83 EC010000 MOV EAX,DWORD PTR DS:[EBX+1EC]
跟踪发现,用户名必须大于等于5个字符,单位,注册码和Code不能为空,重新输入:
name: laowanghai
org: dahai
sn: 123
code: 456
双击“Check”按钮,(说明,单击不行,单击后在内存中找不到用户名,双击后能找到用户名称了。必须双击)
ALT+M,然后在CODE段,搜索"laowanghai"(注意“整个段块”不要选中),
在弹出的转存窗口中可以看到下面的内容:
00D18760 6C 61 6F 77 61 6E 67 68 61 69 00 00 54 E4 42 00 laowanghai..T渎.
在00D18760单元处的"6C"上右键,下内存访问断点.然后回到应用程序,双击"Check"按钮,中断在下列地址。
004038F9 8B0E MOV ECX,DWORD PTR DS:[ESI]
只管F8,一直到RETN,程序经过下列代码,
004038FB 8B1F MOV EBX,DWORD PTR DS:[EDI]
004038FD 39D9 CMP ECX,EBX
004038FF 75 58 JNZ SHORT crackme8.00403959
00403901 4A DEC EDX
00403902 74 15 JE SHORT crackme8.00403919
00403904 8B4E 04 MOV ECX,DWORD PTR DS:[ESI+4]
00403907 8B5F 04 MOV EBX,DWORD PTR DS:[EDI+4]
0040390A 39D9 CMP ECX,EBX
0040390C 75 4B JNZ SHORT crackme8.00403959
0040390E 83C6 08 ADD ESI,8
00403911 83C7 08 ADD EDI,8
00403914 4A DEC EDX
00403915 ^ 75 E2 JNZ SHORT crackme8.004038F9
00403917 EB 06 JMP SHORT crackme8.0040391F
00403919 83C6 04 ADD ESI,4
0040391C 83C7 04 ADD EDI,4
0040391F 5A POP EDX
00403920 83E2 03 AND EDX,3
00403923 74 22 JE SHORT crackme8.00403947
00403925 8B0E MOV ECX,DWORD PTR DS:[ESI]
00403927 8B1F MOV EBX,DWORD PTR DS:[EDI]
00403929 38D9 CMP CL,BL
0040392B 75 41 JNZ SHORT crackme8.0040396E
0040392D 4A DEC EDX
0040392E 74 17 JE SHORT crackme8.00403947
00403930 38FD CMP CH,BH
00403932 75 3A JNZ SHORT crackme8.0040396E
00403934 4A DEC EDX
00403935 74 10 JE SHORT crackme8.00403947
00403937 81E3 0000FF00 AND EBX,0FF0000
0040393D 81E1 0000FF00 AND ECX,0FF0000
00403943 39D9 CMP ECX,EBX
00403945 75 27 JNZ SHORT crackme8.0040396E
00403947 01C0 ADD EAX,EAX
00403949 EB 23 JMP SHORT crackme8.0040396E
0040394B 8B57 FC MOV EDX,DWORD PTR DS:[EDI-4]
0040394E 29D0 SUB EAX,EDX
00403950 EB 1C JMP SHORT crackme8.0040396E
00403952 8B46 FC MOV EAX,DWORD PTR DS:[ESI-4]
00403955 29D0 SUB EAX,EDX
00403957 EB 15 JMP SHORT crackme8.0040396E
00403959 5A POP EDX
0040395A 38D9 CMP CL,BL
0040395C 75 10 JNZ SHORT crackme8.0040396E
0040395E 38FD CMP CH,BH
00403960 75 0C JNZ SHORT crackme8.0040396E
00403962 C1E9 10 SHR ECX,10
00403965 C1EB 10 SHR EBX,10
00403968 38D9 CMP CL,BL
0040396A 75 02 JNZ SHORT crackme8.0040396E
0040396C 38FD CMP CH,BH
0040396E 5F POP EDI
0040396F 5E POP ESI
00403970 5B POP EBX
00403971 C3 RETN
程序运行到此处
00419BD4 /75 1E JNZ SHORT crackme8.00419BF4
只管F8,一直到RETN,程序经过下列代码,
00419BD6 8B77 04 MOV ESI,DWORD PTR DS:[EDI+4]
00419BD9 85F6 TEST ESI,ESI
00419BDB 74 1B JE SHORT crackme8.00419BF8
00419BDD 8BC6 MOV EAX,ESI
00419BDF 8B15 E87D4100 MOV EDX,DWORD PTR DS:[417DE8] ; crackme8.00417E28
00419BE5 E8 568FFEFF CALL crackme8.00402B40
00419BEA 84C0 TEST AL,AL
00419BEC 74 0A JE SHORT crackme8.00419BF8
00419BEE F646 20 01 TEST BYTE PTR DS:[ESI+20],1
00419BF2 74 04 JE SHORT crackme8.00419BF8
00419BF4 33DB XOR EBX,EBX
00419BF6 EB 02 JMP SHORT crackme8.00419BFA
00419BF8 B3 01 MOV BL,1
00419BFA 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00419BFD 8BC7 MOV EAX,EDI
00419BFF E8 385AFFFF CALL crackme8.0040F63C
00419C04 84DB TEST BL,BL
00419C06 74 0A JE SHORT crackme8.00419C12
00419C08 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00419C0B 8BC7 MOV EAX,EDI
00419C0D E8 C6010000 CALL crackme8.00419DD8
00419C12 33C0 XOR EAX,EAX
00419C14 5A POP EDX
00419C15 59 POP ECX
00419C16 59 POP ECX
00419C17 64:8910 MOV DWORD PTR FS:[EAX],EDX
00419C1A 68 2F9C4100 PUSH crackme8.00419C2F
00419C1F 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
00419C22 E8 1D99FEFF CALL crackme8.00403544
00419C27 C3 RETN
程序运行到此处
00419C2F 5F POP EDI
只管F8,一直到RETN,程序经过下列代码,
00419C30 5E POP ESI ; 00D14694
00419C31 5B POP EBX
00419C32 59 POP ECX
00419C33 59 POP ECX
00419C34 5D POP EBP
00419C35 C3 RETN
程序运行到此处
0042BF28 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BF2B 8B83 EC010000 MOV EAX,DWORD PTR DS:[EBX+1EC]
0042BF31 E8 72DEFEFF CALL crackme8.00419DA8
0042BF36 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; 用户名
0042BF39 8BC3 MOV EAX,EBX
0042BF3B 8B08 MOV ECX,DWORD PTR DS:[EAX]
0042BF3D FF51 18 CALL DWORD PTR DS:[ECX+18]
0042BF40 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BF43 8B83 F0010000 MOV EAX,DWORD PTR DS:[EBX+1F0]
0042BF49 E8 5ADEFEFF CALL crackme8.00419DA8
0042BF4E 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; EDX中取得单位
0042BF51 8D85 FCFEFFFF LEA EAX,DWORD PTR SS:[EBP-104]
0042BF57 B9 FF000000 MOV ECX,0FF
0042BF5C E8 3B78FDFF CALL crackme8.0040379C
0042BF61 8D95 FCFEFFFF LEA EDX,DWORD PTR SS:[EBP-104]
0042BF67 B8 24E74200 MOV EAX,crackme8.0042E724 ; 单位长度+单位字符串
0042BF6C B1 0A MOV CL,0A
0042BF6E E8 8D67FDFF CALL crackme8.00402700
0042BF73 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BF76 8B83 F4010000 MOV EAX,DWORD PTR DS:[EBX+1F4]
0042BF7C E8 27DEFEFF CALL crackme8.00419DA8
0042BF81 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Serial
0042BF84 E8 EBA5FDFF CALL crackme8.00406574
0042BF89 A3 60E74200 MOV DWORD PTR DS:[42E760],EAX ; 42e760存放serial in hex
0042BF8E 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0042BF91 8B83 F8010000 MOV EAX,DWORD PTR DS:[EBX+1F8]
0042BF97 E8 0CDEFEFF CALL crackme8.00419DA8
0042BF9C 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Code
0042BF9F E8 D0A5FDFF CALL crackme8.00406574
0042BFA4 A3 64E74200 MOV DWORD PTR DS:[42E764],EAX ; 42e764存放code in hex
0042BFA9 33C0 XOR EAX,EAX
0042BFAB A3 30E74200 MOV DWORD PTR DS:[42E730],EAX ; 42E730清零
0042BFB0 33C0 XOR EAX,EAX
0042BFB2 A3 34E74200 MOV DWORD PTR DS:[42E734],EAX ; 42E734清零
0042BFB7 E8 14FEFFFF CALL crackme8.0042BDD0 ; 计算正确的Serial
0042BFBC E8 83FEFFFF CALL crackme8.0042BE44 ; 计算正确的Code
0042BFC1 E8 E2FEFFFF CALL crackme8.0042BEA8 ; 判断Serial与Code是否正确
0042BFC6 33C0 XOR EAX,EAX
0042BFC8 5A POP EDX
0042BFC9 59 POP ECX
0042BFCA 59 POP ECX
0042BFCB 64:8910 MOV DWORD PTR FS:[EAX],EDX
0042BFCE 68 E3BF4200 PUSH crackme8.0042BFE3
0042BFD3 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0042BFD6 E8 6975FDFF CALL crackme8.00403544
0042BFDB C3 RETN
其中CALL crackme8.0042BDD0 ; 计算正确的Serial函数如下:
0042BDD0 56 PUSH ESI
0042BDD1 57 PUSH EDI
0042BDD2 BE 30E74200 MOV ESI,crackme8.0042E730
0042BDD7 BF 38E74200 MOV EDI,crackme8.0042E738
0042BDDC A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BDE1 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8] ; 取得用户名
0042BDE4 0FB640 03 MOVZX EAX,BYTE PTR DS:[EAX+3]
0042BDE8 8907 MOV DWORD PTR DS:[EDI],EAX ; 用户名第4个字符放在42E738中
0042BDEA A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BDEF 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
0042BDF2 0FB640 01 MOVZX EAX,BYTE PTR DS:[EAX+1]
0042BDF6 8947 04 MOV DWORD PTR DS:[EDI+4],EAX ; 用户名第2个字符放在42E73C中
0042BDF9 A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BDFE 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
0042BE01 0FB640 04 MOVZX EAX,BYTE PTR DS:[EAX+4]
0042BE05 8947 08 MOV DWORD PTR DS:[EDI+8],EAX ; 用户名第5个字符放在42E740中
0042BE08 A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BE0D 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
0042BE10 0FB600 MOVZX EAX,BYTE PTR DS:[EAX]
0042BE13 8947 0C MOV DWORD PTR DS:[EDI+C],EAX ; 用户名第1个字符放在42E744中
0042BE16 A1 1CE74200 MOV EAX,DWORD PTR DS:[42E71C]
0042BE1B 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
0042BE1E 0FB640 02 MOVZX EAX,BYTE PTR DS:[EAX+2]
0042BE22 8947 10 MOV DWORD PTR DS:[EDI+10],EAX ; 用户名第3个字符放在42E748中
0042BE25 B2 05 MOV DL,5
0042BE27 8BC7 MOV EAX,EDI
0042BE29 6908 800D0000 IMUL ECX,DWORD PTR DS:[EAX],0D80 ; 用户名按照第4,2,5,1,3字符的顺序的ASCII码大小*0xD80
0042BE2F 030E ADD ECX,DWORD PTR DS:[ESI]
0042BE31 81F1 15A10300 XOR ECX,3A115
0042BE37 890E MOV DWORD PTR DS:[ESI],ECX
0042BE39 83C0 04 ADD EAX,4
0042BE3C FECA DEC DL
0042BE3E ^ 75 E9 JNZ SHORT crackme8.0042BE29
0042BE40 5F POP EDI
0042BE41 5E POP ESI
0042BE42 C3 RETN
其中CALL crackme8.0042BE44 ; 计算正确的Code函数如下:
0042BE44 56 PUSH ESI
0042BE45 BE 34E74200 MOV ESI,crackme8.0042E734
0042BE4A 33C0 XOR EAX,EAX
0042BE4C A0 26E74200 MOV AL,BYTE PTR DS:[42E726] ; 42E724 存放的是单位长度加单位字符串
0042BE51 A3 4CE74200 MOV DWORD PTR DS:[42E74C],EAX ; 单位第2个字符存放在42E74C中
0042BE56 33C0 XOR EAX,EAX
0042BE58 A0 29E74200 MOV AL,BYTE PTR DS:[42E729]
0042BE5D A3 50E74200 MOV DWORD PTR DS:[42E750],EAX ; 单位第5个字符存放在42E750中
0042BE62 33C0 XOR EAX,EAX
0042BE64 A0 27E74200 MOV AL,BYTE PTR DS:[42E727]
0042BE69 A3 54E74200 MOV DWORD PTR DS:[42E754],EAX ; 单位第3个字符存放在42E754中
0042BE6E 33C0 XOR EAX,EAX
0042BE70 A0 25E74200 MOV AL,BYTE PTR DS:[42E725]
0042BE75 A3 58E74200 MOV DWORD PTR DS:[42E758],EAX ; 单位第1个字符存放在42E758中
0042BE7A 33C0 XOR EAX,EAX
0042BE7C A0 28E74200 MOV AL,BYTE PTR DS:[42E728]
0042BE81 A3 5CE74200 MOV DWORD PTR DS:[42E75C],EAX ; 单位第4个字符存放在42E75C中
0042BE86 B2 05 MOV DL,5
0042BE88 B8 38E74200 MOV EAX,crackme8.0042E738
0042BE8D 6908 621A0000 IMUL ECX,DWORD PTR DS:[EAX],1A62 ; 用户名按照第4,2,5,1,3字符顺序与0x1A62向乘
0042BE93 030E ADD ECX,DWORD PTR DS:[ESI]
0042BE95 81F1 36DC0D00 XOR ECX,0DDC36 ; 异或0xDDC36
0042BE9B 890E MOV DWORD PTR DS:[ESI],ECX
0042BE9D 83C0 04 ADD EAX,4
0042BEA0 FECA DEC DL
0042BEA2 ^ 75 E9 JNZ SHORT crackme8.0042BE8D
0042BEA4 5E POP ESI
0042BEA5 C3 RETN
其中CALL crackme8.0042BEA8 ; 判断Serial与Code是否正确函数如下:
0042BEA8 A1 64E74200 MOV EAX,DWORD PTR DS:[42E764]
0042BEAD 3B05 34E74200 CMP EAX,DWORD PTR DS:[42E734] ; 42E734正确的CODE in Hex
0042BEB3 75 19 JNZ SHORT crackme8.0042BECE ; 关键跳转
0042BEB5 A1 60E74200 MOV EAX,DWORD PTR DS:[42E760]
0042BEBA 3B05 30E74200 CMP EAX,DWORD PTR DS:[42E730] ; 42E730正确的Serial in Hex
0042BEC0 75 0C JNZ SHORT crackme8.0042BECE ; 关键跳转
0042BEC2 A1 70D94200 MOV EAX,DWORD PTR DS:[42D970]
0042BEC7 8B00 MOV EAX,DWORD PTR DS:[EAX]
0042BEC9 E8 6EA6FFFF CALL crackme8.0042653C
0042BECE C3 RETN
根据上面描述可以很容易写出注册机:
#include "stdio.h"
void main()
{
char name[20];
int i;
long sn_name=0;
long code_name=0;
long temp;
int s[5]={3,1,4,0,2};
printf("please input your name!\n");
scanf("%s",name);
for(i=0;i<5;i++)
{
temp=name[s[i]]*0xD80;
temp+=sn_name;
temp=temp^0x3A115;
sn_name=temp;
}
for(i=0;i<5;i++)
{
temp=name[s[i]]*0x1A62;
temp+=code_name;
temp=temp^0xDDC36;
code_name=temp;
}
printf("The correct Serial is %d\n",sn_name);
printf("The correct Code is %d\n",code_name);
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!