Registry Easy 4.6算法分析
【破文标题】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:
004D4E12|.64:8920 MOV DWORD PTR FS:,ESP
004D4E15|.8D55 E8 LEA EDX,DWORD PTR SS:
004D4E18|.8B83 10030000 MOV EAX,DWORD PTR DS:
004D4E1E|.E8 91C8F9FF CALL RE.004716B4
004D4E23|.8B45 E8 MOV EAX,DWORD PTR SS: ;//试练码
004D4E26|.8D55 EC LEA EDX,DWORD PTR SS:
004D4E29|.E8 FE42F3FF CALL RE.0040912C
004D4E2E|.8B45 EC MOV EAX,DWORD PTR SS: ;//试练码
004D4E31|.8D55 FC LEA EDX,DWORD PTR SS:
004D4E34|.E8 DF40F3FF CALL RE.00408F18
004D4E39|.A0 6C504D00 MOV AL,BYTE PTR DS:
004D4E3E|.50 PUSH EAX
004D4E3F|.8D45 E4 LEA EAX,DWORD PTR SS:
004D4E42|.50 PUSH EAX
004D4E43|.33C9 XOR ECX,ECX
004D4E45|.BA 78504D00 MOV EDX,RE.004D5078
004D4E4A|.8B45 FC MOV EAX,DWORD PTR SS: ;//试练码
004D4E4D|.E8 DE9CF3FF CALL RE.0040EB30 ;//去掉试练码中的"-"
004D4E52|.8B55 E4 MOV EDX,DWORD PTR SS: ;//去掉"-"的试练码
004D4E55|.8D45 FC LEA EAX,DWORD PTR SS:
004D4E58|.E8 DFFCF2FF CALL RE.00404B3C
004D4E5D|.8D45 E0 LEA EAX,DWORD PTR SS:
004D4E60|.50 PUSH EAX
004D4E61|.B9 08000000 MOV ECX,8
004D4E66|.BA 09000000 MOV EDX,9
004D4E6B|.8B45 FC MOV EAX,DWORD PTR SS:
004D4E6E|.E8 5101F3FF CALL RE.00404FC4 ;//取去掉"-"的试练码的9-16位
004D4E73|.8B45 E0 MOV EAX,DWORD PTR SS: ;//去掉"-"的试练码的9-16位
004D4E76|.8D55 F8 LEA EDX,DWORD PTR SS:
004D4E79|.E8 5E40F3FF CALL RE.00408EDC
004D4E7E|.8D45 F4 LEA EAX,DWORD PTR SS:
004D4E81|.50 PUSH EAX
004D4E82|.B9 01000000 MOV ECX,1
004D4E87|.BA 03000000 MOV EDX,3
004D4E8C|.8B45 FC MOV EAX,DWORD PTR SS:
004D4E8F|.E8 3001F3FF CALL RE.00404FC4
004D4E94|.8D45 DC LEA EAX,DWORD PTR SS:
004D4E97|.50 PUSH EAX
004D4E98|.B9 01000000 MOV ECX,1
004D4E9D|.BA 01000000 MOV EDX,1
004D4EA2|.8B45 FC MOV EAX,DWORD PTR SS: ;//去掉"-"的试练码
004D4EA5|.E8 1A01F3FF CALL RE.00404FC4
004D4EAA|.8B45 DC MOV EAX,DWORD PTR SS:
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:
004D4EB8|.50 PUSH EAX
004D4EB9|.8D55 D8 LEA EDX,DWORD PTR SS:
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: ;//"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:
004D4ED8|.50 PUSH EAX
004D4ED9|.B9 01000000 MOV ECX,1
004D4EDE|.BA 02000000 MOV EDX,2
004D4EE3|.8B45 FC MOV EAX,DWORD PTR SS: ;//去掉"-"的试练码
004D4EE6|.E8 D900F3FF CALL RE.00404FC4
004D4EEB|.8B45 D4 MOV EAX,DWORD PTR SS:
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:
004D4EF9|.50 PUSH EAX
004D4EFA|.B9 05000000 MOV ECX,5
004D4EFF|.BA 04000000 MOV EDX,4
004D4F04|.8B45 FC MOV EAX,DWORD PTR SS: ;//去掉"-"的试练码
004D4F07|.E8 B800F3FF CALL RE.00404FC4 ;//取去掉"-"的试练码的4-8位
004D4F0C|.8D55 D0 LEA EDX,DWORD PTR SS:
004D4F0F|.8B45 FC MOV EAX,DWORD PTR SS: ;//去掉"-"的试练码的4-8位
004D4F12|.E8 1542F3FF CALL RE.0040912C
004D4F17|.837D D0 00 CMP DWORD PTR SS:,0
004D4F1B|.0F84 DD000000 JE RE.004D4FFE ;//去掉"-"的试练码的4-8位为空则跳
004D4F21|.8D55 CC LEA EDX,DWORD PTR SS:
004D4F24|.8B45 F0 MOV EAX,DWORD PTR SS: ;//取"Easy Gang"的标准MD5值的ESI位后的10位字符
004D4F27|.E8 0042F3FF CALL RE.0040912C
004D4F2C|.837D CC 00 CMP DWORD PTR SS:,0
004D4F30|.0F84 C8000000 JE RE.004D4FFE ;//取"Easy Gang"的标准MD5值的ESI位后的10位字符
004D4F36|.8D55 C8 LEA EDX,DWORD PTR SS:
004D4F39|.8B45 F8 MOV EAX,DWORD PTR SS: ;//去掉"-"的试练码的9-16位
004D4F3C|.E8 EB41F3FF CALL RE.0040912C
004D4F41|.837D C8 00 CMP DWORD PTR SS:,0
004D4F45|.0F84 B3000000 JE RE.004D4FFE ;//去掉"-"的试练码的9-16位为空则跳
004D4F4B|.8D55 C4 LEA EDX,DWORD PTR SS:
004D4F4E|.8B45 F4 MOV EAX,DWORD PTR SS:
004D4F51|.E8 D641F3FF CALL RE.0040912C
004D4F56|.837D C4 00 CMP DWORD PTR SS:,0
004D4F5A|.0F84 9E000000 JE RE.004D4FFE
004D4F60|.8D45 C0 LEA EAX,DWORD PTR SS:
004D4F63|.50 PUSH EAX
004D4F64|.FF75 F8 PUSH DWORD PTR SS: ;//去掉"-"的试练码的9-16位
004D4F67|.FF75 F0 PUSH DWORD PTR SS: ;//取"Easy Gang"的标准MD5值的ESI位后的10位字符
004D4F6A|.FF75 F4 PUSH DWORD PTR SS: ;//试练码的第4位
004D4F6D|.8D45 B8 LEA EAX,DWORD PTR SS:
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: ;//相连字符串
004D4F7D|.8D55 BC LEA EDX,DWORD PTR SS:
004D4F80|.E8 2F8FFEFF CALL RE.004BDEB4 ;//取相连字符串的标准MD5值
004D4F85|.8B45 BC MOV EAX,DWORD PTR SS: ;//相连字符串的标准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: ;//相连字符串的标准MD5值的ESI位后的5位字符
004D4F97|.8B45 FC MOV EAX,DWORD PTR SS: ;//去掉"-"的试练码的4-8位
004D4F9A|.E8 11FFF2FF CALL RE.00404EB0 ;//关键比较
004D4F9F|.75 35 JNZ SHORT RE.004D4FD6 ;//关键跳转
004D4FA1|.8D55 B0 LEA EDX,DWORD PTR SS:
004D4FA4|.8B83 10030000 MOV EAX,DWORD PTR DS:
004D4FAA|.E8 05C7F9FF CALL RE.004716B4
004D4FAF|.8B45 B0 MOV EAX,DWORD PTR SS:
004D4FB2|.8D55 B4 LEA EDX,DWORD PTR SS:
004D4FB5|.E8 7241F3FF CALL RE.0040912C
004D4FBA|.8B4D B4 MOV ECX,DWORD PTR SS:
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:
004D4FE7|.8B00 MOV EAX,DWORD PTR DS:
004D4FE9|.E8 F6D3FBFF CALL RE.004923E4
004D4FEE|.8B83 10030000 MOV EAX,DWORD PTR DS:
004D4FF4|.8B10 MOV EDX,DWORD PTR DS:
004D4FF6|.FF92 C4000000 CALL DWORD PTR DS:
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:
004D500F|.8B00 MOV EAX,DWORD PTR DS:
004D5011|.E8 CED3FBFF CALL RE.004923E4
004D5016|.8B83 10030000 MOV EAX,DWORD PTR DS:
004D501C|.8B10 MOV EDX,DWORD PTR DS:
004D501E|.FF92 C4000000 CALL DWORD PTR DS:
004D5024|>33C0 XOR EAX,EAX
004D5026|.5A POP EDX
004D5027|.59 POP ECX
004D5028|.59 POP ECX
004D5029|.64:8910 MOV DWORD PTR FS:,EDX
004D502C|.68 63504D00 PUSH RE.004D5063
004D5031|>8D45 B0 LEA EAX,DWORD PTR SS:
004D5034|.E8 6BFAF2FF CALL RE.00404AA4
004D5039|.8D45 B4 LEA EAX,DWORD PTR SS:
004D503C|.BA 0D000000 MOV EDX,0D
004D5041|.E8 82FAF2FF CALL RE.00404AC8
004D5046|.8D45 E8 LEA EAX,DWORD PTR SS:
004D5049|.E8 56FAF2FF CALL RE.00404AA4
004D504E|.8D45 EC LEA EAX,DWORD PTR SS:
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
保存在
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 占到沙发,再学习一次/:017 /:017 /:017 占到小沙发,下载阅读
页:
[1]