⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readkey.c

📁 电子注册密钥生成程序
💻 C
字号:
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>

void readser(void);
void readser1(void);

unsigned char	Buff[18]; 
unsigned int	keyrom[9]; 
unsigned int	sum,sumi,sumj; 
unsigned int	*pt= (unsigned int *)0xf000fff6; 
unsigned int	i=0,j=0,m;
unsigned char	p;
unsigned int	nn,nn1,nn2;
unsigned char	rbuff[100],cc,cc1,cc2;
int		fp;

void main(int argc,char *argv[])
{
	if(argc == 1)	/* 不带参数 */
	{
		/* 读机器中的注册密钥 */
		readser();
	}
	else if(strstr(argv[1],".EXE"))	/* 带.exe文件名参数 */
	{
		/* 读文件中的注册密钥 */
		strlwr(argv[1]); 
		if((fp=open(argv[1],O_RDWR | O_BINARY))==-1)
		{ 
			printf("File %s open error!",argv[1]); 
			exit(1);
		} 
		lseek(fp,0xf040L,SEEK_SET);	/* ROM 10个数据地址+200H  */
		read(fp,keyrom,0xaL); 		/* 读取数据  */
		readser1();					 
	}
	else	/* 带普通参数 */
	{
		/* 手工输入加密密钥 */
		scanf("%s",rbuff); 
		if(strlen(rbuff)!=20)
			return; 
		for(i=0;i<20;i++)
		{
			if((rbuff[i]>='a') && (rbuff[i]<='f'))
				rbuff[i]-= 0x57; 
			if((rbuff[i]>='A') && (rbuff[i]<='F'))
				rbuff[i]-= 0x37; 
			else if((rbuff[i]>='0') && (rbuff[i]<='9'))
				rbuff[i]-= 0x30;
			else
				return;
		}
		printf("num:"); 
		for(i=0;i<5;i++)
		{
			cc1=rbuff[i*4]&0xf; 
			cc2=rbuff[i*4+1]&0xf; 
			cc=(cc1<<4)|cc2; 
			nn1=(unsigned int)cc; 
			cc1=rbuff[i*4+2]&0xf; 
			cc2=rbuff[i*4+3]&0xf; 
			cc=(cc1<<4) | cc2; 
			nn2=(unsigned int)cc; 
			nn=(nn1<<8) | nn2; 
			keyrom[i]=nn; 
			printf("%04x",keyrom[i]); 
		}
		printf("\n"); 
		sum=0x2020; 
		for(sumj=0;sumj<4;sumj++)	/* 形成16位密钥 */
		{
			for(sumi=0;sumi<5;sumi++) 
				sum-=keyrom[sumi];
			sum^=0x0404<sprintf(Buff+4*sumj,"%04x",sum); 
		}
		printf(Buff); 
	}
	getch();
}

void readser(void) 
{ 
	sum=0x2020; 
	for(sumj=0;sumj<4;sumj++)	/* 形成16位密钥  */
	{
		for(sumi=0;sumi<5;sumi++) 
			sum-=(*(pt+sumi)-0x2020);
		sum^=0x0404<sprintf(Buff+4*sumj,"%04x",sum); 
	} 
	printf(Buff); 
}

void readser1(void) 
{ 
	sum=0x2020; 
	for(sumj=0;sumj<4;sumj++)	/* 形成16位密钥 */
	{
		for(sumi=0;sumi<5;sumi++) 
			sum-=keyrom[sumi];
		sum^=0x0404<sprintf(Buff+4*sumj,"%04x",sum); 
	} 
	printf(Buff); 
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -