UA_Freeman |
Отправлено: 29.06.2004, 09:34 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
Кто-нибудь знает, как привязать свою прогу к определённой машине- по сути вычитать серийный винта или проца или мамки?
Возможно, кто-то знает линк на готовою библиотеку? |
|
Shura |
Отправлено: 29.06.2004, 12:10 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
полазий по http://wasm.ru там такое должно быть |
|
exp |
Отправлено: 29.06.2004, 23:02 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Такой вопрос уже был когда-то недавно. Поищи в предыдущих вопросах.
|
|
Samual |
Отправлено: 03.07.2004, 22:30 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
Да вопрос был, но нормальный ответ на него так никто и не дал. |
|
PeroManiak |
Отправлено: 04.07.2004, 01:06 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 71
|
Как определить тактовую частоту — известно:
CODE |
double CPUSpeed(void)
{
DWORD dwTimerHi, dwTimerLo;
asm
{
DW 0x310F
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}
Sleep (500);
asm
{
DW 0x310F
sub EAX, dwTimerLo
sub EDX, dwTimerHi
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}
return dwTimerLo/(1000.0*500);
}
|
Было выложено на sources.ru
Дело в другом: Запусти ее несколько раз — посмотри на результат.
Как прочитать FCC харда — действительно интересно, но вразумительного я еще ничего не видел.
Отредактировано PeroManiak — 04/07/2004, 02:09
|
|
Deem |
Отправлено: 05.07.2004, 09:14 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Привяжись к номеру кластера exe-файла. Тока юзерам скажи: вот все проги запускайте, а defrag — ни-ни.
|
|
TiGeR |
Отправлено: 05.07.2004, 21:09 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
В Delphi вот так узнать сирийник винта я так обычно и делаю
function GetSerialNum(D: String): String;
var
SerialNum: PDword;
A, B : Dword;
Buffer : Array [0..255] of Char;
begin
New(SerialNum);
if GetVolumeInformation(PChar(D + ':\'), Buffer, SizeOf(Buffer),
SerialNum, A, B, Nil,0) then
Result := IntToStr(SerialNum^);
Dispose(SerialNum);
end;
на C++ Builder неохота переводить
В прицепе тута всё ясно работает функция Windows API GetVolumeInformation |
|
PeroManiak |
Отправлено: 06.07.2004, 02:32 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 71
|
QUOTE (Deem @ 05/07/2004, 10:16) | Привяжись к номеру кластера exe-файла. Тока юзерам скажи: вот все проги запускайте, а defrag — ни-ни. |
Можно, например, сделать exe'шник системным файлом, чтобы он типа зелененьким отображался , или стал неперещаемым файлом? И как привязать exe'шник к номеру кластера? КОД, Plz.
|
|
AVC |
Отправлено: 06.07.2004, 08:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
2TiGeR обратите внимание, что фукция возвращает не серийный номер винта а серийный номер тома, получаемый при форматировании (подделать не очень сложно)
Перевод для C
CODE |
int __fastcall GetVolumeSerNum (char disk_letter)
{
AnsiString droot = AnsiString(disk_letter) + ":\\";
char buf[256];
char fsname[64];
unsigned long sernum, clen, fsflg;
if (!GetVolumeInformation(droot.c_str(), buf, sizeof(buf), &sernum, &clen, &fsflg, fsname, sizeof(fsname))) sernum = 0; // error
return sernum;
}
|
Отредактировано AVC — 06/07/2004, 08:50 |
|
Георгий |
Отправлено: 06.07.2004, 11:58 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
Ключ на usb или lpt
а все остальные способы, на мой взгляд, не серьёзные — как пример можно вспомнить Microsoft и её способ "активации" винды |
|
Guest |
Отправлено: 06.07.2004, 12:52 |
|
Не зарегистрирован
|
GetVolumeInformation вообще не катит, ведь его подделать вообще легко.
Неужели нет нормального способа вычитать серийник винта? |
|
UA_Freeman |
Отправлено: 06.07.2004, 12:58 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
QUOTE (Guest @ 06/07/2004, 12:54) | GetVolumeInformation вообще не катит, ведь его подделать вообще легко.
Неужели нет нормального способа вычитать серийник винта? |
Это был я |
|
TiGeR |
Отправлено: 06.07.2004, 22:58 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
А в принчипе да если есть другой способ киньте мне на мыло eminazizov@nm.ru |
|
TiGeR |
Отправлено: 06.07.2004, 23:09 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
А если узнать сирийник BIOS :-)
function GetBiosNumber: string;
begin
result := string(pchar(ptr($FEC71)));
end;
|
|
UA_Freeman |
Отправлено: 07.07.2004, 09:38 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
QUOTE | := string(pchar(ptr($FEC71))); |
под NT это гарантированный access violation |
|
Георгий |
Отправлено: 07.07.2004, 09:56 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
CODE | function GetBiosNumber: string;
begin
result := string(pchar(ptr($FEC71)));
end;
| в NT не работает
Отредактировано Георгий — 07/07/2004, 10:59 |
|
Gedeon |
Отправлено: 07.07.2004, 12:57 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Собственно вот и там по ссылкам
http://borland.xportal.ru/forum/viewtopic.php?t=10693&
|
|
Хлор |
Отправлено: 19.08.2004, 05:10 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 78
|
Доброго времени суток....
Ну про индентификацию винта, есть кусок кода из старой досовской программулины, которая определяет физ. данные винта не зависящие от данных BIOS. Тут серийник определяется тот, который выцарапан на винте )). Правда кусок под дос....
union {
int infs[256];
struct
{ int Config;
int Cyls, Rsrv1, Heads, BPT, BPS, SPT;
int Vendor[3]; //Производитель
char Serial[20]; //Серийный номер. 0=нет.
int BufType; //тип буффера
int BufSize; //размер буффера в 512 байтных блоках. 0=нет.
int ECC;
char Revision[8];
char Model[40]; //Номер модели. 0=нет.
int Features; //ЗАрезервировано.
int DwordIO;
int Capabil;
int Rsrv2; //Зарезервировано
int PIO, DMA;
int ExtValid;
//Логические характеристики
int CurrCyls, CurrHeads, CurrSect;
long Capacity; //Колличество секторов
int BlkMode;
long LBACapacity;
int SingleDMA;
int MultiDMA;
int AdvancedPIO;
int MinDMACycle, RecDMACycle, MinPIOCycle, MinIORDYPIOCycle;
} su;
}um;
void init_hd1(void)
{
int BasePort=0x1f0;
long tt,i;
tt = biostime(0,0);
outportb(BasePort+6,0xA0);
outportb(BasePort+7,0xEC);
while((inportb(BasePort+7)&0x80)!=0)
if((biostime(0,0)-tt)>5) break;
for(i=0;i<255;i++)
um.infs[i]=inport(BasePort);
}
|
|
Георгий |
Отправлено: 19.08.2004, 08:56 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
в том то и проблема, что использовать этот кусок под winNT несколько проблематично |
|
Gedeon |
Отправлено: 19.08.2004, 11:50 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
М-да, господа, все таки не пойму я этого стремления привязать прогу к тачке? Все таки обьясните зачем? Если она продается кому-либо с кем далее сотрудничаем, привязка, тупо, например к имени компа, мак адресу сетевухи, тому же номеру тома и т.д. Подделать можно, я тока сомневаюсь, что кто-то будет время тратить на это, подделать м. когда знаешь, что подделывать, а так времени потерять немеряно, никого не хочу обижать, но что-то очень я сомневаюсь в написании самостоятельно такого продукта, которого бы было недостаточно на одном компе и на который не жалко бы времени было потратить, чтобы взломать. 1С, те же мелкомягкие как пример невозможности такой привязки, да и не зачем на мой взгляд.
|
|
Konstantine |
Отправлено: 19.08.2004, 12:04 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
привязать ко всему тому к чему несложно: № томов винта, версия Винды, МАК адрес и т.д., но главное не растространять инфу к чему именно сделана привязка. А кто может сам разобраться, то скорее всего ему не будет смысла этого делать (если это не к-нибудь супер-прога)
|
|
UA_Freeman |
Отправлено: 19.08.2004, 12:20 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
QUOTE | очень я сомневаюсь в написании самостоятельно такого продукта, которого бы было недостаточно на одном компе и на который не жалко бы времени было потратить, чтобы взломать |
Ну вот не надо не надо, типа, мы все лохи и ничего не умеем, а они все крутые хацкеры и твою прогу поломают в два счёта!
А реально в нашем маленьком городке большой спрос на одну программулину, которая стоит $30-50, ломать её никто просто не возьмётся, но и платить не станут, если её можно будет просто скопировать. А триал обойдёт даже последний ламер, не годится
|
|
Konstantine |
Отправлено: 19.08.2004, 14:23 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
так Я и говорю, сделай кучу простых привязок, а сам кинь слух о самой супер-пупер защите — там попробуют — не получится. все привязки трудно отыскать.
Кстати можно ещё привязать к дате/времени директории Windows и перечню оборудования из реестра.
Ещё советую проверки на привязки писАть в разных местах программы. а не только при загрузке, причём в случае обнаружения несанкционированного копирования выдавать "левую" ошибку (напр. — типа мозгов не хватает), но так чтоб ТЫ узнавал текст этой ошибки (чтоб был ПОХОЖ на системные но не одинаков с ними)
|
|