Das ist ein relativ guter Kopierschutz. Du musst es nur so im Programm verstecken, dass es nicht so leicht gefunden und gepatcht werden kann
WINDOWS Programmierbeispiel C++
Code:
// DriveInfo_1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#define INFOBUF_SIZE 256
int main(int argc, char* argv[])
{
char drives[INFOBUF_SIZE];
char volumeName[INFOBUF_SIZE], fileSystem[INFOBUF_SIZE];
unsigned long serialNumber;
GetLogicalDriveStrings(INFOBUF_SIZE, drives);
const char *ptr = drives;
while( *ptr != '\0' ) {
unsigned int driveType = GetDriveType(ptr);
if( driveType != DRIVE_REMOVABLE &&
driveType != DRIVE_CDROM )
{
GetVolumeInformation(ptr, volumeName, INFOBUF_SIZE, &serialNumber, 0, 0,fileSystem, INFOBUF_SIZE);
printf("drive = %s, ", ptr);
printf("volumneName = %s, ", volumeName);
printf("fileSystem = %s", fileSystem);
printf("Serial = %X\n", serialNumber);
}
ptr = strchr(ptr, '\0');
ptr += 1;
}
return 0;
}
DOS Programmierbeispiel in C
Code:
#include <dos.h>
#include <stdio.h>
void main(void)
{
typedef struct {
unsigned short info_level;
unsigned long disk_serial_number;
unsigned char volume_label[11];
unsigned char filesystem[8];
}DISK_INFO;
union REGS inregs, outregs;
struct SREGS segregs;
DISK_INFO disk;
inregs.h.ah = 0x69;
inregs.h.al = 0x00;
inregs.h.bl = 0x03; /* Drive C: */
inregs.x.dx = FP_OFF(&disk);
segregs.ds = FP_SEG(&disk);
int86x(0x21, &inregs, &outregs, &segregs);
printf("Serial Number: %lX\n", disk.disk_serial_number);
}
Quelle: http://www.cpe.mut.ac.th/Question.asp?GID=1120
Im DOS-Fenster kannst du auch mit dem Kommando dir /p die Seriennummer der Festplatte abfragen. Das DIR Programm gibt sie gleich ganz oben in der ersten oder zweiten Zeile aus.
Lesezeichen