Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Реестр Windows 2000 / Windows XP [3]

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

SHANDLE

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
 
void GetKey()
{
  TCHAR szKey[32];
  memset(szKey, 0, sizeof(szKey));
 
  LPCTSTR lpCharSet = _T("BCDFGHJKMPQRTVWXY2346789");
  LPCTSTR lpKey = _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
  LPCTSTR lpValue = _T("DigitalProductId");
 
  HKEY hKey;
  LONG hr = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpKey, 0, KEY_READ, &hKey);
  if (hr == ERROR_SUCCESS)
  {
// Определение размера данных "DigitalProductId"
    DWORD cbData;
    RegQueryValueEx(hKey, lpValue, 0, 0, 0, &cbData);
    PBYTE pData = (PBYTE)LocalAlloc(LPTR, cbData);
 
    if (pData)
    {
// Чтение данных "DigitalProductId"
      hr = RegQueryValueEx(hKey, lpValue, 0, 0, pData, &cbData);
      if (hr == ERROR_SUCCESS)
      {
        PBYTE pCryptedKey = &pData[52];
        int nCount = 24;
 
// расшифровка ключа
        __asm
        {
          push  edi;
          push  esi;
          push  ecx;
Loop_1:
          xor   ecx,  ecx;
          mov   edi,  0Eh;
          mov   esi,  pCryptedKey;
Loop_2:
          xor   edx,  edx;
          mov   eax,  2AAAAAABh;
          mov   dl,   byte ptr [esi+edi];
 
          shl   ecx,  8;
          add   ecx,  edx;
          imul  ecx;
          sar   edx,  2;
          mov   eax,  edx;
          shr   eax,  1Fh;
          add   edx,  eax;
          mov   eax,  ecx;
          mov   byte ptr [esi+edi], dl;
          mov   ecx,  18h;
          cdq;
          idiv  ecx;
          dec   edi;
          mov   ecx,  edx;
          jns   Loop_2;
 
          mov   eax,  lpCharSet;
          lea   esi,  szKey;
#ifdef _UNICODE
          mov   dx, word ptr [eax][2*ecx];
          mov   ecx,  nCount;
          mov   word ptr [esi][2*ecx], dx;
#else
          mov   dl, byte ptr [eax][ecx];
          mov   ecx,  nCount;
          mov   byte ptr [esi][ecx], dl;
#endif
          dec   ecx;
          mov   nCount, ecx;
          jns   Loop_1;
 
          pop   ecx;
          pop   esi;
          pop   edi;
        }
 
        TRACE(_T("Key is: %.5s-%.5s-%.5s-%.5s-%.5s\n\n"),  
          &szKey[0],
          &szKey[5],
          &szKey[10],
          &szKey[15],
          &szKey[20]);
      }
      LocalFree(pData);
    }
    RegCloseKey(hKey);
  }
}
 


Всего записей: 928 | Зарегистр. 19-01-2007 | Отправлено: 13:42 09-10-2008
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Реестр Windows 2000 / Windows XP [3]


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru