Readprocessmemory И Struct Возвращает Нулевое Значение

Тема в разделе ".NET", создана пользователем Xrayboy, 31 июл 2012.

Статус темы:
Закрыта.
  1. Xrayboy

    Xrayboy Гость

    linkBaffs[0] - это количество элементов, где по struct TypeBaffs 18 байт в каждом.
    linkBaffs[2] - это адрес, где читаем, проверено через MessegeBox указано правильное значение, проверено через ArtMoney
    BufBaffs - это буфер, куда должно складываться массивом в формате struct TypeBaffs.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Класс public partial class Form1 : Form (часть)</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    WinAPI.TypeBaffs[] BufBaffs = new WinAPI.TypeBaffs[linkBaffs[0]];
    //MessageBox.Show(BufBaffs.Length.ToString());
    WinAPI.ReadProcessMemory( // Читаем данные объекта
    proc.Handle,
    linkBaffs[2],
    BufBaffs,
    linkBaffs[0] * 0x12,
    out m_bytesRead
    );
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Класс WinAPI (часть)</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    [DllImport("Kernel32.dll", SetLastError = true)]
    public static extern bool ReadProcessMemory(
    IntPtr hProcess,
    uint lpBaseAddress,
    TypeBaffs[] lpBuffer,
    uint nSize,
    out uint lpNumberOfBytesRead
    );
    public struct TypeBaffs
    {
    public uint idSkillType;
    public uint idSkill;
    public uint id;
    public uint idLevelType;
    public ushort idLevel;
    }
    m_bytesRead - возвращает правильное чтение количества байт.

    Итоговый результат ожидается в BufBaffs, но переменная хоть и массивом, но значения там все нулевые (например BufBaffs[0].idSkillType). Непонятно в чем подвох ?

    В то же время читая без struct
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Пример</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    uint[] temp1 = new uint[2];
    WinAPI.ReadProcessMemory( // Читаем указатели на персональные данные
    proc.Handle,
    temp[3] + 0x220,
    temp1, 0x8,
    out m_bytesRead
    );
    Итоговый результат достигает, но это когда значения одинаковые по типу.

    Как достичь возврата НЕнулевого значения с struct?
     
Загрузка...
Похожие Темы - Readprocessmemory Struct Возвращает
  1. morpheus
    Ответов:
    0
    Просмотров:
    3.474
Статус темы:
Закрыта.

Поделиться этой страницей