【破文标题】里诺进销存管理软件 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
写的很烂,请高手多多批评指正。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课