Указатель на структурную переменную...

Тема в разделе "WASM.BEGINNERS", создана пользователем r2max, 21 апр 2011.

  1. r2max

    r2max Женя

    Публикаций:
    0
    Регистрация:
    30 мар 2011
    Сообщения:
    40
    Адрес:
    Киев
    Ребят прошу помощи, так как не пойму почему не получается у самого...
    В общем суть такова
    Есть переменная
    NetPk NetworkPacket
    Структура NetworkPacket
    Код (Text):
    1. struct NetworkPacket
    2.     id      db ?
    3.     align_  dd ?
    4.     cb      dd ?
    5.     data    db ?
    6. ends
    Так вот. Я хукаю приложение, с переменной, и такой же структурой.
    После хука получаю в EBX указатель на переменную (в моем случаи пакет)
    после того как Выполняю команду
    mov [NetPk], ebx ; в NetPk у нас будет указатель на пакет.

    А вот когда пытаюсь "вывести" NetPk.id у меня выводится не id пакета, а последние 2 байта указателя на пакет. В чем может быть проблема?
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    r2max
    Во-первых, должно выводиться не два байта, а один. В противном случае обращение к полю id неверное.
    Во-вторых, ну так Вы ведь посредством mov [NetPk], ebx и сохраняете указатель на структуру приложения поверх полей своей структуры. Вот его кусок и выводится.

    Подозреваю, в зависимости от контекста, нужно
    1) либо полностью копировать структуру приложения в свою и выводить так, как это у Вас уже сделано.
    2) либо сохранять только указатель на структуру приложения. Тогда у себя хранить такую структуру (NetPk NetworkPacket) не нужно, а только переменную вида pNetPk dd ?. Выводить соответственно не [NetPk.id], а, например, [eax+NetworkPacket.id] (если предварительно выполнено mov eax, dword[pNetPk]).
     
  3. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    struct NetworkPacket
    id dd ?
    align_ dd ?
    cb dd ?
    data dd ?
    ends

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    assume esi:ptr NetworkPacket

    mov [esi].id, blabla1
    ; --------------------------
    push blabla2
    pop [esi].align_
     
  4. r2max

    r2max Женя

    Публикаций:
    0
    Регистрация:
    30 мар 2011
    Сообщения:
    40
    Адрес:
    Киев
    ОГРОМНОЕ Вам спасибо!!!!