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

Процессы и потоки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упорядочить элементы строк массива http://www.cyberforum.ru/cpp-beginners/thread1317046.html
Упорядочить элементы строк массива по убыванию модулей элементов методом слияния.
C++ Оформить программу в виде функций обработки массивов (ввод, заполнение, вывод, упорядочение и т.п.) помогите, пожалуйста, с программой, не могу никак разобраться с функциями, сколько уже отмучалась с ними! вот я тут что-то мутила с программой: #include <conio.h> #include <iostream> #include... http://www.cyberforum.ru/cpp-beginners/thread1317044.html
C++ Разбивка текстового файла на части
Добрый день. Подскажите пожалуйста как можно реализовать следующий алгоритм: Имеется текстовый файл, в этом файле есть блоки информации разделенные символами, примерно так: ...
Как передать двухмерный массив C++
Примеров передачи много, но как быть в моем сучае, если я определяю функцию как: float det(float* M, int n) { if (n == 1) { return M; } //...другой код
C++ Файловые операции: генерировать файл, читать, редактировать, записывать http://www.cyberforum.ru/cpp-beginners/thread1317003.html
Попалось задание на заочке, немного не представляю, как его сделать на плюсах (тем более чтобы работало на Borland C++ 5). Кто может помочь? Задание: "Дан массив записей, который содержит сведения о...
C++ Нечетные числа из файла переписать в список С++//Дан текстовый файл с изображением целых чисел. Данные из файла необходимо переписать в список L1a. В выходной файл поместить только нечётные числа. Так для входного файла: 12 2467 12 43 783... подробнее

Показать сообщение отдельно
Nalik
41 / 27 / 9
Регистрация: 30.11.2012
Сообщений: 646

Процессы и потоки - C++

02.12.2014, 12:22. Просмотров 1180. Ответов 6
Метки (Все метки)

Здравствуйте, КиберФорумчане!)
Начал разбираться с процессами и потоками. Представление об этом небольшое, потому сразу хотелось бы выпросить у вас, ссылочки на полезные материалы. Или может книги авторов.. Если дочитаете сообщение дальше и поможете разобраться буду благодарен очень, если вам не хочется разбираться, то хотя бы ссылочки пожалуйста

Как подопытного кролика использую игру "Counter Strike" с ботами.
Пока поставил себе задачу написать трейнер. Увеличение HP, увеличение денег и т.д., подумал это будет хорошее начало для изучения, практическое прямое взаимодействие с процессами на примере игры. Если вы помните с чего начинали, буду рад услышать советы!

Благодаря примерам других кодов в сети получилось изменить количество HP у персонажа в игре:
Кликните здесь для просмотра всего текста
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
HANDLE  hProcess; //хендел потока
int i;
        
 
 
/* Определение окна по хендел */
private: System::Void backgroundWorker1_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e)
{
                 
    DWORD   ProcessID; //Переменная, в которую возвращается идентификатор процесса (PID) указанного окна
    HWND WinAA1 = FindWindow(L"Counter Strike", nullptr);
    if (WinAA1)
    {
        textBox1->Text = "Counter Strike запущен";
        GetWindowThreadProcessId(WinAA1, &ProcessID); //получаем идентификатор процесса у WinAA1
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID); //открываем процесс для чтения или записи (получаем хендел потока)
                     
        DWORD data = 120;
        WriteProcessMemory(hProcess, (LPVOID)0x00B7CE50, &data, 4, 0);
        ProcessID = i; //заносим содержимое ProcessID в переменную i
        String^ ProcessID_text = System::Convert::ToString(i); //конвертируем переменные
 
        textBox2->Text = ProcessID_text; //выводим ID потока в поле textbox
    }
    else
    {
        textBox1->Text = "окно закрыто";
    }
}

Делал я это так:
В Cheat Engine ввёл количество жизней, потом упал в игре, чтобы жизни отнялись, ввёл сколько жизней осталось. Так я нашел что код "0x00B7CE50" отвечает за количество жизней (кстати что это за код, PID? Индетификатор процесса? Идентификатор потока? Не пойму..что он делает?)

Пройдемся немного по коду, честно говоря я совершенно не понимаю что в нем происходит, результат есть - знаний нет, хотелось бы разобраться.

C++
1
GetWindowThreadProcessId(WinAA1, &ProcessID);
я начитался умных выражений, что тут мы получаем идентификатор процесса, но понять конкретно, что здесь происходит не смог, пытался вывести в textbox то что заносится в переменную, но постоянно пишет 0..
Вопрос 1: Что же всё таки находится в переменной ProcessID?

C++
1
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID); //открываем процесс для чтения или записи (получаем хендел потока)
здесь я так понимаю мы открываем процесс чтобы была возможность работать с ним, надеюсь я понял это правильно (я понимаю так, в предыдущей строчке мы находим саму игру, в этой строчке мы говорим программе, что мы будем работать с этой игрой)
Вопрос 2: Что за хендел потока? ЧТо заносится в переменную hProcess? Вывести в textBox у меня так же не получилось, всегда пишет 0..

C++
1
DWORD data = 120;
- тут мы вводим количество жизней
C++
1
WriteProcessMemory(hProcess, (LPVOID)0x00B7CE50, &data, 4, 0);
- вот эту строчку я не понимаю вообще.. Мы посылаем какому-то неведомому для меня хендлу, в какой-то непонятный адрес 0x00B7CE50 отвечающий за жизни (который я выяснил через Cheat Engine), значение 120.. При чем адрес этих жизней не постоянный, стоит мне перезапустить игру, как он становится другим и естественно программа работать перестает.

Вопрос 3: 0x00B7CE50 что это за адрес такой? И почему он всегда меняется при следующем запуске игры и как этого избежать?

Уважаемые форумчане, объясните пожалуйста мне глупому, что же делает этот код.. как сделать так, чтобы программа работала всегда и не была "одноразовой" как сейчас, что при перезапуске игры она работать перестает. И пожалуйста посоветуйте, где мне узнать больше про это все, процессы, потоки, идинтификаторы, пиды, что это вообще все такое!

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