- UID
- 28352
注册时间2007-2-21
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 开心 2024-5-1 14:44 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
【破文标题】Registry Easy 4.6算法分析
【破文作者】tianxj
【作者邮箱】[email protected]
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】Registry Easy 4.6
【软件大小】2470KB
【软件类别】国外软件/系统辅助
【软件授权】共享版
【软件语言】英文
【更新时间】2008-7-18
【原版下载】华军软件园
【保护方式】注册码
【软件简介】Registry Easy是一款系统辅助软件,让您的计算机保持清洁和改善计算机的性能。让您的计算机使用起来更快捷
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
初学破解与编程,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"Invalid serial number! Please try again..."
**************************************************************
二、用PEiD对RE.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、运行OD,打开RE.exe,右键—超级字串参考—查找ASCII.
来到关键之处- 004D4DF4 /$ 55 PUSH EBP
- 004D4DF5 |. 8BEC MOV EBP,ESP
- 004D4DF7 |. B9 0A000000 MOV ECX,0A
- 004D4DFC |> 6A 00 /PUSH 0
- 004D4DFE |. 6A 00 |PUSH 0
- 004D4E00 |. 49 |DEC ECX
- 004D4E01 |.^ 75 F9 \JNZ SHORT RE.004D4DFC
- 004D4E03 |. 53 PUSH EBX
- 004D4E04 |. 56 PUSH ESI
- 004D4E05 |. 8BD8 MOV EBX,EAX
- 004D4E07 |. 33C0 XOR EAX,EAX
- 004D4E09 |. 55 PUSH EBP
- 004D4E0A |. 68 5C504D00 PUSH RE.004D505C
- 004D4E0F |. 64:FF30 PUSH DWORD PTR FS:[EAX]
- 004D4E12 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
- 004D4E15 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
- 004D4E18 |. 8B83 10030000 MOV EAX,DWORD PTR DS:[EBX+310]
- 004D4E1E |. E8 91C8F9FF CALL RE.004716B4
- 004D4E23 |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; //试练码
- 004D4E26 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
- 004D4E29 |. E8 FE42F3FF CALL RE.0040912C
- 004D4E2E |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; //试练码
- 004D4E31 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
- 004D4E34 |. E8 DF40F3FF CALL RE.00408F18
- 004D4E39 |. A0 6C504D00 MOV AL,BYTE PTR DS:[4D506C]
- 004D4E3E |. 50 PUSH EAX
- 004D4E3F |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
- 004D4E42 |. 50 PUSH EAX
- 004D4E43 |. 33C9 XOR ECX,ECX
- 004D4E45 |. BA 78504D00 MOV EDX,RE.004D5078
- 004D4E4A |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //试练码
- 004D4E4D |. E8 DE9CF3FF CALL RE.0040EB30 ; //去掉试练码中的"-"
- 004D4E52 |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C] ; //去掉"-"的试练码
- 004D4E55 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
- 004D4E58 |. E8 DFFCF2FF CALL RE.00404B3C
- 004D4E5D |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
- 004D4E60 |. 50 PUSH EAX
- 004D4E61 |. B9 08000000 MOV ECX,8
- 004D4E66 |. BA 09000000 MOV EDX,9
- 004D4E6B |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
- 004D4E6E |. E8 5101F3FF CALL RE.00404FC4 ; //取去掉"-"的试练码的9-16位
- 004D4E73 |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] ; //去掉"-"的试练码的9-16位
- 004D4E76 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
- 004D4E79 |. E8 5E40F3FF CALL RE.00408EDC
- 004D4E7E |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
- 004D4E81 |. 50 PUSH EAX
- 004D4E82 |. B9 01000000 MOV ECX,1
- 004D4E87 |. BA 03000000 MOV EDX,3
- 004D4E8C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
- 004D4E8F |. E8 3001F3FF CALL RE.00404FC4
- 004D4E94 |. 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
- 004D4E97 |. 50 PUSH EAX
- 004D4E98 |. B9 01000000 MOV ECX,1
- 004D4E9D |. BA 01000000 MOV EDX,1
- 004D4EA2 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //去掉"-"的试练码
- 004D4EA5 |. E8 1A01F3FF CALL RE.00404FC4
- 004D4EAA |. 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
- 004D4EAD |. E8 AA48F3FF CALL RE.0040975C ; //将试练码第1位送入EAX
- 004D4EB2 |. 8BF0 MOV ESI,EAX ; //ESI=EAX
- 004D4EB4 |. 46 INC ESI ; //ESI=ESI+1
- 004D4EB5 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
- 004D4EB8 |. 50 PUSH EAX
- 004D4EB9 |. 8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28]
- 004D4EBC |. B8 84504D00 MOV EAX,RE.004D5084 ; ASCII "Easy Gang"
- 004D4EC1 |. E8 EE8FFEFF CALL RE.004BDEB4 ; //取"Easy Gang"的标准MD5值
- 004D4EC6 |. 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28] ; //"Easy Gang"的标准MD5值
- 004D4EC9 |. B9 0A000000 MOV ECX,0A
- 004D4ECE |. 8BD6 MOV EDX,ESI
- 004D4ED0 |. E8 EF00F3FF CALL RE.00404FC4 ; //取"Easy Gang"的标准MD5值的ESI位后的10位字符
- 004D4ED5 |. 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
- 004D4ED8 |. 50 PUSH EAX
- 004D4ED9 |. B9 01000000 MOV ECX,1
- 004D4EDE |. BA 02000000 MOV EDX,2
- 004D4EE3 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //去掉"-"的试练码
- 004D4EE6 |. E8 D900F3FF CALL RE.00404FC4
- 004D4EEB |. 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]
- 004D4EEE |. E8 6948F3FF CALL RE.0040975C ; //将试练码第2位送入EAX
- 004D4EF3 |. 8BF0 MOV ESI,EAX ; //ESI=EAX
- 004D4EF5 |. 46 INC ESI ; //ESI=ESI+1
- 004D4EF6 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
- 004D4EF9 |. 50 PUSH EAX
- 004D4EFA |. B9 05000000 MOV ECX,5
- 004D4EFF |. BA 04000000 MOV EDX,4
- 004D4F04 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //去掉"-"的试练码
- 004D4F07 |. E8 B800F3FF CALL RE.00404FC4 ; //取去掉"-"的试练码的4-8位
- 004D4F0C |. 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
- 004D4F0F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //去掉"-"的试练码的4-8位
- 004D4F12 |. E8 1542F3FF CALL RE.0040912C
- 004D4F17 |. 837D D0 00 CMP DWORD PTR SS:[EBP-30],0
- 004D4F1B |. 0F84 DD000000 JE RE.004D4FFE ; //去掉"-"的试练码的4-8位为空则跳
- 004D4F21 |. 8D55 CC LEA EDX,DWORD PTR SS:[EBP-34]
- 004D4F24 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; //取"Easy Gang"的标准MD5值的ESI位后的10位字符
- 004D4F27 |. E8 0042F3FF CALL RE.0040912C
- 004D4F2C |. 837D CC 00 CMP DWORD PTR SS:[EBP-34],0
- 004D4F30 |. 0F84 C8000000 JE RE.004D4FFE ; //取"Easy Gang"的标准MD5值的ESI位后的10位字符
- 004D4F36 |. 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38]
- 004D4F39 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; //去掉"-"的试练码的9-16位
- 004D4F3C |. E8 EB41F3FF CALL RE.0040912C
- 004D4F41 |. 837D C8 00 CMP DWORD PTR SS:[EBP-38],0
- 004D4F45 |. 0F84 B3000000 JE RE.004D4FFE ; //去掉"-"的试练码的9-16位为空则跳
- 004D4F4B |. 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C]
- 004D4F4E |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
- 004D4F51 |. E8 D641F3FF CALL RE.0040912C
- 004D4F56 |. 837D C4 00 CMP DWORD PTR SS:[EBP-3C],0
- 004D4F5A |. 0F84 9E000000 JE RE.004D4FFE
- 004D4F60 |. 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-40]
- 004D4F63 |. 50 PUSH EAX
- 004D4F64 |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; //去掉"-"的试练码的9-16位
- 004D4F67 |. FF75 F0 PUSH DWORD PTR SS:[EBP-10] ; //取"Easy Gang"的标准MD5值的ESI位后的10位字符
- 004D4F6A |. FF75 F4 PUSH DWORD PTR SS:[EBP-C] ; //试练码的第4位
- 004D4F6D |. 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48]
- 004D4F70 |. BA 03000000 MOV EDX,3
- 004D4F75 |. E8 AAFEF2FF CALL RE.00404E24 ; //去掉"-"的试练码的9-16位与"Easy Gang"的标准MD5值的2-11位、试练码的第4位相连
- 004D4F7A |. 8B45 B8 MOV EAX,DWORD PTR SS:[EBP-48] ; //相连字符串
- 004D4F7D |. 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
- 004D4F80 |. E8 2F8FFEFF CALL RE.004BDEB4 ; //取相连字符串的标准MD5值
- 004D4F85 |. 8B45 BC MOV EAX,DWORD PTR SS:[EBP-44] ; //相连字符串的标准MD5值
- 004D4F88 |. B9 05000000 MOV ECX,5
- 004D4F8D |. 8BD6 MOV EDX,ESI
- 004D4F8F |. E8 3000F3FF CALL RE.00404FC4 ; //取相连字符串的标准MD5值的ESI位后的5位字符
- 004D4F94 |. 8B55 C0 MOV EDX,DWORD PTR SS:[EBP-40] ; //相连字符串的标准MD5值的ESI位后的5位字符
- 004D4F97 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //去掉"-"的试练码的4-8位
- 004D4F9A |. E8 11FFF2FF CALL RE.00404EB0 ; //关键比较
- 004D4F9F |. 75 35 JNZ SHORT RE.004D4FD6 ; //关键跳转
- 004D4FA1 |. 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
- 004D4FA4 |. 8B83 10030000 MOV EAX,DWORD PTR DS:[EBX+310]
- 004D4FAA |. E8 05C7F9FF CALL RE.004716B4
- 004D4FAF |. 8B45 B0 MOV EAX,DWORD PTR SS:[EBP-50]
- 004D4FB2 |. 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
- 004D4FB5 |. E8 7241F3FF CALL RE.0040912C
- 004D4FBA |. 8B4D B4 MOV ECX,DWORD PTR SS:[EBP-4C]
- 004D4FBD |. 33D2 XOR EDX,EDX
- 004D4FBF |. 8BC3 MOV EAX,EBX
- 004D4FC1 |. E8 06010000 CALL RE.004D50CC
- 004D4FC6 |. 8BC3 MOV EAX,EBX
- 004D4FC8 |. E8 E7010000 CALL RE.004D51B4
- 004D4FCD |. 8BC3 MOV EAX,EBX
- 004D4FCF |. E8 B09AFBFF CALL RE.0048EA84
- 004D4FD4 |. EB 4E JMP SHORT RE.004D5024
- 004D4FD6 |> 6A 30 PUSH 30
- 004D4FD8 |. B9 90504D00 MOV ECX,RE.004D5090 ; ASCII "Registry Easy"
- 004D4FDD |. BA A0504D00 MOV EDX,RE.004D50A0 ; ASCII "Invalid serial number! Please try again..."
- 004D4FE2 |. A1 1C655800 MOV EAX,DWORD PTR DS:[58651C]
- 004D4FE7 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
- 004D4FE9 |. E8 F6D3FBFF CALL RE.004923E4
- 004D4FEE |. 8B83 10030000 MOV EAX,DWORD PTR DS:[EBX+310]
- 004D4FF4 |. 8B10 MOV EDX,DWORD PTR DS:[EAX]
- 004D4FF6 |. FF92 C4000000 CALL DWORD PTR DS:[EDX+C4]
- 004D4FFC |. EB 26 JMP SHORT RE.004D5024
- 004D4FFE |> 6A 30 PUSH 30
- 004D5000 |. B9 90504D00 MOV ECX,RE.004D5090 ; ASCII "Registry Easy"
- 004D5005 |. BA A0504D00 MOV EDX,RE.004D50A0 ; ASCII "Invalid serial number! Please try again..."
- 004D500A |. A1 1C655800 MOV EAX,DWORD PTR DS:[58651C]
- 004D500F |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
- 004D5011 |. E8 CED3FBFF CALL RE.004923E4
- 004D5016 |. 8B83 10030000 MOV EAX,DWORD PTR DS:[EBX+310]
- 004D501C |. 8B10 MOV EDX,DWORD PTR DS:[EAX]
- 004D501E |. FF92 C4000000 CALL DWORD PTR DS:[EDX+C4]
- 004D5024 |> 33C0 XOR EAX,EAX
- 004D5026 |. 5A POP EDX
- 004D5027 |. 59 POP ECX
- 004D5028 |. 59 POP ECX
- 004D5029 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
- 004D502C |. 68 63504D00 PUSH RE.004D5063
- 004D5031 |> 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50]
- 004D5034 |. E8 6BFAF2FF CALL RE.00404AA4
- 004D5039 |. 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
- 004D503C |. BA 0D000000 MOV EDX,0D
- 004D5041 |. E8 82FAF2FF CALL RE.00404AC8
- 004D5046 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
- 004D5049 |. E8 56FAF2FF CALL RE.00404AA4
- 004D504E |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
- 004D5051 |. BA 05000000 MOV EDX,5
- 004D5056 |. E8 6DFAF2FF CALL RE.00404AC8
- 004D505B \. C3 RETN
- 004D505C .^ E9 A3F3F2FF JMP RE.00404404
- 004D5061 .^ EB CE JMP SHORT RE.004D5031
- 004D5063 . 5E POP ESI
- 004D5064 . 5B POP EBX
- 004D5065 . 8BE5 MOV ESP,EBP
- 004D5067 . 5D POP EBP
- 004D5068 . C3 RETN
复制代码 **************************************************************
【破解总结】
--------------------------------------------------------------
【算法总结】
注册码形式为XXXX-XXXX-XXXX-XXXX,取注册码的第3组第4组与"Easy Gang"的标准MD5值中的的10个字符、注册码的第1组第3位相连字符串的MD5值的5个字符,与注册码的第1组第4位和注册码的第2组相连字符串比较,若相等则注册成功
--------------------------------------------------------------
【算法注册机】
〖VB代码〗
Private Sub Command1_Click()
a1 = Int(Rnd() * 10)
a2 = Int(Rnd() * 10)
a3 = Int(Rnd() * 10)
a9 = Int(Rnd() * 10)
a10 = Int(Rnd() * 10)
a11 = Int(Rnd() * 10)
a12 = Int(Rnd() * 10)
a13 = Int(Rnd() * 10)
a14 = Int(Rnd() * 10)
a15 = Int(Rnd() * 10)
a16 = Int(Rnd() * 10)
b3 = a9 & a10 & a11 & a12
b4 = a13 & a14 & a15 & a16
c1 = LCase(MD5("Easy Gang")) 'MD5模块
c2 = Mid(c1, a1 + 1, 10)
c3 = LCase(MD5(b3 & b4 & c2 & a3))
c4 = Mid(c3, a2 + 1, 5)
b2 = Mid(c4, 2, 4)
a4 = Left(c4, 1)
b1 = a1 & a2 & a3 & a4
Text1.Text = b1 & "-" & b2 & "-" & b3 & "-" & b4
End Sub
--------------------------------------------------------------
【注册信息】
一组可用注册码:1119-c78f-3333-4444
保存在[HKEY_CURRENT_USER\Software\RegistryEasy]
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|