1

Тема: AHK: Поиск в памяти строки текущего процесса

Добрейшего всем, вопросик возник. Я могу найти адрес памяти начала нужной строки в памяти текущего процесса (то есть запущеного AHK скрипта)?
Если да, то каким способом это можно сделать и насколько это будет быстро?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

2

Re: AHK: Поиск в памяти строки текущего процесса

Насколько мои опыты показали (поиск цифр для замены в игре значений количества предметов), это дольше 15 секунд в среднем. Поэтому забросил, иной раз в игре уже поменялись значения и толку искать уже нет.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: Поиск в памяти строки текущего процесса

В моем случае этот процесс будет происходить всего один раз при запуске скрипта. И мне нужно найти строку в памяти моего же скрипта.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

4

Re: AHK: Поиск в памяти строки текущего процесса

Адрес переменной можно получить через знак &.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Поиск в памяти строки текущего процесса

Это не переменная. Этот текст создает компилятор.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

6

Re: AHK: Поиск в памяти строки текущего процесса

Поясните подробнее, что за текст.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Поиск в памяти строки текущего процесса

Пусть это будет "&�E�d�i�t� �S�c�r�i�p�t�" (вместо робиков 0x00).

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

8

Re: AHK: Поиск в памяти строки текущего процесса

А зачем нужно его искать?
Если в скрипте указать строку, которая уже есть в памяти, то их там будет по-крайней мере две, и неизвестно, какая будет первой.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: Phoenixxx_Czar, 2022-06-05 23:53:07)

Re: AHK: Поиск в памяти строки текущего процесса

Я это взял для примера и все же, как мне найти ее? И мы сможем перевести строку в hex.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

10

Re: AHK: Поиск в памяти строки текущего процесса

А кого её-то? Чтобы указать, что именно искать, нам нужно точно такую же написать в скрипте. Как вы поймёте, что нашли нужную?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Поиск в памяти строки текущего процесса

Phoenixxx_Czar пишет:

И мы сможем перевести строку в hex

Это без разницы, нужно всё равно переводить в байты.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12 (изменено: Phoenixxx_Czar, 2022-06-06 00:45:50)

Re: AHK: Поиск в памяти строки текущего процесса

Я нашел библиотеку classMemory, с помощью этого:

mem := new _ClassMemory(PID)
if (!PID || !mem)
{
	DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", False, "UInt", processId, "Ptr")
}

pattern := mem.hexStringToPattern("тут моя строка в HEX")
addr := mem.processPatternScan(,, pattern*)

Оно мне выдало число '26541988', вот только что это за число? Мне нужен результат поиска для использования в 'NumGet'.

Оу.. Кажись я могу подставить это значение в NumGet и оно отработает как нужно.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)