能力值:
( LV2,RANK:10 )
|
-
-
26 楼
好文章,通过本人的学习,跟踪,终于搞定了!不过15.0版本的算法作者有所变化了!机器码是10位也行!
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
123456789*9=1111111101
请问楼主是如何找到关键跳“0043C6BF . E8 CC010000 call 0043C890”的?
楼主所说的“任意点开一个“恭喜你”向上慢慢追踪,发现好多重复CALL和代码,找到“0043C6BF . E8 CC010000 call 0043C890””,怎么个找法,说来分享一哈!
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
收藏了,慢慢学习
|
能力值:
( 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);
}
|
能力值:
( LV3,RANK:20 )
|
-
-
30 楼
早知道楼主kegen都出了,就不去爆它了,我爆了好久才搞定,楼主给力啊
|