Как читать память в C #, зная BaseAddress dll внутри процесса .exe и смещения для указателя? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь прочитать значение из памяти в c #, используя базовый адрес и смещения, полученные из Cheat Engine.

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

BaseAddress: "mono-2.0-bdwgc.dll" + 00491DE8
Смещение 1: 98 (шестнадцатеричное)
Смещение 2: 350 (шестнадцатеричное)

Process[] process_search = Process.GetProcessesByName("ProcessName");

if (process_search.Length != 0)
{
    ProcessModuleCollection modules = process_search[0].Modules;
    ProcessModule dll = null;
    foreach (ProcessModule i in modules)
    {
        if (i.ModuleName == "mono-2.0-bdwgc.dll")
        {
            dll = i;
            break;
        }
}

Яв состоянии получить набор DLL, и я могу получить его базовый адрес, выполнив dll.baseAddress.Мне интересно две вещи:

1) Как добавить смещения к базовому адресу, чтобы получить полный адрес указателя
2) Как я на самом деле получаю доступ к значению памяти по этому адресу

Все остальные решения, которые я видел, предназначены для считывания указателей с самого процесса, а не с помощью dll внутри процесса.Я в растерянности относительно того, что делать.Любая помощь приветствуется.

...