从网上下了个工具 Newsid 这个工具能把计算机的sid取出来,我想知道是怎么取的?

解决方案 »

  1.   

    我想要的是计算机sid,你的合集贴里好像没有啊取CPUID现在好多主板都不让取
      

  2.   

    注册表里
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
      

  3.   

    真的不知道计算机sid(难道是主机序列编号?)和用户sid的区别
    楼主顺便扫下盲吧。
      

  4.   

    各位去下一个Newsid这个工具就知道了
      

  5.   

    http://bbs.51cto.com/topic/thread-202076.html
      

  6.   

    NewSID 首先读取现有计算机 SID。计算机的 SID 存储在注册表的 SECURITY\SAM\Domains\Account 下的 SECURITY 配置单元中。此项包含一个名为 F 的值和一个名为 V 的值。V 值是一个将计算机 SID 嵌入到其数据末尾的二进制值。NewSID 能够确保此 SID 具有标准格式(三个 32 位子颁发机构位段的前面带有三个 32 位颁发机构位段)。
    以上摘自微软的http://technet.microsoft.com/zh-cn/sysinternals/bb897418(en-us).aspx
    你可能在regedit下权限不够,导致看不到或者不能访问这个键。你可以右击HKEY_LOCAL_MACHINE\SECURITY把“读写控制”选为允许,然后刷新下注册表,就能找到HKEY_LOCAL_MACHINE\SECURITY\SAM\Domains\Account,然后开打V值就能找到了。
    给你帖一段逆向的NewSID代码void *__cdecl sub_4031E0()
    {
      void *v0; // ebp@1
      void *result; // eax@2
      void *v2; // edi@3
      void *v3; // esi@3
      const void *v4; // eax@5
      const void *v5; // esi@7
      HKEY phkResult; // [sp+Ch] [bp-Ch]@1
      DWORD Size; // [sp+10h] [bp-8h]@3
      DWORD Type; // [sp+14h] [bp-4h]@3  v0 = (void *)sub_401740(HKEY_LOCAL_MACHINE, L"SOFTWARE", 4u);
      if ( RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SECURITY\\SAM\\Domains\\Account", &phkResult) )
      {
        MessageBoxW(0, L"NewSID was unable to access the\nComputer's SID.", L"NewSID", 0x10u);
        result = 0;
      }
      else
      {
        v2 = (void *)sub_401690(phkResult);
        sub_4016F0(HKEY_LOCAL_MACHINE, L"SECURITY\\SAM\\Domains\\Account", v0, &phkResult);
        Size = 0;
        RegQueryValueExW(phkResult, L"V", 0, &Type, 0, &Size);
        v3 = malloc(Size);
        if ( RegQueryValueExW(phkResult, L"V", 0, &Type, (LPBYTE)v3, &Size) )
        {
          sub_4016F0(HKEY_LOCAL_MACHINE, L"SECURITY\\SAM\\Domains\\Account", v2, &phkResult);
          MessageBoxW(0, L"NewSID was unable to access the\nComputer's SID.", L"NewSID", 0x10u);
          result = 0;
        }
        else
        {
          sub_4016F0(0, 0, v2, &phkResult);
          RegCloseKey(phkResult);
          v4 = (const void *)sub_403130(v3, Size);
          if ( v4 )
          {
            v5 = v4;
            result = v0;
            memcpy(&dword_42C488, v5, 0x18u);
          }
          else
          {
            MessageBoxW(0, L"NewSID does not understand the format of\nthe Computer's SID.", L"NewSID", 0x10u);
            result = 0;
          }
        }
      }
      return result;
    }
    bool __cdecl sub_4016F0(HKEY hKey, LPCWSTR lpSubKey, PSECURITY_DESCRIPTOR pSecurityDescriptor, PHKEY phkResult)
    {
      bool result; // eax@2  if ( RegSetKeySecurity(*phkResult, 4u, pSecurityDescriptor) )
      {
        result = 0;
      }
      else
      {
        if ( hKey )
        {
          RegCloseKey(*phkResult);
          result = RegOpenKeyW(hKey, lpSubKey, phkResult) == 0;
        }
        else
        {
          result = 1;
        }
      }
      return result;
    }
      

  7.   


    您好,
    由于您长时间不结贴,上一次答复已超一个月并且已有最佳答案,本人帮你结贴。
    若是觉得答案不嘉,请放在本版的疑难杂症帖链接:
    http://bbs.csdn.net/topics/390351579。
    如果您有什么意见,请您联系我。