<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Потоки]]></title><description><![CDATA[<h3>В этой теме описывается что такое потоки в общих чертах</h3>
<hr />
<p dir="auto">Потоками называются сущности исполняющие машинный код в участках памяти приложения, одно приложение может иметь множество одновременно работающих потоков, исполняющих код в разных местах.<br />
У каждого потока есть стек и собственные значения в регистрах. Стек и регистры служат для временного хранения данных для удобной их обработки. Стек находится в выделенной памяти приложения и у каждого потока он свой.</p>
<p dir="auto">Потоки виртуальны, то есть они не привязаны и не ограничены количеством ядер процессора и прочим, может существовать сколько угодно потоков, пока они влезают в ограничения по памяти выделяемой для приложения.</p>
<p dir="auto">В Cheat Engine посмотреть список работающих потоков можно в окне отладчика через меню <strong>View</strong>:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676968339947-ac6ca786-1192-449e-91f0-dbcef87c9bc3-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="ac6ca786-1192-449e-91f0-dbcef87c9bc3-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">После этого появится окно отображающие потоки, у каждого потока можно развернуть выпадающий список и посмотреть на контекст этого потока, контекстом называются его регистры и флаги:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676968410584-112db97a-9d6f-4cbd-925e-fafcf6d09951-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="112db97a-9d6f-4cbd-925e-fafcf6d09951-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Потоки имеют числовой идентификатор по которому они могут быть найдены, закрыты, заморожены, и тому подобное.</p>
<p dir="auto">С помощью Cheat Engine вы можете создать новый поток для выполнения своего кода. <a href="https://gamehacklab.ru/bb/topic/24">Выделим память</a> и напишем там простую функцию, о функциях подробнее будет рассказано в следующих статьях:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676968673297-244b0ee6-e269-4fcd-990d-145cf1b9014a-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="244b0ee6-e269-4fcd-990d-145cf1b9014a-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Код задан, этот код берёт число 5, добавляет его к самому себе, увеличивает на 1 и вычитает из результата 4, результат записывается по адресу <code>08600000</code>. В нижнем окне показано текущее значение адреса, оно является нулевым. Что бы код выполнился нужно вызвать поток на него. Так как это функция, она имеет команду <code>ret</code> что бы поток вернулся после выполнения.<br />
Для создания потока, выделите первую команду функции и в меню инструментов выберите создание потока:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676968861874-1236e201-4bbd-4a34-afd7-fee191565688-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="1236e201-4bbd-4a34-afd7-fee191565688-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Вас спросят на каком адресе создать поток, если вы выделили определённую инструкцию, адрес автоматически подставится в это окно:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676968917883-e8aa664b-89c3-4764-92ea-bd2336f55a50-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="e8aa664b-89c3-4764-92ea-bd2336f55a50-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">После этого появится окно с вопросом какой параметр задать потоку перед запуском, который попадёт в регистры. Оставьте его 0, в данном коде не нужно задавать предварительные значения регистрам:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676969010410-c1b9647c-968e-4f8e-9be0-79e1d886be5f-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="c1b9647c-968e-4f8e-9be0-79e1d886be5f-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">После того как вы подтвердите создание потока, он выполнит функцию и вернётся, значение в адресе изменится:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676969055891-0ed5ea7a-6357-458b-bded-f5eb00a6adf9-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="0ed5ea7a-6357-458b-bded-f5eb00a6adf9-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Так как значение находится рядом с инструкциями, верхнее окно попыталось распознять в нём инструкции и создало непонятную мешанину. Для того что бы исправить отображение просто перейдите на адрес начала функции используя стрелочки на клавиатуре для точной корректировки позиции, или укажите адрес самостоятельно нажав <code>Ctrl+G</code>:</p>
<p dir="auto"><img src="/bb/assets/uploads/files/1676969156561-79a6c20a-cc9f-48ef-a190-d66024fbc6b3-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png" alt="79a6c20a-cc9f-48ef-a190-d66024fbc6b3-изображение.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Создание потоков может быть автоматизировано с помощью команд скриптинга, которые рассмотрены в следующих статьях.</p>
]]></description><link>https://gamehacklab.ru/bb/topic/28/потоки</link><generator>RSS for Node</generator><lastBuildDate>Tue, 12 May 2026 15:10:33 GMT</lastBuildDate><atom:link href="https://gamehacklab.ru/bb/topic/28.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Mar 2023 21:00:00 GMT</pubDate><ttl>60</ttl></channel></rss>