Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
#1

Привязка программы по ID процесса - C++

22.01.2012, 15:40. Просмотров 2459. Ответов 19
Метки нет (Все метки)

Вот что смог нарыть на англо язычных порталах.
Но не понятно как сделать проверку этого ID в самой программе.

Переменная:
C++
1
char cpuBrand[13]
И так, вот программное название процессора:
C++
1
2
3
4
5
6
7
8
9
10
11
"AuthenticAMD" это AMD
"CentaurHauls" это Centaur
"CyrixInstead" это Cyrix
"GenuineIntel" это Intel
"GenuineTMx86", "TransmetaCPU" это Transmeta
"Geode by NSC" это National Semiconductor
"NexGenDriven" это NexGen
"RiseRiseRise" это Rise
"SiS SiS SiS " это SiS
"UMC UMC UMC " это UMC
"VIA VIA VIA " это VIA
Получение ID процессора:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define cpuid  __asm _emit 0x0F __asm _emit 0xA2
 
    UINT cpuInfo = 0;// to get params
 
    __asm
      {
           xor eax, eax
           cpuid
           mov dword ptr cpuBrand,ebx 
           mov dword ptr cpuBrand+4,edx 
           mov dword ptr cpuBrand+8,ecx
           mov eax, 1
           cpuid
           mov cpuInfo,eax
    }
 
    UINT cpuModel = ((cpuInfo & 0x000000F0) >> 4);
Вывод в текст:
C++
1
2
3
char procinfo[30] = {0};
sprintf(procinfo,"Brand : %s  Model: %d",cpuBrand,cpuModel);
MessageBoxA(NULL,procinfo,"Proc Info",0);
Заранее спасибо

Добавлено через 1 час 29 минут
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2012, 15:40     Привязка программы по ID процесса
Посмотрите здесь:
Защита программы от остановки процесса C++
Разработка программы автоматизации планирования учебного процесса... C++
Задача на составление программы с ветвлением вычислительного процесса C++
Запустить программу из другой программы в качестве нового процесса C++
C++ Разработка программы циклического вычислительного процесса «Вычисление суммы ряда»
Привязка к таймеру C++
Привязка библиотеки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.01.2012, 16:05     Привязка программы по ID процесса #2
one.inside, а теперь тоже самое только по-человечески. Чего вы хотите добится?
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 16:07     Привязка программы по ID процесса #3
Нужно проверять переменную cpuBrand ? а в чём собственно проблема?
правдо помоему имелось в виду другой ид.
strcmp() непойдёт?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <string.h>
 
int main(void){
    
    unsigned int cpuInfo = 0;
    char cpuBrand[13];
    cpuBrand[12]=0;
    asm(
    "xor %%eax,%%eax\n"
    "cpuid\n"
    "movl %%ebx,%1\n" 
    "movl %%edx,%2\n"
    "mov %%ecx,%3\n"
    "movl $1,%%eax\n"
    "cpuid\n"
    "movl %%eax,%0\n":"=r"(cpuInfo):"m"(cpuBrand[0]),"m"(cpuBrand[4]),"m"(cpuBrand[8]),"0"(cpuInfo):"eax","ebx","ecx","edx"
    );
    unsigned int cpuModel = ((cpuInfo & 0x000000F0) >> 4);
    printf("Brand: %s, cpuInfo: %u, cpuModel: %u\n",cpuBrand,cpuInfo,cpuModel);
    if (strcmp(cpuBrand,"GenuineIntel")==0)
    {
        printf("INTEL DETECTED!!!\n");
        /* code here */
        
    }
    
return 0;
}
http://liveworkspace.org/code/45631f...bd040629a63739
one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 16:19  [ТС]     Привязка программы по ID процесса #4
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
one.inside, а теперь тоже самое только по-человечески. Чего вы хотите добится?
Допустим я даю человеку программу которая узнаёт id запущенного процесса.
Он мне копирует id процесса, при компилировании программы к которой идёт привязка я вставляю в код проверки ida процесса который мне передал человек.
При сходстве id программа запускается при не сходстве нет.
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 16:26     Привязка программы по ID процесса #5
id процесса или id процессора?
если последнее, то в чём проблема? (предполагаю что cpuInfo это не тот id)
easybudda
22.01.2012, 16:26
  #6
 Комментарий модератора 
one.inside, во-первых перестаньте писать жирными буквами - это раздражжает, а во-вторых определитесь: "процесс" и "процессор" - разные вещи...
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 16:28     Привязка программы по ID процесса #7
а для получения PID есть это(win) http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 16:30  [ТС]     Привязка программы по ID процесса #8
Цитата Сообщение от nxnx Посмотреть сообщение
id процесса или id процессора?
Цитата Сообщение от easybudda Посмотреть сообщение
определитесь: "процесс" и "процессор" - разные вещи...
ID процессора..
I.M.
22.01.2012, 16:41
  #9

Не по теме:

А зачем Вам это вообще нужно-то? Что-то вроде защиты программы?

one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 16:53  [ТС]     Привязка программы по ID процесса #10
Цитата Сообщение от I.M. Посмотреть сообщение
Не по теме:
А зачем Вам это вообще нужно-то? Что-то вроде защиты программы?
Да, так же более мощный способ защиты нежели id жёсткого диска и прочих устройств.
Модераторы переименуйте тему пожалуйста на:Привязка программы по ID процессора.
Описался.
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 17:30     Привязка программы по ID процесса #11
я так понимаю речь идёт о уникальном ID процессора, но имхо затея плохая:

Счастливые обладатели процессоров Pentium III (только их) могут определить серийный номер своего процессора (предварительно разрешив в BIOS его сообщение процессором, которое по умолчанию отключено) при помощи CPUID с EAX=3.
(источник http://www.wasm.ru/print.php?article=hardzen)

Как я понял эта команда выдает нужный ID при eax==3:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
 
int main(void){
    
    unsigned int ecx,edx;   
    asm(
    "movl $3,%%eax\n"
    "cpuid\n"    
    "movl %%ecx,%0\n"
    "movl %%edx,%1":"=r"(ecx),"=r"(edx)::"eax","ebx","ecx","edx"
    );
    printf("ECX: %u\nEDX: %u\n",ecx,edx);
    
    
return 0;
}
http://liveworkspace.org/code/23c039...14fd863d503e09
(переменная cpuInfo из предыдущего примера у меня точно такаяже как на lws, и она не уникальная-думаю это не то что нужно)
не думаю что ктото будет лезть в биос ради того чтобы запускать программу с такой привязкой
one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 17:35  [ТС]     Привязка программы по ID процесса #12
Цитата Сообщение от nxnx Посмотреть сообщение
я так понимаю речь идёт о уникальном ID процессора, но имхо затея плохая:
Счастливые обладатели процессоров Pentium III (только их) могут определить серийный номер своего процессора (предварительно разрешив в BIOS его сообщение процессором, которое по умолчанию отключено) при помощи CPUID с EAX=3.
Т.е обладатели других процессоров не могут определить свои ID?
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
22.01.2012, 17:36     Привязка программы по ID процесса #13
one.inside, нету виндовса, проверить не на чем... Это не подойдёт?
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 17:38     Привязка программы по ID процесса #14
Цитата Сообщение от one.inside Посмотреть сообщение
Т.е обладатели других процессоров не могут определить свои ID?
я не углублялся в изучение cpuid, но думаю смогут, только какимто другим способом.
Собственно это мелочи, при желании можно изучить, я думаю что никто не станет лезть в биос.

Добавлено через 1 минуту
Цитата Сообщение от easybudda Посмотреть сообщение
one.inside, нету виндовса, проверить не на чем... Это не подойдёт?
мы это какраз обсуждаем) тотже cpuid только в обёртке от msdn
one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 17:44  [ТС]     Привязка программы по ID процесса #15
Цитата Сообщение от nxnx Посмотреть сообщение
я не углублялся в изучение cpuid, но думаю смогут, только какимто другим способом.
Собственно это мелочи, при желании можно изучить, я думаю что никто не станет лезть в биос.
Так, плохо но своими силами не написать)
А если ид запущенного процесса?
Не располагаю инфой, есть предположения что он постоянно меняется.
Это так или нет?
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 17:47     Привязка программы по ID процесса #16
к id процесса нету смысла делать привязку, при каждом запуске программы он разный(по моим наблюдениям)
one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 17:57  [ТС]     Привязка программы по ID процесса #17
Цитата Сообщение от nxnx Посмотреть сообщение
к id процесса нету смысла делать привязку, при каждом запуске программы он разный(по моим наблюдениям)
К чему ещё можно привязать?
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 18:08     Привязка программы по ID процесса #18
Цитата Сообщение от one.inside Посмотреть сообщение
К чему ещё можно привязать?
я в таких вопрос не силён, да и смысла особого не вижу.
лучше спросить у гугла
one.inside
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 18:12  [ТС]     Привязка программы по ID процесса #19
Цитата Сообщение от nxnx Посмотреть сообщение
я в таких вопрос не силён, да и смысла особого не вижу.
лучше спросить у гугла
Гугл кроме как привязку по hdd не даёт больше ничего)
А если материнская плата? или ID bios
http://msdn.microsoft.com/en-us/library/Aa394072
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2012, 22:12     Привязка программы по ID процесса
Еще ссылки по теме:
Привязка значений (Классы) C++
C++ Привязка к системному таймеру
Привязка файла к серверу C++
Привязка окна и объектов в ООП C++
Привязка к оборудованию под Windows C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
overlord_10
Сообщений: n/a
22.01.2012, 22:12     Привязка программы по ID процесса #20
Цитата Сообщение от nxnx Посмотреть сообщение
к id процесса нету смысла делать привязку, при каждом запуске программы он разный(по моим наблюдениям)
Да, ID процесса изменяется после каждого запуска процесса, НО мы (я и инсайд) интересуемся правда ли, что ID ПРОЦЕССОРА не изменяется и что у каждого компьютера он разный??
Yandex
Объявления
22.01.2012, 22:12     Привязка программы по ID процесса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru