Проблемка с получением MAC

Тема в разделе "WASM.BEGINNERS", создана пользователем BITk0der, 18 сен 2008.

  1. BITk0der

    BITk0der New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2004
    Сообщения:
    24
    Адрес:
    Russia
    Доброго времени суток. Столкнулся с небольшой проблемкой с полученим MAC адреса... немного не пойму хранения его в памяти, после возвращения...

    Код (Text):
    1. ;...
    2.    myip db "10.10.10.10",0
    3.    mac dw 6 dup(0)
    4.    wip dd 0
    5.    typ db "%X:%X:%X:%X:%X:%X",0
    6.    outb db 256 dup (0)
    7.    s dw 6
    8. ;...
    9.  
    10.     invoke inet_addr,addr myip ;перевожу в int
    11.     mov wip,eax
    12.     invoke SendARP,wip,0,addr mac, addr s ;получаю MAC
    13.     .if eax==NO_ERROR
    14.         invoke wsprintf,addr outb,addr typ, DWORD PTR mac ;перевожу в строку
    15.         invoke MessageBox,0,addr outb,addr outb,MB_OK
    16.     .endif
    Выводится что то не то... по 4 знаковые числа... и вообще не то, думаю что это просто выводятся адреса в памяти и всё, и совсем рядом не стоящие с MAC значения... подскажите в чем затык?
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    http://wasm.ru/forum/viewtopic.php?pid=195221#p195221
     
  3. BITk0der

    BITk0der New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2004
    Сообщения:
    24
    Адрес:
    Russia
    Там я уже смотрел, особ ни чем не помог поиск, поэтому и запостил... просто трудностей у меня нет с пониманием, есть скорее трудности с пониманием оперирования данными в памяти... Так то по идее вроде функция работает и что то пишет в мак, но всё таки както не так...
     
  4. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Перевод в строку неправильный. Нужно все печатаемые элементы (6 word'ов) отдельно положить в стек. Правильный вариант мог бы выглядеть так:
    Код (Text):
    1.     mov     ecx, 6
    2. @@:
    3.     movzx   eax, word ptr mac[ecx*2-2]
    4.     push    eax
    5.     loop    @b
    6.     push    offset typ
    7.     push    offset outb
    8.     call    [_imp__wsprintfA]
    9.     add     esp,8*4
     
  5. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    diamond
    imho надо от offset mac+5*2 до offset mac
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    q_q
    Точно, ошибся, спасибо. Свой предыдущий пост поправил.