C-Free4.1专业版注册码破解
来源:互联网 发布:胖乎乎还有什么乎乎 编辑:程序博客网 时间:2024/06/09 14:29
运行C-Free主程序时点击“关于”菜单会看到未注册字样,如果运行超过试用期会在启动时弹出要求注册的对话框,禁止调试等功能。
选择“注册”菜单,输入用户名、邮箱、注册码(错误的),点击确定后程序要求重新启动以验证。
当我们重新启动,发现刚才输入的用户名和邮箱自动载入,说明刚才存入了注册表,注册码也存入注册表,而注册码因为是错误的,所以现在要求重新输入。
打开注册表,在HKEY_CURRENT_USER/Software/C-Free/4下找到以下项:
RegistryCode
UserName
说明程序启动时会读写注册表项值,用OLLYICE载入程序,下API断点,函数名称为:RegQueryValueExA
运行,在此005218E4处中断:
005218E4 /$ 55 PUSH EBP
005218E5 |. 8BEC MOV EBP,ESP
005218E7 |. 83C4 F0 ADD ESP,-10
005218EA |. 53 PUSH EBX
005218EB |. 56 PUSH ESI
005218EC |. 57 PUSH EDI
005218ED |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8];输入的注册码
005218F0 |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
005218F3 |. 8B55 14 MOV EDX,DWORD PTR SS:[EBP+14]
005218F6 |. 807C08 FF 00 CMP BYTE PTR DS:[EAX+ECX-1],0;注册码长度
005218FB |. 75 03 JNZ SHORT CppIDE.00521900
005218FD |. FF4D 0C DEC DWORD PTR SS:[EBP+C]
00521900 837D 10 00 CMP DWORD PTR SS:[EBP+10],0
00521904 75 4C JNZ SHORT CppIDE.00521952
00521906 837D 0C 03 CMP DWORD PTR SS:[EBP+C],3
0052190A |. 7D 07 JGE SHORT CppIDE.00521913
0052190C |. 33C0 XOR EAX,EAX
0052190E |. E9 19010000 JMP CppIDE.00521A2C
00521913 |> 33D2 XOR EDX,EDX
00521915 |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
00521918 |. 0FBE4C08 FE MOVSX ECX,BYTE PTR DS:[EAX+ECX-2]
0052191D |. 83F9 3D CMP ECX,3D
00521920 |. 75 07 JNZ SHORT CppIDE.00521929
00521922 |. BA 02000000 MOV EDX,2
00521927 |. EB 12 JMP SHORT CppIDE.0052193B
00521929 |> 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
0052192C |. 0FBE4408 FF MOVSX EAX,BYTE PTR DS:[EAX+ECX-1]
00521931 |. 83F8 3D CMP EAX,3D
00521934 |. 75 05 JNZ SHORT CppIDE.0052193B
00521936 |. BA 01000000 MOV EDX,1
0052193B |> 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
0052193E |. 85C0 TEST EAX,EAX
00521940 |. 79 03 JNS SHORT CppIDE.00521945
00521942 |. 83C0 03 ADD EAX,3
00521945 |> C1F8 02 SAR EAX,2
00521948 |. 8D0440 LEA EAX,DWORD PTR DS:[EAX+EAX*2]
0052194B |. 2BC2 SUB EAX,EDX
0052194D |. E9 DA000000 JMP CppIDE.00521A2C
00521952 |> 85D2 TEST EDX,EDX
00521954 |. 75 09 JNZ SHORT CppIDE.0052195F
00521956 |. C745 FC 03456>MOV DWORD PTR SS:[EBP-4],CppIDE.006E4503
0052195D |. EB 03 JMP SHORT CppIDE.00521962
0052195F |> 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
00521962 |> 33D2 XOR EDX,EDX
00521964 |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
00521967 |. 8BD0 MOV EDX,EAX
00521969 |. 8B45 10 MOV EAX,DWORD PTR SS:[EBP+10]
0052196C |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX;保存注册码转换后的值的位置
0052196F |. E9 A2000000 JMP CppIDE.00521A16
00521974 |> 3C 7B /CMP AL,7B
00521976 |. 0F83 AA000000 |JNB CppIDE.00521A26
0052197C |. C745 F8 03000>|MOV DWORD PTR SS:[EBP-8],3
00521983 |. 33DB |XOR EBX,EBX
00521985 |. 33C0 |XOR EAX,EAX
00521987 |> C1E3 06 |/SHL EBX,6
0052198A |. 8A0A ||MOV CL,BYTE PTR DS:[EDX]
0052198C |. 80F9 3D ||CMP CL,3D
0052198F |. 75 15 ||JNZ SHORT CppIDE.005219A6
00521991 |. 81E1 FF000000 ||AND ECX,0FF
00521997 |. 0FBE89 88446E>||MOVSX ECX,BYTE PTR DS:[ECX+6E4488]
0052199E |. 0BD9 ||OR EBX,ECX
005219A0 |. 48 ||DEC EAX
005219A1 |. 8945 F8 ||MOV DWORD PTR SS:[EBP-8],EAX
005219A4 |. EB 22 ||JMP SHORT CppIDE.005219C8
005219A6 |> 837D 0C 00 ||CMP DWORD PTR SS:[EBP+C],0
005219AA |. 7E 16 ||JLE SHORT CppIDE.005219C2
005219AC |. 803A 7B ||CMP BYTE PTR DS:[EDX],7B
005219AF |. 73 11 ||JNB SHORT CppIDE.005219C2
005219B1 |. 33C9 ||XOR ECX,ECX
005219B3 |. 8A0A ||MOV CL,BYTE PTR DS:[EDX]
005219B5 |. 0FBE89 88446E>||MOVSX ECX,BYTE PTR DS:[ECX+6E4488];6E4488存有注册码字符对应的替换表,从表中可知输入的密码的许可字符是哪些
005219BC |. 0BD9 ||OR EBX,ECX ;将替换后的值异或运算
005219BE |. 42 ||INC EDX
005219BF |. FF4D 0C ||DEC DWORD PTR SS:[EBP+C]
005219C2 |> 40 ||INC EAX
005219C3 |. 83F8 04 ||CMP EAX,4 ;注册码长度必须为4的倍数,这里是4个一组进行先替换再异或运算
005219C6 |.^ 7C BF |/JL SHORT CppIDE.00521987
005219C8 |> 837D F8 01 |CMP DWORD PTR SS:[EBP-8],1
005219CC |. 75 03 |JNZ SHORT CppIDE.005219D1
005219CE |. C1E3 06 |SHL EBX,6
005219D1 |> 81E3 FFFFFF00 |AND EBX,0FFFFFF
005219D7 |. 33C0 |XOR EAX,EAX
005219D9 |. 3B45 F8 |CMP EAX,DWORD PTR SS:[EBP-8]
005219DC |. 7D 38 |JGE SHORT CppIDE.00521A16
005219DE |> B9 02000000 |/MOV ECX,2
005219E3 |. 8BF3 ||MOV ESI,EBX ;上面运算得到的异或结果
005219E5 |. 2BC8 ||SUB ECX,EAX
005219E7 |. 8B7D F4 ||MOV EDI,DWORD PTR SS:[EBP-C]
005219EA |. C1E1 03 ||SHL ECX,3
005219ED |. D3FE ||SAR ESI,CL
005219EF |. 8BCE ||MOV ECX,ESI
005219F1 |. 8B75 FC ||MOV ESI,DWORD PTR SS:[EBP-4];ESI保存异或表,值为B8 BB C4 EA 用于循环的异或运算
005219F4 |. 80E1 FF ||AND CL,0FF
005219F7 |. 320C3E ||XOR CL,BYTE PTR DS:[ESI+EDI] ;和异或表的值进行异或运算
005219FA |. 8B75 F0 ||MOV ESI,DWORD PTR SS:[EBP-10] ;保存异或结果
005219FD |. 880E ||MOV BYTE PTR DS:[ESI],CL
005219FF |. FF45 F4 ||INC DWORD PTR SS:[EBP-C]
00521A02 |. FF45 F0 ||INC DWORD PTR SS:[EBP-10]
00521A05 |. 837D F4 04 ||CMP DWORD PTR SS:[EBP-C],4
00521A09 |. 75 05 ||JNZ SHORT CppIDE.00521A10
00521A0B |. 33C9 ||XOR ECX,ECX
00521A0D |. 894D F4 ||MOV DWORD PTR SS:[EBP-C],ECX
00521A10 |> 40 ||INC EAX
00521A11 |. 3B45 F8 ||CMP EAX,DWORD PTR SS:[EBP-8] ;每轮运算3次
00521A14 |.^ 7C C8 |/JL SHORT CppIDE.005219DE
00521A16 |> 8A02 MOV AL,BYTE PTR DS:[EDX]
00521A18 |. 3C 3D |CMP AL,3D
00521A1A |. 74 0A |JE SHORT CppIDE.00521A26
00521A1C |. 837D 0C 00 |CMP DWORD PTR SS:[EBP+C],0 ;注册码转换后的长度是否>0,注册码转换后的长度计算公式:注册码长度/4*3
00521A20 |.^ 0F8F 4EFFFFFF /JG CppIDE.00521974
00521A26 |> 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
00521A29 |. 2B45 10 SUB EAX,DWORD PTR SS:[EBP+10]
00521A2C |> 5F POP EDI
00521A2D |. 5E POP ESI
00521A2E |. 5B POP EBX
00521A2F |. 8BE5 MOV ESP,EBP
00521A31 |. 5D POP EBP
00521A32 /. C3 RETN
这是注册码验证的核心,共中断两次,第二次中断是重点,不可走跑。
一直运行到00521A32,单步运行到
0042F10E . E8 69962100 CALL CppIDE.0064877C ;读入刚才输入的用户名和邮箱
0042F113 . FF85 E8F9FFFF INC DWORD PTR SS:[EBP-618]
0042F119 . 8B10 MOV EDX,DWORD PTR DS:[EAX]
0042F11B . 8B85 ACFBFFFF MOV EAX,DWORD PTR SS:[EBP-454]
0042F121 . E8 F2CC1700 CALL CppIDE.005ABE18 ;上面验证算法的结果和邮箱用户名连接的字串进行长度和内容的比较
0042F126 . 85C0 TEST EAX,EAX ;测试是否成功,即值是否为0,如果不成功,程序每次启动时要求注册
如何确定输入的注册码字符是否有效呢?可以实时观察此处的结果:
005219FA |. 8B75 F0 ||MOV ESI,DWORD PTR SS:[EBP-10] ;保存异或结果
用d ESI 观察,结果一定要求是上面替换表中允许的字符,否则在启动验证时字串长度不对,如果不是可显字符,调整注册表项RegistryCode对应字符的值。
全部通过后,可以用这个转换结果字串替换注册表项UserName 和 Email
在此给出我的一个结果:cf@1u40iUNi^cfp7jp
UserName可取为:UNi^cfp7jp
邮箱可取为:cf@1u40i
- C-Free4.1专业版注册码破解
- PyCharm2016.3专业版注册码
- PyCharm2016.2专业版注册码
- PyCharm2016.2专业版注册码
- PyCharm2017.3专业版注册码
- PyCharm2016.2专业版注册码
- PyCharm2016.2专业版注册码
- PyCharm2017最新专业版注册码
- PyCharm2016.3 专业版注册码
- CCleaner 4 专业版+商业版+破解版+绿色版 – 绝对可用注册码!
- 破解注册码
- pycharm 3.1.3专业版注册码
- [unity3d]专业版破解
- 破解vysor为专业版
- IDEA 专业版破解方法
- MarkdownPad专业版(破解)
- pycharm专业版破解
- myeclipse10.1的注册码破解步骤
- 服务器启动后,重新启动Oracle数据库的方法
- 假如生活欺骗了你
- 中国著名ERP产品对比表
- INT3断点
- surfaceView 学习之路
- C-Free4.1专业版注册码破解
- hp4411s vt168
- [双语阅读]研究:长期缺觉没法补
- ORACLE应用产品和SAP、SSA、SYMIX产品的比较分析
- 推荐养生的一些书
- 安装并成功激活WIN7
- 查找EXIT_HELP
- Ext笔记
- 定义自己的View