飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5087|回复: 5

[原创] 代码本地校验软件A Real Validator算法分析

[复制链接]

该用户从未签到

发表于 2007-3-30 19:34:51 | 显示全部楼层 |阅读模式
软件没有加壳,明码比较,很容易找到关键处,

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



  1. /****
  2. * 代码本地校验软件A Real Validator
  3. *  [url]http://arealvalidator.com/download/arv112.msi[/url]
  4.     * 软件名称:A Real Validator
  5.     * 开发者主页:[url]www.arealvalidator.com[/url]
  6.     * 软件大小:2.28MB
  7.     * 安装环境:Microsoft Windows 95/98/Me/NT4/2000/xp ;IE 4.0 以上浏览器
  8.     * 版本:1.12(30天试用版)
  9. * 软件说明
  10. * 我们在制作符合web标准网站的过程中,
  11. * 总要不断的到W3C网站来校验自己制作的页面是否符合XHTML 1.0,这样比较麻烦。
  12. * A Real Validator就是一款本地校验软件,允许你在本机直接校验页面而不需要再联网校验,
  13. * 它校验的结果与W3C完全一致。
  14. */
  15. #include <stdio.h>
  16. #include <string.h>
  17. int main(int argc, char *argv[])
  18. {
  19.   char * about = "\
  20.   ***************************************\n\
  21.   A Real Validator V1.12\n\
  22.   代码本地校验软件注册机\n\
  23.   作者: surge[PYG]\n\
  24.   ***************************************\n";  
  25.   char * key = "@!SDVXFGUHbvnc908 *&)5 fjd095j90kcf ja%JKeSFAKDJSLJgJDF 2k34lsdjfkldjf jdsklfjadskgl;jafdkl;gjasdkl;r568r;jvggfl;kd4ui12098  vlkjfdlk;sfjgklfdgjlejt03456erjgrj";
  26.   int i=0;
  27.   int j=0;
  28.   int num=0;
  29.   int k=0;
  30.   int z=0;
  31.   char username[256];

  32.   printf(about);
  33.   memset(username,0,sizeof(username));  
  34.   printf("  输入用户名:");
  35.   gets(username);
  36.   num =strlen(key)-1;
  37.   for(i=0,j=num; i<=num; i++,j--){
  38.     z = (key[i]*key[j])+k;
  39.     k = 0xee6b2800;
  40.     k = z%k;
  41.   }
  42.   for(i=0; i<strlen(username); i++){
  43.     z = key[i]*username[i]+k;
  44.     k = 0xee6b2800;
  45.     k = z%k;
  46.   }
  47.   printf("  注册码是: %d\n",k);
  48.   getchar();
  49.   return 0;
  50. }
复制代码
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-3-30 19:39:08 | 显示全部楼层
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Liam Quinn\ARV\Settings]
"Name"="surge[PYG]"
"RegKey"=dword:0012cf3f
surge.jpg
PYG19周年生日快乐!
  • TA的每日心情

    2016-6-2 20:34
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2007-3-31 10:08:26 | 显示全部楼层
    喜欢这类文章,支持!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-26 08:21:57 | 显示全部楼层
    厉害,学习了。
    我是新手,感谢你的文章。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-5-29 02:28:10 | 显示全部楼层
    本帖最后由 dzswvip 于 2010-5-29 02:30 编辑

    真牛 中国有你 我什么时候才可以有浏览权限呀
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-4-20 11:09
  • 签到天数: 619 天

    [LV.9]以坛为家II

    发表于 2010-5-29 10:12:38 | 显示全部楼层
    不错,学习了。。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表