Вам нужно выполнять те шаги, которые я описал в первом сообщениДа, большое спасибо, - это я уже понял и с зацикливанием и пересылкой данных из регистра куда-нибудь в "кучу" откуда его можно будет забрать - и то, что тут будут сложности, связанные с "мусором" в этом регистре, если считывать в нем в рандомный момент времени и т.
Вы скомпилируете библиотеку с функцией,
#include <stdio.h>
long Get_rdi() {
register long x asm("rdi");
long y = *(&x);
return y;
}
Либо, альтернативный вариант: вручную проанализировать код программы
Вам нужно отлаживать этот процесс.
register long x asm("rdi");
xml с сигнатуройО! ничего даже не слышал про подобное - уже побежал изучать
В общем стоит к этому подходить аккуратно дабы не получить один и тот же hardware_id для всех windows sandbox например
public CompKey() {
Dictionary<string, string> ids =
new Dictionary<string, string>();
ManagementObjectSearcher searcher;
//процессор
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Processor");
foreach(ManagementObject queryObj in searcher.Get())
ids.Add("ProcessorId", queryObj["ProcessorId"].ToString());
//мать
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM CIM_Card");
foreach(ManagementObject queryObj in searcher.Get())
ids["MotherBoard"] = queryObj["Product"].ToString()+" "
+ queryObj["SerialNumber"].ToString();
//клавиатура
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM CIM_KeyBoard");
foreach(ManagementObject queryObj in searcher.Get())
ids["KeyBoardID"]= queryObj["DeviceId"].ToString();
//ОС
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM CIM_OperatingSystem");
foreach(ManagementObject queryObj in searcher.Get())
ids.Add("OSSerialNumber", queryObj["SerialNumber"].ToString());
//мышь
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PointingDevice");
foreach(ManagementObject queryObj in searcher.Get())
ids["MouseID"]= queryObj["DeviceID"].ToString();
//звук
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_SoundDevice");
foreach(ManagementObject queryObj in searcher.Get())
ids["SoundCardID"]= queryObj["DeviceID"].ToString();
//CD-ROM
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_CDROMDrive");
foreach(ManagementObject queryObj in searcher.Get())
ids["CDROMID"]= queryObj["DeviceID"].ToString();
//UUID
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT UUID FROM Win32_ComputerSystemProduct");
foreach(ManagementObject queryObj in searcher.Get())
ids["UUID"]= queryObj["UUID"].ToString();
var sb = new StringBuilder();
foreach(var x in ids)
sb.Append( x.Key + ": " + x.Value + "\r\n");
key = sb.ToString();
}
var leader = new Func<Entity>(() => {
var lui = ui as UI; var l = lui.leader; return (l == null || l.Owner == null || !l.Owner.IsValid || lui.b_leader_dead) ? null : lui.leader.Owner; })();
настрой отступ в два пробела ))
var lui = ui as UI; var l = lui.leader; var leader = (l == null || lui.b_leader_dead || !l.isValid)? null : l.Owner;
что такое ui?
почему ты хочешь от них избавится?
Так у меня и так это уже DLl которая тянет данные из базы данных. В зависимости от полномочий пользователя, она использует разные струкруты(отличаются овсетами) и возвращает соответсвующие результаты.
Важна максимальная производлительность(поэтому и используется готовые структуры а не единичные вызовы) и в тоже время желательно защитить эти овсеты.
Не понимаю что тут можно зашифровать - не могли бы чуть подробнее описать технологию прослойки.
Возможно она имеет какоето название, по которому можно погуглить - я просто не в теме алгоритмов шифрования от слова савсем