ايران ويج

نسخه‌ی کامل: تغییرشماره سریال درایوها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
این روزها اکثر شرکتهای نرم افزاری روی سی دی های خودشون قفل تلفنی می زارن. طریقه عمل این قفل ها به این شکله که شماره سریال یکی از درایوها رو می خونن ( اکثرا درایو C: ) و بعد اون رو به شماره رمزی تبدیل می کنن و طبق اون شماره رمز و شماره سی دی ، شماره فعال سازی رو صادر می کنن.
حالا سوال اینجاست آیا می شه شماره سریال درایوها رو به طریقی عوض کرد؟ (همونطور که می دونید شماره سریال درایو با فرمت کردن عوض می شه یعنی قابل تعویض هست.)
و سوال دیگه اینه که چطور می شه شماره سریال خود هارد دیسک یا مادربورد یا سی پی یو یا ... رو خوند ؟ من کدهایی توسط C و دلفی پید کردم ولی برای ویژوال بیسیک نبود...
سلام.
برای استخراج اطلاعات سخت افزاری تو VB می تونی از این OCX استفاده کنی.
یه فایل راهنما و دوتا Dll هم تو خودش هست.
کار کردن باهاش راحته و اطلاعات نسبتا جامعی از سخت افزار سیستم بهت می ده.
خیلی ممونم mbza11 جان . قبلا از این استفاده کرده بودم ولی روی سیستم من اطلاعات کافی نمی داد . مثلا پروسسور آی دی یا هارد دیسک سریال....
خوب نظرت در مورد تغییر سریال درایوها چیه؟؟ باید کار آسونی باشه اگه راهش رو بلد باشیم.
سلام.
من زبان C و ++C رو خیلی خوب بلد نیستم. حالا اگه می تونی این رو به VB تبدیل کنی، خیلی خوبه.
کد:
void CVolumeSerialDlg::ChangeSerialNumber(DWORD Drive,
  const DWORD newSerial)
{
struct partial_boot_sector_info
{
   LPSTR Fs; // file system name
   DWORD FsOffs; // offset of file system name in the boot sector
   DWORD SerialOffs; // offset of the serialnumber in the boot sector
};

partial_boot_sector_info pbsi[3] =
{
  {"FAT32", 0x52, 0x43},
  {"FAT",   0x36, 0x27},
  {"NTFS",  0x03, 0x48}
};

const max_pbsi = sizeof(pbsi)/sizeof(partial_boot_sector_info);

HANDLE hDrive;
TCHAR szDrive[12];
char Sector[512];
DWORD i;

_stprintf(szDrive, _T("\\\\.\\%c:"), Drive & 0xFF);

// Open the drive
hDrive = ::CreateFile(
   szDrive,
   GENERIC_READ | GENERIC_WRITE,
   FILE_SHARE_READ | FILE_SHARE_WRITE,
   NULL,
   OPEN_EXISTING,
   0,
   NULL);

if (hDrive == INVALID_HANDLE_VALUE)
{
   ShowErrorString(::GetLastError());
   return;
}

// read the sector
if (!::ReadFile(hDrive, Sector, 512, &i, NULL))
{
   ShowErrorString(::GetLastError());
   goto clean_exit;
}

// try to search for a valid boot sector
for (i=0;i<max_pbsi;i++)
{
   if (strncmp(pbsi[i].Fs, Sector+pbsi[i].FsOffs,
     strlen(pbsi[i].Fs)) == 0)
   {
     // we found a valid signature
     break;
   }
}

if (i >= max_pbsi)
{
   MessageBox(_T("Cannot change serial number of this file system!"),
       _T("Error"), MB_ICONERROR);
   goto clean_exit;
}

// patch serial number
*(PDWORD)(Sector+pbsi[i].SerialOffs) = newSerial;

// Go to boot sector again
SetFilePointer(hDrive, 0, NULL, FILE_BEGIN);

// write boot sector
if (!::WriteFile(hDrive, Sector, 512, &i, NULL))
{
   ShowErrorString(::GetLastError());
   goto clean_exit;
}

clean_exit:
CloseHandle(hDrive);
سلام.
ببین یه همچین برنامه ای می خوای:
سلام
این برنامه رو نگاه کن ببین به دردت میخوره
برای شماره سریال هارد
شماره سریال درایو ها Clap
اين ها همه سريال درايو رو نشون ميدن که برای ساختن زيپ کد اصلاً معتبر نيستند.
با اين کد ميتونيد سريال ها رو به دست بياريد.
دستتون درد نکنه واقعا زحمت کشیدید!
فقط نمی دونم چرا تا الان این پستها رو ندیده بودم!!
البته همون موقع هم چند تا برنامه و سورس به زبان C پیدا کردم که تونست کارم رو راه بندازه ولی سورس وی بی که آقا محسن گذاشته خیلی عالیه!!
خب حالا چه جوری می شه تغییرش داد؟
سلام
با این برنامه می شه VolumeSerial
صفحه‌ها: 1 2