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

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

22.01.2012, 15:40. Просмотров 2719. Ответов 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 минут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2012, 15:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Привязка программы по ID процесса (C++):

Защита программы от остановки процесса
Есть лаунчер для игрового сервера который отслеживает у пользователя читерский...

Разработка программы автоматизации планирования учебного процесса...
По некоторым причинам тему диплома назначили на кафедре и выглядит она примерно...

Задача на составление программы с ветвлением вычислительного процесса
Хай всем)) помогите с программой, точнее с фигурой на плоскости.. Как из фигуры...

Запустить программу из другой программы в качестве нового процесса
Нужно запустить программу из другой программы: Первая программа, которую нужно...

Разработка программы циклического вычислительного процесса «Вычисление суммы ряда»
Помогите пожалуйста,буду Вам очень признателен....

Библиотеки процесса, защита от изменения процесса
Здраствуйте. 1) Как можно получить список библиотек (dll, asi), которые уже...

19
CyBOSSeR
Эксперт С++
2309 / 1682 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
22.01.2012, 16:05 #2
one.inside, а теперь тоже самое только по-человечески. Чего вы хотите добится?
0
nxnx
Формучанин
362 / 293 / 41
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 16:07 #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/45631f1041bfd78266bd040629a63739
0
one.inside
0 / 0 / 1
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 16:19  [ТС] #4
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
one.inside, а теперь тоже самое только по-человечески. Чего вы хотите добится?
Допустим я даю человеку программу которая узнаёт id запущенного процесса.
Он мне копирует id процесса, при компилировании программы к которой идёт привязка я вставляю в код проверки ida процесса который мне передал человек.
При сходстве id программа запускается при не сходстве нет.
0
nxnx
Формучанин
362 / 293 / 41
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 16:26 #5
id процесса или id процессора?
если последнее, то в чём проблема? (предполагаю что cpuInfo это не тот id)
0
easybudda
22.01.2012, 16:26
  #6
 Комментарий модератора 
one.inside, во-первых перестаньте писать жирными буквами - это раздражжает, а во-вторых определитесь: "процесс" и "процессор" - разные вещи...
0
nxnx
Формучанин
362 / 293 / 41
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 16:28 #7
а для получения PID есть это(win) http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
0
one.inside
0 / 0 / 1
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 16:30  [ТС] #8
Цитата Сообщение от nxnx Посмотреть сообщение
id процесса или id процессора?
Цитата Сообщение от easybudda Посмотреть сообщение
определитесь: "процесс" и "процессор" - разные вещи...
ID процессора..
0
I.M.
22.01.2012, 16:41
  #9

Не по теме:

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

0
one.inside
0 / 0 / 1
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 16:53  [ТС] #10
Цитата Сообщение от I.M. Посмотреть сообщение
Не по теме:
А зачем Вам это вообще нужно-то? Что-то вроде защиты программы?
Да, так же более мощный способ защиты нежели id жёсткого диска и прочих устройств.
Модераторы переименуйте тему пожалуйста на:Привязка программы по ID процессора.
Описался.
0
nxnx
Формучанин
362 / 293 / 41
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 17:30 #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/23c03977c4443cd46114fd863d503e09
(переменная cpuInfo из предыдущего примера у меня точно такаяже как на lws, и она не уникальная-думаю это не то что нужно)
не думаю что ктото будет лезть в биос ради того чтобы запускать программу с такой привязкой
0
one.inside
0 / 0 / 1
Регистрация: 22.09.2011
Сообщений: 50
22.01.2012, 17:35  [ТС] #12
Цитата Сообщение от nxnx Посмотреть сообщение
я так понимаю речь идёт о уникальном ID процессора, но имхо затея плохая:
Счастливые обладатели процессоров Pentium III (только их) могут определить серийный номер своего процессора (предварительно разрешив в BIOS его сообщение процессором, которое по умолчанию отключено) при помощи CPUID с EAX=3.
Т.е обладатели других процессоров не могут определить свои ID?
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
22.01.2012, 17:36 #13
one.inside, нету виндовса, проверить не на чем... Это не подойдёт?
0
nxnx
Формучанин
362 / 293 / 41
Регистрация: 02.11.2010
Сообщений: 1,234
22.01.2012, 17:38 #14
Цитата Сообщение от one.inside Посмотреть сообщение
Т.е обладатели других процессоров не могут определить свои ID?
я не углублялся в изучение cpuid, но думаю смогут, только какимто другим способом.
Собственно это мелочи, при желании можно изучить, я думаю что никто не станет лезть в биос.

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

Порождение нового процесса и запуск программы в рамках порожденного процесса
Цель работы. Изучение программных средств создания процессов, а также...

"Привязка" окон дочерних процессов к окну главного процесса
Всем доброго дня. Вопрос знатокам. Есть VCL приложение (С++ Builder XE). В...

Привязка программы по ID
Здравствуйте таковй вопрос программа для игры что бы получить VIP функции во 2...

Интерфейс программы (привязка)
В Windows 7 создал програмку, потом открыл ее в XP, и интерфейс поменялся на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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