首页
社区
课程
招聘
[原创]一款网页模板小偷软件的注册分析(算法+注册机源码)
发表于: 2012-1-1 00:53 23389

[原创]一款网页模板小偷软件的注册分析(算法+注册机源码)

2012-1-1 00:53
23389
收藏
免费 6
支持
分享
最新回复 (29)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
好文章,通过本人的学习,跟踪,终于搞定了!不过15.0版本的算法作者有所变化了!机器码是10位也行!
2012-4-10 20:28
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
123456789*9=1111111101

请问楼主是如何找到关键跳“0043C6BF   .  E8 CC010000   call    0043C890”的?

楼主所说的“任意点开一个“恭喜你”向上慢慢追踪,发现好多重复CALL和代码,找到“0043C6BF   .  E8 CC010000   call    0043C890””,怎么个找法,说来分享一哈!
2012-4-11 09:21
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
收藏了,慢慢学习
2012-4-20 10:23
0
雪    币: 106
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
29
那个ID为1111111101是因为vista和win7下没admin权限,管理员身份运行就OK

补全本帖,机器码生成如下:
char* GetMCode()
{
	DWORD FAddr,FAddr1,FSum=0;
	int sum;
	char code[255];
	HANDLE hDevice=NULL;
    hDevice=::CreateFileA("\\\\.\\PHYSICALDRIVE0",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL,NULL); 
    if(!hDevice) 
        hDevice=::CreateFileA("\\\\.\\SCSI0",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL); 
	if (hDevice == INVALID_HANDLE_VALUE)
    {
        return NULL;
    }

	
    /*读取物理硬盘版本类型:SMART_GET_VERSION,*/
    DWORD dwBytesReturned=0; 
    GETVERSIONINPARAMS gVersionParsams; 
    memset(&gVersionParsams,0,sizeof(GETVERSIONINPARAMS)); 
	
    /*获取硬盘版本号*/
    if(!DeviceIoControl(hDevice,SMART_GET_VERSION,NULL,NULL,&gVersionParsams,sizeof(GETVERSIONINPARAMS),&dwBytesReturned, NULL) 
        || dwBytesReturned==0 || gVersionParsams.bIDEDeviceMap <= 0) 
    { 
        ::CloseHandle(hDevice);
        return NULL; 
    }
    /*读取硬盘信息命令:SMART_RCV_DRIVE_DATA*/
    SENDCMDINPARAMS scip;     
    memset(&scip,0,sizeof(SENDCMDINPARAMS)); 
    scip.cBufferSize=IDENTIFY_BUFFER_SIZE; 
    scip.irDriveRegs.bSectorCountReg=1; 
    scip.irDriveRegs.bSectorNumberReg=1; 
    scip.irDriveRegs.bDriveHeadReg=0xA0; 
    scip.irDriveRegs.bCommandReg=0xEC; 
	
    BYTE btBuffer[1024]; 
    memset(btBuffer,0,1024); 
	
    if(!DeviceIoControl(hDevice,SMART_RCV_DRIVE_DATA,&scip,sizeof(SENDCMDINPARAMS), 
        btBuffer,1024,&dwBytesReturned,NULL)) 
    { 
        ::CloseHandle(hDevice);
        return NULL; 
    }
	_asm
	{
		pushad
		lea eax,btBuffer
		mov FAddr,eax
		popad
	}
	FAddr1=FAddr+0x10;
	DWORD i=0x2E-0x1B+0x1;
	_asm{
			pushad
			mov ecx,i
			mov eax,FAddr1
		l1:
			xor ebx,ebx
			mov bx,word ptr [eax+0x1B*2]
			add FSum,ebx
			add eax,0x2
			dec ecx
			jne l1
			popad
	}	
	FAddr1=FAddr+0x10;
	i=0x1A-0x17+0x1;
	_asm{
			pushad
			mov ecx,i
			mov eax,FAddr1
		l2:
			xor ebx,ebx
			mov bx,word ptr [eax+0x17*2]
			add FSum,ebx
			add eax,0x2
			dec ecx
			jne l2
			popad
	}

	FAddr1=FAddr+0x10;
	i=0x13-0xA+0x1;
	_asm{
			pushad
			mov ecx,i
			mov eax,FAddr1
		l3:
			xor ebx,ebx
			mov bx,word ptr [eax+0xA*2]
			add FSum,ebx
			add eax,0x2
			dec ecx
			jne l3
			popad
	}
	FAddr1=FAddr+0x10;
	_asm{
			mov esi,FAddr1
			pushad
			mov ax,word ptr [esi+0xC]
			mov bx,word ptr [esi+0x6]
			mov cx,word ptr [esi+0x2A]
			mov dx,word ptr [esi+0x2]
			add eax,ebx
			add eax,ecx
			add eax,edx
			shl eax,0x10
			add FSum,eax
			popad
	}
	if (FSum & 0x80000000)
	{
		FSum=0xFFFFFFFF-FSum;
		FSum++;
	}
	float DSum=(float)FSum*0x9;
	sum=(int)DSum;
	sprintf(code,"%f",DSum);
	memset(strchr(code,'.'),'\0',sizeof(strchr(code,'.')));
	printf("\t\t\t   本机机器码:%s\n\n",code);	
}
2012-4-20 10:51
0
雪    币: 190
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
30
早知道楼主kegen都出了,就不去爆它了,我爆了好久才搞定,楼主给力啊
2013-1-8 10:17
0
游客
登录 | 注册 方可回帖
返回
//