- UID
- 28352
注册时间2007-2-21
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 开心 2024-5-1 14:44 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
【破文标题】Super Email Verifier 1.87 算法分析
【破文作者】tianxj
【作者邮箱】[email protected]
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】Super Email Verifier 1.87
【软件大小】1240KB
【软件类别】国外软件/邮件处理
【软件授权】共享版
【软件语言】英文
【运行环境】Win9x/Me/NT/2000/XP/2003
【更新时间】2009-6-24 9:42:33
【原版下载】http://www.onlinedown.net/soft/65952.htm
【保护方式】注册码
【软件简介】Super Email Verifier是一款批量电子邮件地址检验工具,可以帮助你快速的检查电子邮箱地址的准确性。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有错误提示"Sorry, the license name and register key you input doesn't match."
**************************************************************
二、用PEiD对XVerifier.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、打开OD,下万能断点,来到关键比较之处
- 00558DE5 E8 72FCFFFF CALL XVerifie.00558A5C ; //算法CALL
- 00558DEA 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10] ; //注册码
- 00558DED 8B55 08 MOV EDX, DWORD PTR SS:[EBP+8] ; //试炼码
- 00558DF0 E8 C315EBFF CALL XVerifie.0040A3B8 ; //比较CALL
复制代码 跟进算法CALL
- 00558A5C 55 PUSH EBP
- 00558A5D 8BEC MOV EBP, ESP
- 00558A5F 83C4 E4 ADD ESP, -1C
- 00558A62 53 PUSH EBX
- 00558A63 56 PUSH ESI
- 00558A64 57 PUSH EDI
- 00558A65 33DB XOR EBX, EBX
- 00558A67 895D E4 MOV DWORD PTR SS:[EBP-1C], EBX
- 00558A6A 895D F4 MOV DWORD PTR SS:[EBP-C], EBX
- 00558A6D 8BF9 MOV EDI, ECX
- 00558A6F 8955 FC MOV DWORD PTR SS:[EBP-4], EDX
- 00558A72 8BF0 MOV ESI, EAX
- 00558A74 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
- 00558A77 E8 80C5EAFF CALL XVerifie.00404FFC
- 00558A7C 33C0 XOR EAX, EAX
- 00558A7E 55 PUSH EBP
- 00558A7F 68 758B5500 PUSH XVerifie.00558B75
- 00558A84 64:FF30 PUSH DWORD PTR FS:[EAX]
- 00558A87 64:8920 MOV DWORD PTR FS:[EAX], ESP
- 00558A8A 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
- 00558A8D E8 82C3EAFF CALL XVerifie.00404E14
- 00558A92 3B46 4C CMP EAX, DWORD PTR DS:[ESI+4C]
- 00558A95 7F 0D JG SHORT XVerifie.00558AA4 ; //用户名长度大于100位则跳
- 00558A97 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
- 00558A9A E8 75C3EAFF CALL XVerifie.00404E14
- 00558A9F 3B46 50 CMP EAX, DWORD PTR DS:[ESI+50]
- 00558AA2 7D 0C JGE SHORT XVerifie.00558AB0 ; //用户名长度大于等于3位则跳
- 00558AA4 8BC7 MOV EAX, EDI
- 00558AA6 E8 85C0EAFF CALL XVerifie.00404B30
- 00558AAB E9 9F000000 JMP XVerifie.00558B4F
- 00558AB0 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] ; //用户名
- 00558AB3 E8 5CC3EAFF CALL XVerifie.00404E14 ; //取用户名长度
- 00558AB8 8BD8 MOV EBX, EAX
- 00558ABA EB 31 JMP SHORT XVerifie.00558AED
- 00558ABC 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] ; //用户名
- 00558ABF 8A4418 FF MOV AL, BYTE PTR DS:[EAX+EBX-1] ; //倒取用户名ASCII码
- 00558AC3 25 FF000000 AND EAX, 0FF
- 00558AC8 33D2 XOR EDX, EDX
- 00558ACA 52 PUSH EDX
- 00558ACB 50 PUSH EAX
- 00558ACC 8B46 68 MOV EAX, DWORD PTR DS:[ESI+68] ; //常数06B5D2A2h
- 00558ACF 8B56 6C MOV EDX, DWORD PTR DS:[ESI+6C]
- 00558AD2 E8 7DD2EAFF CALL XVerifie.00405D54 ; //常数06B5D2A2h与ASCII求余
- 00558AD7 52 PUSH EDX
- 00558AD8 50 PUSH EAX
- 00558AD9 8D45 E4 LEA EAX, DWORD PTR SS:[EBP-1C]
- 00558ADC E8 A71FEBFF CALL XVerifie.0040AA88 ; //将余数转为10进制
- 00558AE1 8B55 E4 MOV EDX, DWORD PTR SS:[EBP-1C]
- 00558AE4 8D45 F4 LEA EAX, DWORD PTR SS:[EBP-C]
- 00558AE7 E8 30C3EAFF CALL XVerifie.00404E1C ; //将10进制字符相连
- 00558AEC 4B DEC EBX
- 00558AED 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4] ; //用户名
- 00558AF0 E8 1FC3EAFF CALL XVerifie.00404E14 ; //取用户名长度
- 00558AF5 83E8 06 SUB EAX, 6 ; //用户名长度与6相减
- 00558AF8 3BD8 CMP EBX, EAX ; //用户名长度与差比较
- 00558AFA 7C 04 JL SHORT XVerifie.00558B00 ; //小于则跳出循环
- 00558AFC 85DB TEST EBX, EBX
- 00558AFE ^ 7F BC JG SHORT XVerifie.00558ABC ; //循环
- 00558B00 8D55 F8 LEA EDX, DWORD PTR SS:[EBP-8]
- 00558B03 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C] ; //10进制相连字符串
- 00558B06 E8 55D3EAFF CALL XVerifie.00405E60 ; //10进制相连字符串转为16进制
- 00558B0B 8945 E8 MOV DWORD PTR SS:[EBP-18], EAX
- 00558B0E 8955 EC MOV DWORD PTR SS:[EBP-14], EDX
- 00558B11 8B5E 60 MOV EBX, DWORD PTR DS:[ESI+60]
- 00558B14 85DB TEST EBX, EBX
- 00558B16 7F 11 JG SHORT XVerifie.00558B29
- 00558B18 FF75 EC PUSH DWORD PTR SS:[EBP-14]
- 00558B1B FF75 E8 PUSH DWORD PTR SS:[EBP-18]
- 00558B1E 8BD7 MOV EDX, EDI
- 00558B20 33C0 XOR EAX, EAX
- 00558B22 E8 D11FEBFF CALL XVerifie.0040AAF8
- 00558B27 EB 26 JMP SHORT XVerifie.00558B4F
- 00558B29 FF75 EC PUSH DWORD PTR SS:[EBP-14]
- 00558B2C FF75 E8 PUSH DWORD PTR SS:[EBP-18]
- 00558B2F 8BD7 MOV EDX, EDI
- 00558B31 8BC3 MOV EAX, EBX
- 00558B33 E8 C01FEBFF CALL XVerifie.0040AAF8 ; //将16进制按12位字符形式输出
- 00558B38 8B07 MOV EAX, DWORD PTR DS:[EDI] ; //12位16进制字符串,即注册码
- 00558B3A E8 D5C2EAFF CALL XVerifie.00404E14
- 00558B3F 8BC8 MOV ECX, EAX
- 00558B41 2B4E 60 SUB ECX, DWORD PTR DS:[ESI+60]
- 00558B44 8B56 60 MOV EDX, DWORD PTR DS:[ESI+60]
- 00558B47 42 INC EDX
- 00558B48 8BC7 MOV EAX, EDI
- 00558B4A E8 5DC5EAFF CALL XVerifie.004050AC
- 00558B4F 33C0 XOR EAX, EAX
- 00558B51 5A POP EDX
- 00558B52 59 POP ECX
- 00558B53 59 POP ECX
- 00558B54 64:8910 MOV DWORD PTR FS:[EAX], EDX
- 00558B57 68 7C8B5500 PUSH XVerifie.00558B7C
- 00558B5C 8D45 E4 LEA EAX, DWORD PTR SS:[EBP-1C]
- 00558B5F E8 CCBFEAFF CALL XVerifie.00404B30
- 00558B64 8D45 F4 LEA EAX, DWORD PTR SS:[EBP-C]
- 00558B67 E8 C4BFEAFF CALL XVerifie.00404B30
- 00558B6C 8D45 FC LEA EAX, DWORD PTR SS:[EBP-4]
- 00558B6F E8 BCBFEAFF CALL XVerifie.00404B30
- 00558B74 C3 RETN
- 00558B75 ^ E9 76B8EAFF JMP XVerifie.004043F0
- 00558B7A ^ EB E0 JMP SHORT XVerifie.00558B5C
- 00558B7C 5F POP EDI
- 00558B7D 5E POP ESI
- 00558B7E 5B POP EBX
- 00558B7F 8BE5 MOV ESP, EBP
- 00558B81 5D POP EBP
- 00558B82 C3 RETN
复制代码 **************************************************************
【破解总结】
--------------------------------------------------------------
【算法总结】
简单算法
--------------------------------------------------------------
【算法注册机】
易语言代码
.版本 2
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 c, 文本型
.局部变量 d, 文本型
.局部变量 l, 整数型
.局部变量 i, 整数型
l = 取文本长度 (编辑框1.内容)
.如果 (l > 100 或 l < 3)
编辑框2.内容 = “输入有误,请重新输入!”
.否则
.计次循环首 (6, i)
a = 取代码 (编辑框1.内容, l - i + 1)
b = 到整数 (进制转换 (“06B5D2A2”, 16, 10)) % a
c = c + 到文本 (b)
.如果真 (l - i = 0)
跳出循环 ()
.如果真结束
.计次循环尾 ()
d = 取文本右边 (“000000000000” + 进制转换 (c, 10, 16), 12)
编辑框2.内容 = d
--------------------------------------------------------------
【注册信息】
用户名:tianxj
注册码:003D57B765B6
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及王者之剑等所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|