- UID
- 2927
注册时间2005-8-29
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
软件没有加壳,明码比较,很容易找到关键处,
0040F970 /$ 53 push ebx ; 算法CALL开始
0040F971 |. 55 push ebp
0040F972 |. 56 push esi
0040F973 |. 57 push edi
0040F974 |. BF 54C64100 mov edi, 0041C654 ; ASCII "@!SDVXFGUHbvnc908 *&)5 fjd095j90kcf ja%JKeSFAKDJSLJgJDF 2k34lsdjfkldjf jdsklfjadskgl;jafdkl;gjasdkl;r568r;jvggfl;kd4ui12098 vlkjfdlk;sfjgklfdgjlejt03456erjgrj"
0040F979 |. 83C9 FF or ecx, FFFFFFFF
0040F97C |. 33C0 xor eax, eax
0040F97E |. F2:AE repne scas byte ptr es:[edi]
0040F980 |. F7D1 not ecx
0040F982 |. 49 dec ecx
0040F983 |. 8BF8 mov edi, eax
0040F985 |. 8BF0 mov esi, eax
0040F987 |. 74 26 je short 0040F9AF
0040F989 |. 8D99 53C64100 lea ebx, [ecx+41C653]
0040F98F |> 0FBE86 54C641>/movsx eax, byte ptr [esi+41C654] ; 取密串中的开始一个字符
0040F996 |. 0FBE13 |movsx edx, byte ptr [ebx] ; 取密串结尾一个字符
0040F999 |. 0FAFC2 |imul eax, edx ; 两个相乘放EAX
0040F99C |. 03C7 |add eax, edi ; 加上EDI
0040F99E |. 33D2 |xor edx, edx ; EDX清零,准备放/结果
0040F9A0 |. BF 00286BEE |mov edi, EE6B2800 ; EDI赋值ee6b2800
0040F9A5 |. F7F7 |div edi ; eax/edi,改变edx
0040F9A7 |. 46 |inc esi ; 向前移动开始指针指向下一个
0040F9A8 |. 4B |dec ebx ; 向后移动结尾指针,指向上一个
0040F9A9 |. 3BF1 |cmp esi, ecx ; 比较是否移动完
0040F9AB |. 8BFA |mov edi, edx ; edi保存最终计算结果
0040F9AD |.^ 72 E0 \jb short 0040F98F ; edi==0011C198
0040F9AF |> 8B4424 14 mov eax, [esp+14]
0040F9B3 |. 33F6 xor esi, esi
0040F9B5 |. 8B18 mov ebx, [eax] ; 用户名地址放ebx
0040F9B7 |. 8B6B F8 mov ebp, [ebx-8] ; 用户名长度放ebp
0040F9BA |. 85ED test ebp, ebp ; 测试是否输入了用户名
0040F9BC |. 7E 26 jle short 0040F9E4
0040F9BE |> 8BC6 /mov eax, esi
0040F9C0 |. 33D2 |xor edx, edx
0040F9C2 |. F7F1 |div ecx ; ecx是上面加密串的长度
0040F9C4 |. 0FBE82 54C641>|movsx eax, byte ptr [edx+41C654] ; 取加密串开始的一个字符到eax
0040F9CB |. 0FBE1433 |movsx edx, byte ptr [ebx+esi] ; 取用户名的一个字符到edx
0040F9CF |. 0FAFC2 |imul eax, edx ; 两个相乘放eax
0040F9D2 |. 03C7 |add eax, edi ; eax再加上上面循环计算的结果
0040F9D4 |. 33D2 |xor edx, edx ; 清除edx
0040F9D6 |. BF 00286BEE |mov edi, EE6B2800
0040F9DB |. F7F7 |div edi ; 除Edi结果在edx:eax
0040F9DD |. 46 |inc esi
0040F9DE |. 3BF5 |cmp esi, ebp ; 和用户名长度比较
0040F9E0 |. 8BFA |mov edi, edx ; edi放最张结果
0040F9E2 |.^ 7C DA \jl short 0040F9BE
0040F9E4 |> 8BC7 mov eax, edi ; edi是最后结果,通过EAX返回
0040F9E6 |. 5F pop edi
0040F9E7 |. 5E pop esi
0040F9E8 |. 5D pop ebp
0040F9E9 |. 5B pop ebx
0040F9EA \. C3 retn
- /****
- * 代码本地校验软件A Real Validator
- * [url]http://arealvalidator.com/download/arv112.msi[/url]
- * 软件名称:A Real Validator
- * 开发者主页:[url]www.arealvalidator.com[/url]
- * 软件大小:2.28MB
- * 安装环境:Microsoft Windows 95/98/Me/NT4/2000/xp ;IE 4.0 以上浏览器
- * 版本:1.12(30天试用版)
- * 软件说明
- * 我们在制作符合web标准网站的过程中,
- * 总要不断的到W3C网站来校验自己制作的页面是否符合XHTML 1.0,这样比较麻烦。
- * A Real Validator就是一款本地校验软件,允许你在本机直接校验页面而不需要再联网校验,
- * 它校验的结果与W3C完全一致。
- */
- #include <stdio.h>
- #include <string.h>
- int main(int argc, char *argv[])
- {
- char * about = "\
- ***************************************\n\
- A Real Validator V1.12\n\
- 代码本地校验软件注册机\n\
- 作者: surge[PYG]\n\
- ***************************************\n";
- char * key = "@!SDVXFGUHbvnc908 *&)5 fjd095j90kcf ja%JKeSFAKDJSLJgJDF 2k34lsdjfkldjf jdsklfjadskgl;jafdkl;gjasdkl;r568r;jvggfl;kd4ui12098 vlkjfdlk;sfjgklfdgjlejt03456erjgrj";
- int i=0;
- int j=0;
- int num=0;
- int k=0;
- int z=0;
- char username[256];
- printf(about);
- memset(username,0,sizeof(username));
- printf(" 输入用户名:");
- gets(username);
- num =strlen(key)-1;
- for(i=0,j=num; i<=num; i++,j--){
- z = (key[i]*key[j])+k;
- k = 0xee6b2800;
- k = z%k;
- }
- for(i=0; i<strlen(username); i++){
- z = key[i]*username[i]+k;
- k = 0xee6b2800;
- k = z%k;
- }
- printf(" 注册码是: %d\n",k);
- getchar();
- return 0;
- }
复制代码 |
|