客户端(C):
/*Copyright check frame written by Radish.ghost Jan.2015*/#include<stdio.h>#include<windows.h>#include <urlmon.h>#ifdef C#define bool int //C hesn't bool type#endif#pragma comment(lib, "urlmon.lib")#ifndef USETIMES#define USETIMES 50 //How many times can use#endifchar*getinf();//Get the disk informationbool check1();//Connect serverint check2();//Check the fileint main(){check1();check2();if(check2())printf("You can use it!(%d times)\n",check2());else {printf("You can't use it!\n");exit(0);}/*<img src="http://img.blog.csdn.net/20150130120314717?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE3NTQ0MDY2MTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">Your code here!*/return 0;}char*getinf(){ char buf[MAX_PATH]; DWORD Ser; DWORD Length; char tmp[100];int flag=0;GetVolumeInformation("C:\\",NULL,MAX_PATH,&Ser,&Length,NULL,NULL,MAX_PATH); //Ser为long 要转换成一个能用的字符串while(Ser)//Convert long to char*{ tmp[flag++]=(char)(Ser%10+'0'); Ser/=10;}tmp[flag]='\0';return tmp; }bool check1(){ char *ur=getinf(); char url[100]="http://localhost/bq.php?M="; strcat(url,ur); if(URLDownloadToFile(0,url,"c:\\a",0,NULL))return 1; else return 0;}int check2(){ int times; freopen("c:\\a","r",stdin); scanf("%d",×); if(times>(-1*USETIMES+50))return times; else return 0;}</urlmon.h></windows.h></stdio.h>
<?php /*在线版权验证*/Header("Content-type: text/plain"); $M=$_GET['M'];//获取硬盘序列号if(!file_exists($M)){ file_put_contents($M,"50"); echo '50';}else{ $times=file_get_contents($M); unlink($M); file_put_contents($M,$times-1); echo $times;}?>