首页
社区
课程
招聘
搜索引擎工厂专业版算法分析+算法注册机
发表于: 2005-1-12 19:29 4871

搜索引擎工厂专业版算法分析+算法注册机

stasi 活跃值
12
2005-1-12 19:29
4871

【破解作者】 stasi[DCM][BCG][DFCG][FCG][OCN][CZG][D.4s]
【作者邮箱】 [email]stasi@163.com[/email]
【作者主页】 stasi.7169.com
【使用工具】 ollydbg  vc++6.0
【破解平台】 Win9x/NT/2000/XP
【软件名称】 搜索引擎工厂专业版v1.68
【下载地址】 http://www.aleadsoft.com/
【软件简介】 Search Engine Builder is specifically designed to help with
             that problem. It indexes your entire website quickly and
             generates an efficient search engine. It makes it easier
             for your visitors to find things on your website and gives
             it a more professional appearance.

【软件大小】 1.24m
【加壳方式】 无
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

前几天,上海下了十年来最大的一场雪,好福气啊:)正是朋友聚聚的好时候,忙了好几天:(
今天才有空在论坛上看看,一来就看到fcg征召新年文章,我水平不济,所以先写,要不等师傅
的文章出来,就浪费看的大家时间了:)手上没什么东西,在dfcg论坛上看到一篇搜索引擎工厂
专业版的文章,作者在算法上难住了,我看了一下,占用午睡的时候,涂了一篇,贻笑大方。

RegOpenKeyA断下:

* Possible StringData Ref from Data Obj ->"RegInfo"
                                  |
:0042DE9D 6804614A00              push 004A6104
:0042DEA2 52                      push edx
:0042DEA3 8BCE                    mov ecx, esi
:0042DEA5 E8227C0400              call 00475ACC
:0042DEAA 50                      push eax
:0042DEAB 8D4C2420                lea ecx, dword ptr [esp+20]
:0042DEAF C68424540200000B        mov byte ptr [esp+00000254], 0B
:0042DEB7 E8F21A0300              call 0045F9AE
:0042DEBC 8D4C2410                lea ecx, dword ptr [esp+10]
:0042DEC0 889C2450020000          mov byte ptr [esp+00000250], bl
:0042DEC7 E8A9190300              call 0045F875
:0042DECC 51                      push ecx
:0042DECD 8D442420                lea eax, dword ptr [esp+20]
:0042DED1 8BCC                    mov ecx, esp
:0042DED3 89642424                mov dword ptr [esp+24], esp
:0042DED7 50                      push eax
:0042DED8 E80D170300              call 0045F5EA
:0042DEDD 51                      push ecx
:0042DEDE 8D542420                lea edx, dword ptr [esp+20]
:0042DEE2 8BCC                    mov ecx, esp
:0042DEE4 8964241C                mov dword ptr [esp+1C], esp
:0042DEE8 52                      push edx
:0042DEE9 C684245C0200000C        mov byte ptr [esp+0000025C], 0C
:0042DEF1 E8F4160300              call 0045F5EA
:0042DEF6 8BCE                    mov ecx, esi
:0042DEF8 889C2458020000          mov byte ptr [esp+00000258], bl
:0042DEFF E8AC440000              call 004323B0               //算法
:0042DF04 33ED                    xor ebp, ebp
:0042DF06 3BC5                    cmp eax, ebp
:0042DF08 740C                    je 0042DF16
:0042DF0A C786E800000001000000    mov dword ptr [esi+000000E8], 00000001
:0042DF14 EB59                    jmp 0042DF6F

:004323B0 6AFF                    push FFFFFFFF
:004323B2 68D03A4800              push 00483AD0
:004323B7 64A100000000            mov eax, dword ptr fs:[00000000]
:004323BD 50                      push eax
:004323BE 64892500000000          mov dword ptr fs:[00000000], esp
:004323C5 81ECD4000000            sub esp, 000000D4
:004323CB 53                      push ebx
:004323CC 56                      push esi
:004323CD 8BF1                    mov esi, ecx
:004323CF B801000000              mov eax, 00000001
:004323D4 6870DB4A00              push 004ADB70
:004323D9 898424E8000000          mov dword ptr [esp+000000E8], eax
:004323E0 8986EC000000            mov dword ptr [esi+000000EC], eax
:004323E6 8B8424F0000000          mov eax, dword ptr [esp+000000F0]
:004323ED 50                      push eax
:004323EE E82B5B0100              call 00447F1E
:004323F3 83C408                  add esp, 00000008
:004323F6 85C0                    test eax, eax
:004323F8 0F8477010000            je 00432575
:004323FE 8B8C24F0000000          mov ecx, dword ptr [esp+000000F0]
:00432405 6870DB4A00              push 004ADB70
:0043240A 51                      push ecx
:0043240B E80E5B0100              call 00447F1E
:00432410 83C408                  add esp, 00000008
:00432413 85C0                    test eax, eax
:00432415 0F845A010000            je 00432575

* Possible StringData Ref from Data Obj ->"ttdown"            //黑名单
                                  |
:0043241B 68F0964A00              push 004A96F0
:00432420 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:00432427 E8FB580200              call 00457D27
:0043242C 33DB                    xor ebx, ebx
:0043242E 83F8FF                  cmp eax, FFFFFFFF
:00432431 7542                    jne 00432475

* Possible StringData Ref from Data Obj ->"crsky"
                                  |
:00432433 68E8964A00              push 004A96E8
:00432438 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:0043243F E8E3580200              call 00457D27
:00432444 83F8FF                  cmp eax, FFFFFFFF
:00432447 752C                    jne 00432475

* Possible StringData Ref from Data Obj ->".com"
                                  |
:00432449 68D8964A00              push 004A96D8
:0043244E 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:00432455 E8CD580200              call 00457D27
:0043245A 83F8FF                  cmp eax, FFFFFFFF
:0043245D 7516                    jne 00432475

* Possible StringData Ref from Data Obj ->"jetdown"
                                  |
:0043245F 68D0964A00              push 004A96D0
:00432464 8D8C24F0000000          lea ecx, dword ptr [esp+000000F0]
:0043246B E8B7580200              call 00457D27
:00432470 83F8FF                  cmp eax, FFFFFFFF
:00432473 7406                    je 0043247B

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00432431(C), :00432447(C), :0043245D(C)
|
:00432475 899EEC000000            mov dword ptr [esi+000000EC], ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00432473(C)
|
:0043247B 55                      push ebp
:0043247C 8BAC24F0000000          mov ebp, dword ptr [esp+000000F0]
:00432483 33C9                    xor ecx, ecx
:00432485 C644240C73              mov [esp+0C], 73            //'s'
:0043248A 8B75F8                  mov esi, dword ptr [ebp-08]
:0043248D C644240D65              mov [esp+0D], 65            //'e'
:00432492 3BF3                    cmp esi, ebx
:00432494 C644240E61              mov [esp+0E], 61            //'a'
:00432499 C644240F72              mov [esp+0F], 72            //'r'
:0043249E C644241062              mov [esp+10], 62            //'b'     
:004324A3 C644241175              mov [esp+11], 75            //'u'
:004324A8 C644241269              mov [esp+12], 69            //'i'
:004324AD C64424136C              mov [esp+13], 6C            //'l'
:004324B2 885C2414                mov byte ptr [esp+14], bl
:004324B6 7E3D                    jle 004324F5
:004324B8 57                      push edi
:004324B9 8D7C341B                lea edi, dword ptr [esp+esi+1B]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004324F0(C)
|
:004324BD 8A0429                  mov al, byte ptr [ecx+ebp]
:004324C0 8BD1                    mov edx, ecx
:004324C2 81E207000080            and edx, 80000007
:004324C8 7905                    jns 004324CF
:004324CA 4A                      dec edx
:004324CB 83CAF8                  or edx, FFFFFFF8
:004324CE 42                      inc edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004324C8(C)
|
:004324CF 0FBE541410              movsx edx, byte ptr [esp+edx+10]
:004324D4 0FBEC0                  movsx eax, al
:004324D7 8BD9                    mov ebx, ecx              
:004324D9 03DA                    add ebx, edx
:004324DB 03C3                    add eax, ebx              
:004324DD BB09000000              mov ebx, 00000009           
:004324E2 03C6                    add eax, esi             //注册名字符+对应字符+对应位数+注册名长度
:004324E4 99                      cdq
:004324E5 F7FB                    idiv ebx                   //除ebx=9,得余数
:004324E7 80C230                  add dl, 30
:004324EA 41                      inc ecx
:004324EB 8817                    mov byte ptr [edi], dl
:004324ED 4F                      dec edi
:004324EE 3BCE                    cmp ecx, esi
:004324F0 7CCB                    jl 004324BD              //全部比完,连接成注册码前面的部分
:004324F2 33DB                    xor ebx, ebx
:004324F4 5F                      pop edi

:004324F5 8D4668                  lea eax, dword ptr [esi+68]        //注册名长度+0x68
:004324F8 B909000000              mov ecx, 00000009                  //除9
:004324FD 99                      cdq
:004324FE F7F9                    idiv ecx
:00432500 8B8424F4000000          mov eax, dword ptr [esp+000000F4]  //注册码的最后一位
:00432507 5D                      pop ebp
:00432508 80C230                  add dl, 30
:0043250B 88543414                mov byte ptr [esp+esi+14], dl
:0043250F 885C3415                mov byte ptr [esp+esi+15], bl
:00432513 8D742414                lea esi, dword ptr [esp+14]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00432535(C)
|
:00432517 8A10                    mov dl, byte ptr [eax]
:00432519 8ACA                    mov cl, dl
:0043251B 3A16                    cmp dl, byte ptr [esi]     
:0043251D 751C                    jne 0043253B
:0043251F 3ACB                    cmp cl, bl
:00432521 7414                    je 00432537
:00432523 8A5001                  mov dl, byte ptr [eax+01]
:00432526 8ACA                    mov cl, dl
:00432528 3A5601                  cmp dl, byte ptr [esi+01]
:0043252B 750E                    jne 0043253B
:0043252D 83C002                  add eax, 00000002
:00432530 83C602                  add esi, 00000002
:00432533 3ACB                    cmp cl, bl
:00432535 75E0                    jne 00432517

--------------------------------------------------------------------------------
【破解总结】

1)注册名不能超过50个字符。
2)“searbuil”是参考字符,参与算法运算。
3)注册名取一位,参考字符里也取一位,注册名长度超过8个字符时,循环取参考字符。
4)每次运算相当于:(注册名字符+参考对应字符+对应位数+注册名长度)mod 9 的计算,
   依次连接结果,保存为注册码的首部分。
5)(注册名长度+0x68) mod 9 的结果是注册码的最后一位。

--------------------------------------------------------------------------------
【算法注册机】

ps:vb 那张盘被借去了,只能c++的代码将就了:(
ps:论坛上说的中文注册名的问题也解决了,注册名中可以使用汉字字符:)

#include"iostream.h"
#include"stdio.h"
#include"string.h"

void main()
{   char n[80];
    int len(0),i,m(0),s(0),t(0);
    puts("code for 搜索引擎工厂专业版v1.68");
    puts("////////////////////////////////////////////////////////////////////////////");
    puts("  Cracker : stasi[DCM][BCG][DFCG][FCG][OCN][CZG][D.4s]"  );  
    puts("  Email   : [email]stasi@163.com[/email]");
    puts("  Homepage: http://stasi.7169.com");
    puts("  OS      : Win2kADV sp4 & vc++ 6.0");
    puts("  Date    : 2004-1-1 ");
    puts("  Note    : If you have one or more question, email me please,thank you! ");
    puts("////////////////////////////////////////////////////////////////////////////");

        while(1)
        {   
                puts("\nPlease enter your name:");
        gets(n);
        len=strlen(n);
        if (len<=50) break;
        else cout<<"sorry! The length of the regname can not be more than 50!";
        }

        puts("\nregcode is :");
        for(i=0;i<(len);i++)
        {
                 s=(int)n[len-i-1];

                 m=(len-i)%8;
                 switch(m)
                 {
                      case 0: m=108;break;       
                    case 1: m=115;break;                 
                       case 2: m=101;break;       
                    case 3: m=97;break;       
                    case 4: m=114;break;
                    case 5: m=98;break;                 
                    case 6: m=117;break;       
                     case 7: m=105;break;       
                         default:puts("maybe have had a mistake:(");break;
                 }

                t=(len-i-1)+s+len+m;
             t%=9;
             cout<<(t);
        }
     cout<<(len+104)%9;

     cout<<"\nThank you for using & enjoy yourself in the new year!";

}

--------------------------------------------------------------------------------
【内存注册机】

中断地址:42DEFF
中断次数:1
第一字节:E8
指令长度:5

中断地址:43251B
中断次数:1
第一字节:3A
指令长度:2

--------------------------------------------------------------------------------
【用户名、密码】

regname:stasi
regcode:533711

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
                                                 2005-1-1


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//