Работая над программой в C#, решил привязать на всякий случай программу к определенной винде по ее SID, чтобы никто не утащил. Но вот в чем проблема, как бы я не старался мою программу всегда можно разобрать Reflector`ом и, убрав привязку, собрать заного. Появилась идея сделать эту проверку в dll`ке написанной на другом языке, например на C++. Т.е. сделать функцию которая при удачной проверке вернет определенную строку, при неудаче вернет null, а значение этой строки будет жизненно необходимо для работы программы.
На C# это выглядит примерно так:
Код:
using System.Security.Principal;
namespace Securenamespace
{
public class Secureclass
{
private string Secure()
{
string code = "";
WindowsIdentity wid = WindowsIdentity.GetCurrent();
code = wid.User.Value;
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(code);
bs = x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2"));
}
code = s.ToString();
if (code == "...") { return "..."; } else { return null; }
}
}
}
В моем примере SID еще и шифруется MD5 методом. Помогите изобразить dll`ку на C++.