Доброго дня.
есть C# приложение, читающее память стороннего процесса.
По маске (F3 0F 11 8F 88 00 00 00) находим адрес инструкции, считывающей нужное значение.
В приложении он равен 7FF7548006C5, так же как и на картинке.
Окончательное значение, которое нужно считать находится по адресу в регистре rdi +0х88, тоесть в моем случае мне надо получить 0x204E31A5BB8, чтобы считать из него float
Как я понял, считать значение регистра можно только используя С++ .
Буду только рад, если это ни так и его можно считать напрямую из C# - тогда подскажите как.
Подозреваю, что считывать это значение нужно в "контексте исследуемого приложения" - пока плохо представляю, как это сделать из С++, но на данном этапе это не важно.
Я пытаюсь скомпилировать С++ Dll которую я буду дергать из C# с кодом, который я нашел здесь:
https://stackoverflow.com/questions/2114163/readin...
#include <stdio.h>
long Get_rdi() {
register long x asm("rdi");
long y = *(&x);
return y;
}
Проблема в том, что функция не компилируется.
Возможно что-то ни так с настройками проекта/VS или не хватает какого-то заголовка?