首页
社区
课程
招聘
****管理软件 2.59注册流程分析
发表于: 2005-12-25 13:39 7129

****管理软件 2.59注册流程分析

kyc 活跃值
19
2005-12-25 13:39
7129

【破文标题】里诺进销存管理软件 2.59注册流程分析
【破文作者】kyc
【破解工具】PEID,OD,
【破解平台】WIN XP sp2
【原版下载】http://www.onlinedown.net/soft/40913.htm
   破解难度: 算法简单。
软件简介:
   里诺进销存管理软件是一个集“进、销、存、财”四位一体的全功能商贸管理软件。
    软件界面设计简洁,美观。其人性化的软件流程,使普通用户不需培训也能很快掌握软件的使用方法,软件主要功能和特点如下:
    1.软件界面沿用易用软件传统风格,简洁、美观、易用。
    2.软件支持采购、销售、退货、调拨、入库、出库、盘点等业务操作。
    3.支持应收账款、应付账款管理。
    4.支持现金银行账及费用管理。
    5.支持加权平均法、移动加权平均法等成本核算。
    6.货品和来往单位资料支持树形分类管理。
    7.强大的数据导入功能,支持从Excel导入货品和来往单位资料,减少期初数据录入的工作量。
    8.支持自定义单据打印格式,可以任意更换打印机及纸张类型,支持单据套打。
    9.软件支持小数点位数自定义,可以设置单价为0-6位小数;
    10.自动对库存超限的商品进行报警。
    11.支持自动生成货品编码功能。
    12.提供完备的帐务系统,月记帐、日记帐,提供多种综合查询及统计报表功能、软件提供多种日报表、月报表,软件提供庞大的图表分析系统及库存、经营报警系统,多方位为企业经营决策提供服务。
    13.安全可靠的数据库备份和恢复功能。
    易用进销存软件以业务为基础,整个系统一体化设计,功能流畅,操作方便,界面美观友好,是您商贸管理的好帮手!

【破解过程】
该软件原名叫易用进销存软件,现叫里诺进销存管理软件。破解比较简单主要是看注册算法。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0064BB00      .  57              push edi
0064BB01      .  8945 FC         mov dword ptr ss:[ebp-4],eax
0064BB04      .  33C0            xor eax,eax
0064BB06      .  55              push ebp
0064BB07      .  68 45BC6400     push jxc.0064BC45
0064BB0C      .  64:FF30         push dword ptr fs:[eax]
0064BB0F      .  64:8920         mov dword ptr fs:[eax],esp
0064BB12      .  8B45 FC         mov eax,dword ptr ss:[ebp-4]
0064BB15      .  E8 A6020000     call jxc.0064BDC0
0064BB1A      .  84C0            test al,al
0064BB1C      .  0F84 DB000000   je jxc.0064BBFD
0064BB22      .  33C0            xor eax,eax
0064BB24      .  55              push ebp
0064BB25      .  68 E1BB6400     push jxc.0064BBE1
0064BB2A      .  64:FF30         push dword ptr fs:[eax]
0064BB2D      .  64:8920         mov dword ptr fs:[eax],esp
0064BB30      .  B2 01           mov dl,1
0064BB32      .  A1 C48C4400     mov eax,dword ptr ds:[448CC4]
0064BB37      .  E8 F4D2DFFF     call jxc.00448E30
0064BB3C      .  8BD8            mov ebx,eax
0064BB3E      .  BA 02000080     mov edx,80000002
0064BB43      .  8BC3            mov eax,ebx
0064BB45      .  E8 C2D3DFFF     call jxc.00448F0C
0064BB4A      .  B1 01           mov cl,1
0064BB4C      .  BA 5CBC6400     mov edx,jxc.0064BC5C                                ;  ASCII "Software\zy\JXC"
0064BB51      .  8BC3            mov eax,ebx
0064BB53      .  E8 F8D4DFFF     call jxc.00449050
0064BB58      .  8D55 F4         lea edx,dword ptr ss:[ebp-C]
0064BB5B      .  8B45 FC         mov eax,dword ptr ss:[ebp-4]
0064BB5E      .  8B80 04030000   mov eax,dword ptr ds:[eax+304]
0064BB64      .  E8 07C9E3FF     call jxc.00488470
0064BB69      .  8B45 F4         mov eax,dword ptr ss:[ebp-C]
0064BB6C      .  8D55 F8         lea edx,dword ptr ss:[ebp-8]
0064BB6F      .  E8 D8DEDBFF     call jxc.00409A4C
0064BB74      .  8B4D F8         mov ecx,dword ptr ss:[ebp-8]
0064BB77      .  BA 74BC6400     mov edx,jxc.0064BC74                                ;  ASCII "Name"
0064BB7C      .  8BC3            mov eax,ebx
0064BB7E      .  E8 69D6DFFF     call jxc.004491EC
0064BB83      .  8D55 EC         lea edx,dword ptr ss:[ebp-14]
0064BB86      .  8B45 FC         mov eax,dword ptr ss:[ebp-4]
0064BB89      .  8B80 08030000   mov eax,dword ptr ds:[eax+308]
0064BB8F      .  E8 DCC8E3FF     call jxc.00488470
0064BB94      .  8B45 EC         mov eax,dword ptr ss:[ebp-14]
0064BB97      .  8D55 F0         lea edx,dword ptr ss:[ebp-10]
0064BB9A      .  E8 ADDEDBFF     call jxc.00409A4C
0064BB9F      .  8B4D F0         mov ecx,dword ptr ss:[ebp-10]
0064BBA2      .  BA 84BC6400     mov edx,jxc.0064BC84                                ;  ASCII "Pass"
0064BBA7      .  8BC3            mov eax,ebx
0064BBA9      .  E8 3ED6DFFF     call jxc.004491EC
0064BBAE      .  8BC3            mov eax,ebx
0064BBB0      .  E8 AF7FDBFF     call jxc.00403B64
0064BBB5      .  6A 40           push 40
0064BBB7      .  68 8CBC6400     push jxc.0064BC8C
0064BBBC      .  68 98BC6400     push jxc.0064BC98                                   ;  注册成功
0064BBC1      .  8B45 FC         mov eax,dword ptr ss:[ebp-4]
0064BBC4      .  E8 AF32E4FF     call jxc.0048EE78
0064BBC9      .  50              push eax                                            ; |hOwner
0064BBCA      .  E8 E1C4DBFF     call <jmp.&user32.MessageBoxA>                      ; \MessageBoxA

////////////////////////////////////////////////////////////////////////////////////////////// call jxc.0064BDC0
0064BDC0     /$  55              push ebp
0064BDC1     |.  8BEC            mov ebp,esp
0064BDC3     |.  B9 04000000     mov ecx,4
0064BDC8     |>  6A 00           /push 0
0064BDCA     |.  6A 00           |push 0
0064BDCC     |.  49              |dec ecx
0064BDCD     |.^ 75 F9           \jnz short jxc.0064BDC8
0064BDCF     |.  51              push ecx
0064BDD0     |.  53              push ebx
0064BDD1     |.  56              push esi
0064BDD2     |.  8BF0            mov esi,eax
0064BDD4     |.  33C0            xor eax,eax
0064BDD6     |.  55              push ebp
0064BDD7     |.  68 D5BE6400     push jxc.0064BED5
0064BDDC     |.  64:FF30         push dword ptr fs:[eax]
0064BDDF     |.  64:8920         mov dword ptr fs:[eax],esp
0064BDE2     |.  8D55 F8         lea edx,dword ptr ss:[ebp-8]
0064BDE5     |.  8B86 08030000   mov eax,dword ptr ds:[esi+308]
0064BDEB     |.  E8 80C6E3FF     call jxc.00488470
0064BDF0     |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]                        ;  假码
0064BDF3     |.  8D55 FC         lea edx,dword ptr ss:[ebp-4]
0064BDF6     |.  E8 51DCDBFF     call jxc.00409A4C
0064BDFB     |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
0064BDFE     |.  50              push eax
0064BDFF     |.  8D55 EC         lea edx,dword ptr ss:[ebp-14]
0064BE02     |.  8B86 04030000   mov eax,dword ptr ds:[esi+304]
0064BE08     |.  E8 63C6E3FF     call jxc.00488470
0064BE0D     |.  8B45 EC         mov eax,dword ptr ss:[ebp-14]                       ;  用户名
0064BE10     |.  8D55 F0         lea edx,dword ptr ss:[ebp-10]
0064BE13     |.  E8 34DCDBFF     call jxc.00409A4C
0064BE18     |.  8B55 F0         mov edx,dword ptr ss:[ebp-10]
0064BE1B     |.  8D4D F4         lea ecx,dword ptr ss:[ebp-C]
0064BE1E     |.  8BC6            mov eax,esi
0064BE20     |.  E8 FF000000     call jxc.0064BF24                                   ;  关键
0064BE25     |.  8B55 F4         mov edx,dword ptr ss:[ebp-C]                        ;  真码
0064BE28     |.  58              pop eax
0064BE29     |.  E8 3690DBFF     call jxc.00404E64
0064BE2E     |.  75 50           jnz short jxc.0064BE80
0064BE30     |.  B3 01           mov bl,1
0064BE32     |.  8D55 E4         lea edx,dword ptr ss:[ebp-1C]
0064BE35     |.  8B86 04030000   mov eax,dword ptr ds:[esi+304]
0064BE3B     |.  E8 30C6E3FF     call jxc.00488470
0064BE40     |.  8B45 E4         mov eax,dword ptr ss:[ebp-1C]
0064BE43     |.  8D55 E8         lea edx,dword ptr ss:[ebp-18]
0064BE46     |.  E8 01DCDBFF     call jxc.00409A4C
0064BE4B     |.  8B55 E8         mov edx,dword ptr ss:[ebp-18]

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// call jxc.0064BF24  关键
0064BF24     /$  55              push ebp
0064BF25     |.  8BEC            mov ebp,esp
0064BF27     |.  51              push ecx
0064BF28     |.  B9 04000000     mov ecx,4
0064BF2D     |>  6A 00           /push 0
0064BF2F     |.  6A 00           |push 0
0064BF31     |.  49              |dec ecx
0064BF32     |.^ 75 F9           \jnz short jxc.0064BF2D
0064BF34     |.  51              push ecx
0064BF35     |.  874D FC         xchg dword ptr ss:[ebp-4],ecx
0064BF38     |.  53              push ebx
0064BF39     |.  56              push esi
0064BF3A     |.  57              push edi
0064BF3B     |.  8BF9            mov edi,ecx
0064BF3D     |.  8955 FC         mov dword ptr ss:[ebp-4],edx
0064BF40     |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]                        ;  用户名
0064BF43     |.  E8 C08FDBFF     call jxc.00404F08
0064BF48     |.  33C0            xor eax,eax
0064BF4A     |.  55              push ebp
0064BF4B     |.  68 E5C06400     push jxc.0064C0E5
0064BF50     |.  64:FF30         push dword ptr fs:[eax]
0064BF53     |.  64:8920         mov dword ptr fs:[eax],esp
0064BF56     |.  8BC7            mov eax,edi
0064BF58     |.  E8 FB8ADBFF     call jxc.00404A58
0064BF5D     |.  8B45 FC         mov eax,dword ptr ss:[ebp-4]
0064BF60     |.  E8 B38DDBFF     call jxc.00404D18                                   ;  用户名长度
0064BF65     |.  8BF0            mov esi,eax
0064BF67     |.  85F6            test esi,esi
0064BF69     |.  7E 26           jle short jxc.0064BF91
0064BF6B     |.  BB 01000000     mov ebx,1
0064BF70     |>  8D4D EC         /lea ecx,dword ptr ss:[ebp-14]
0064BF73     |.  8B45 FC         |mov eax,dword ptr ss:[ebp-4]                       ;  用户名kyc
0064BF76     |.  0FB64418 FF     |movzx eax,byte ptr ds:[eax+ebx-1]                  ;  eax=name[i]
0064BF7B     |.  33D2            |xor edx,edx                                        ;  edx=0
0064BF7D     |.  E8 E2E1DBFF     |call jxc.0040A164
0064BF82     |.  8B55 EC         |mov edx,dword ptr ss:[ebp-14]
0064BF85     |.  8D45 F8         |lea eax,dword ptr ss:[ebp-8]
0064BF88     |.  E8 938DDBFF     |call jxc.00404D20
0064BF8D     |.  43              |inc ebx
0064BF8E     |.  4E              |dec esi
0064BF8F     |.^ 75 DF           \jnz short jxc.0064BF70                             ;  以上循环是提取用户名的ASCII
0064BF91     |>  8B45 F8         mov eax,dword ptr ss:[ebp-8]                        ;  用户名的ASCII=6B7963
0064BF94     |.  E8 7F8DDBFF     call jxc.00404D18                                   ;  用户名的ASCII长度
0064BF99     |.  8BF0            mov esi,eax
0064BF9B     |.  85F6            test esi,esi
0064BF9D     |.  7E 2C           jle short jxc.0064BFCB
0064BF9F     |.  BB 01000000     mov ebx,1                                           ;  EBX=1
0064BFA4     |>  8B45 F8         /mov eax,dword ptr ss:[ebp-8]                       ;  用户名的ASCII
0064BFA7     |.  E8 6C8DDBFF     |call jxc.00404D18                                  ;  EAX=用户名的ASCII长度
0064BFAC     |.  2BC3            |sub eax,ebx                                        ;  EAX=EAX-EBX
0064BFAE     |.  8B55 F8         |mov edx,dword ptr ss:[ebp-8]
0064BFB1     |.  8A1402          |mov dl,byte ptr ds:[edx+eax]
0064BFB4     |.  8D45 E8         |lea eax,dword ptr ss:[ebp-18]
0064BFB7     |.  E8 848CDBFF     |call jxc.00404C40
0064BFBC     |.  8B55 E8         |mov edx,dword ptr ss:[ebp-18]
0064BFBF     |.  8D45 F4         |lea eax,dword ptr ss:[ebp-C]
0064BFC2     |.  E8 598DDBFF     |call jxc.00404D20
0064BFC7     |.  43              |inc ebx
0064BFC8     |.  4E              |dec esi                                            ;  3697B6
0064BFC9     |.^ 75 D9           \jnz short jxc.0064BFA4                             ;  以上循环是对用户名的ASCII进行倒序排列
0064BFCB     |>  8D45 F8         lea eax,dword ptr ss:[ebp-8]
0064BFCE     |.  50              push eax
0064BFCF     |.  B9 04000000     mov ecx,4
0064BFD4     |.  BA 01000000     mov edx,1
0064BFD9     |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
0064BFDC     |.  E8 978FDBFF     call jxc.00404F78
0064BFE1     |.  8D45 F4         lea eax,dword ptr ss:[ebp-C]
0064BFE4     |.  50              push eax
0064BFE5     |.  B9 04000000     mov ecx,4
0064BFEA     |.  BA 05000000     mov edx,5
0064BFEF     |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
0064BFF2     |.  E8 818FDBFF     call jxc.00404F78
0064BFF7     |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
0064BFFA     |.  E8 198DDBFF     call jxc.00404D18                                   ;  用户名的ASCII进行倒序取前4个字符
0064BFFF     |.  83F8 04         cmp eax,4
0064C002     |.  7D 2F           jge short jxc.0064C033
0064C004     |.  8B45 F8         mov eax,dword ptr ss:[ebp-8]
0064C007     |.  E8 0C8DDBFF     call jxc.00404D18
0064C00C     |.  8BD8            mov ebx,eax
0064C00E     |.  83FB 03         cmp ebx,3
0064C011     |.  7F 20           jg short jxc.0064C033
0064C013     |>  8D4D E4         /lea ecx,dword ptr ss:[ebp-1C]
0064C016     |.  8BC3            |mov eax,ebx
0064C018     |.  C1E0 02         |shl eax,2
0064C01B     |.  33D2            |xor edx,edx
0064C01D     |.  E8 42E1DBFF     |call jxc.0040A164
0064C022     |.  8B55 E4         |mov edx,dword ptr ss:[ebp-1C]
0064C025     |.  8D45 F8         |lea eax,dword ptr ss:[ebp-8]
0064C028     |.  E8 F38CDBFF     |call jxc.00404D20
0064C02D     |.  43              |inc ebx
0064C02E     |.  83FB 04         |cmp ebx,4
0064C031     |.^ 75 E0           \jnz short jxc.0064C013
0064C033     |>  8B45 F4         mov eax,dword ptr ss:[ebp-C]
0064C036     |.  E8 DD8CDBFF     call jxc.00404D18                                   ;  取前4个字符
0064C03B     |.  83F8 04         cmp eax,4
0064C03E     |.  7D 2F           jge short jxc.0064C06F
0064C040     |.  8B45 F4         mov eax,dword ptr ss:[ebp-C]
0064C043     |.  E8 D08CDBFF     call jxc.00404D18
0064C048     |.  8BD8            mov ebx,eax
0064C04A     |.  83FB 03         cmp ebx,3
0064C04D     |.  7F 20           jg short jxc.0064C06F
0064C04F     |>  8D4D E0         /lea ecx,dword ptr ss:[ebp-20]
0064C052     |.  8BC3            |mov eax,ebx
0064C054     |.  C1E0 02         |shl eax,2
0064C057     |.  33D2            |xor edx,edx
0064C059     |.  E8 06E1DBFF     |call jxc.0040A164
0064C05E     |.  8B55 E0         |mov edx,dword ptr ss:[ebp-20]
0064C061     |.  8D45 F4         |lea eax,dword ptr ss:[ebp-C]
0064C064     |.  E8 B78CDBFF     |call jxc.00404D20
0064C069     |.  43              |inc ebx
0064C06A     |.  83FB 04         |cmp ebx,4
0064C06D     |.^ 75 E0           \jnz short jxc.0064C04F
0064C06F     |>  8D45 F0         lea eax,dword ptr ss:[ebp-10]
0064C072     |.  BA FCC06400     mov edx,jxc.0064C0FC                                ;  ASCII "JXCw268d58k"
0064C077     |.  E8 748ADBFF     call jxc.00404AF0
0064C07C     |.  8D45 DC         lea eax,dword ptr ss:[ebp-24]
0064C07F     |.  50              push eax
0064C080     |.  B9 04000000     mov ecx,4
0064C085     |.  BA 01000000     mov edx,1
0064C08A     |.  8B45 F0         mov eax,dword ptr ss:[ebp-10]
0064C08D     |.  E8 E68EDBFF     call jxc.00404F78
0064C092     |.  FF75 DC         push dword ptr ss:[ebp-24]
0064C095     |.  68 10C16400     push jxc.0064C110
0064C09A     |.  FF75 F8         push dword ptr ss:[ebp-8]
0064C09D     |.  8D45 D8         lea eax,dword ptr ss:[ebp-28]
0064C0A0     |.  50              push eax
0064C0A1     |.  B9 05000000     mov ecx,5
0064C0A6     |.  BA 05000000     mov edx,5
0064C0AB     |.  8B45 F0         mov eax,dword ptr ss:[ebp-10]                       ;  固定字符串=JXCw268d58k
0064C0AE     |.  E8 C58EDBFF     call jxc.00404F78
0064C0B3     |.  FF75 D8         push dword ptr ss:[ebp-28]
0064C0B6     |.  68 10C16400     push jxc.0064C110
0064C0BB     |.  FF75 F4         push dword ptr ss:[ebp-C]
0064C0BE     |.  8BC7            mov eax,edi
0064C0C0     |.  BA 06000000     mov edx,6
0064C0C5     |.  E8 0E8DDBFF     call jxc.00404DD8
0064C0CA     |.  33C0            xor eax,eax
0064C0CC     |.  5A              pop edx
0064C0CD     |.  59              pop ecx
0064C0CE     |.  59              pop ecx
0064C0CF     |.  64:8910         mov dword ptr fs:[eax],edx
0064C0D2     |.  68 ECC06400     push jxc.0064C0EC

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
总结:算法比较简单,主要利用用户名的ASCII生成字符串后和字符串常量"JXCw268d58k"进行插入,连接形成注册码。
具体实现看注册机源码。
// 进销存软件.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
using namespace std;
void daxie(char *a,int len)
{
        for(int i=0;i<len;i++)
        {
                if (a [i]>='a'&& a[i]<='z')
                        a[i]=a[i]-32;
        }
}
void daoxu(char *a,int len)
{
        char str[20]={0};
        for(int i=0;i<len;i++)
        {
                str[len-i-1]=a[i];

        }
        strcpy(a,str);
}

int _tmain(int argc, _TCHAR* argv[])
{
        string stmp;
        char str[]="JXCw268d58k",username[12],sn[20],temp[20]={0},buffer[20]={0},temp1[20]={0},temp2[20]={0},temp3[20]={0};
        char sn1[20]={0},sn2[20]={0},sn3[20]={0},sn4[20];
        unsigned long key,key2;
        int i=0;
        cin>>username;
        int len=strlen(username);
        for(int i=0;i<len;i++)
        {
                key=username[i];
                _itoa( key, buffer, 16 );
                strcat(temp,buffer);
        }
        daxie(temp,strlen(temp));//转换成大写
        daoxu(temp,strlen(temp));

        key2=2;
        key=key2;
        __asm shl key,2
                _itoa( key, buffer, 16 );
        strcat(temp1,buffer);
        key2+=1;
        key=key2;
        __asm shl key,2
                _itoa( key, buffer, 16 );
        strcat(temp1,buffer);

        daxie(temp1,strlen(temp1));//转换成大写

        key2=0;
        key=key2;
        __asm shl key,2
                _itoa( key, buffer, 16 );
        strcat(temp2,buffer);
        key2+=1;
        key=key2;
        __asm shl key,2
                _itoa( key, buffer, 16 );
        strcat(temp2,buffer);

        daxie(temp2,strlen(temp2));//转换成大写
        strcat(temp3,temp2);
        strcat(temp2,temp1);

        cout<<"你的注册码:";//8c

        strncat(sn1,str,4);
        if(strlen(username)==1)
        {
                strcpy(sn2,temp);
                strcat(sn2,temp1);
                strcat(sn2,"268d5");
                strcpy(sn3,temp2);

                cout<<sn1<<"-"<<sn2<<"-"<<sn3<<endl;

        }
        if(strlen(username)==2)
        {
                strcpy(sn2,temp);
                strcat(sn2,"268d5");
                strcpy(sn3,temp2);

                cout<<sn1<<"-"<<sn2<<"-"<<sn3<<endl;

        }
        if(strlen(username)==3)
        {
                strncat(sn2,temp,4);
                strcat(sn2,"268d5");
                while(i<2)
                {
                        sn3[i]=temp[i+4];
                        i++;
                }

                strcat(sn3,temp1);

                cout<<sn1<<"-"<<sn2<<"-"<<sn3<<endl;

        }
        if(strlen(username)>=4)
        {
                strncat(sn2,temp,4);
                strcat(sn2,"268d5");
                while(i<4)
                {
                        sn3[i]=temp[i+4];
                        i++;
                }

                cout<<sn1<<"-"<<sn2<<"-"<<sn3<<endl;

        }
        system("pause");
        return 0;
}
编译平台XP SP2,VC.NET
写的很烂,请高手多多批评指正。


[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
高产啊   
2005-12-25 15:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大侠破解的注册很好用,可是这个软件每当输入的资料单据数超过两百就会提升所使用的是非法注册码!请注册!可能是著者专门设置的,请大侠再帮忙破解破解,谢谢!!!
2006-10-13 23:30
0
游客
登录 | 注册 方可回帖
返回
//