Как вызвать DbgPrint в юзермоде?

Тема в разделе "WASM.BEGINNERS", создана пользователем _sheva740, 23 июн 2011.

  1. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Отлаживаю сервис.
    Хочется выводить сообщения.
    Вопрос: как в юзермоде использовать DbgPrint?
    Если можно, короткий пример на masm-e.
    Спасибо за помощь.
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    OutputDebugString

    http://cplus.about.com/od/codelibraryfor1/qt/debugging.htm
    переделываешь на масм, принцип думаю будет понятен
     
  3. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    cresta
    Спасибо большое!
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    там ещё в самом DbgView нужно переключить режим вывода с кернела на юзер. А то отображать не будет
     
  5. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    cresta
    Да не, все ок! Спасибо большое!
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap :none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\masm32.inc
    6. include \masm32\include\kernel32.inc
    7. includelib \masm32\lib\masm32.lib
    8. includelib \masm32\lib\kernel32.lib
    9. .data
    10.     AppStartPoint   BYTE         "OutputDebugString ... ",0
    11. .code
    12. start:
    13.    INVOKE   OutputDebugString,   ADDR AppStartPoint
    14.    INVOKE   ExitProcess,  0
    15. end start
    [​IMG]

    Чего-то картинка не отобразилась )))
     
  6. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    _sheva740
    ntdll!DbgPrint удобней т.к. там форматирование строки поддерживается
     
  7. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    ASMatic
    Примерчик можно?
     
  8. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    Код (Text):
    1. ULONG
    2. WINAPI
    3. DbgPrint(
    4.     IN      PCHAR   Format,
    5.     ...
    6.     );
    ntdll.lib не забудьте подключить..
     
  9. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    ASMatic
    Не подскажете, что не так в этом коде?
    Собираю, запускаю, но в окне debugview - а строки не появляется (((
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4. include \masm32\include\kernel32.inc
    5. include \masm32\include\user32.inc
    6. include \masm32\include\w2k\ntdll.inc
    7.  
    8. includelib \masm32\lib\kernel32.lib
    9. includelib \masm32\lib\user32.lib
    10. includelib \masm32\lib\w2k\ntdll.lib
    11.  
    12. ;include \masm32\Macros\Strings.mac
    13.  
    14. .data
    15.     AppStartPoint   BYTE         "OutputDebugString ... ",0
    16. .code
    17. start:
    18.     invoke  DbgPrint, offset AppStartPoint
    19.     ;invoke DbgPrint, $CTA0("\nOutputDebugString ... \n")
    20.     invoke  ExitProcess,  0
    21. end start
    Причем та же петрушка у меня если грузить ntdll.dll и вызывать DbgPrint по адресу.(((

    Код в посте #5 строку в окне дает (((
    Не подскажете?
     
  10. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    _sheva740
    1. на вистаобразных системах нужно ключик в реестре создать..у вас ядро>=6.0?
    2. debugview толи кривой толи еще чо - иногда не видать этих принтов(


    HKLM\SYSTEM\CCS\Control\Session Manager\Debug Print Filter создаем ключик (dword) DEFAULT со значением 8 у меня стоит, можно f - это уровень принтов системных...
    в виндбг видны принты, в ольке тоже - дебагвиев - сабака)
     
  11. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
  12. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    ASMatic
    У мня HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter нет вообще, создать?

    [​IMG]

    Создал, перезагрузился но сволочь все равно не идет же (((
     
  13. freyr

    freyr New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2010
    Сообщения:
    95
    ntdll.DbgPrint(Ex) DebugView не показывает.
    Жаль замены нету. Так же DebugView не показывает вывод OutputDebugString в lower integrity процессах, например ИЕ, можно прилепить костыли, но опять же он не будет ловить все сообщения.
     
  14. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    freyr
    Спасибо.
     
  15. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    На вин 7 (запущена под варей) виндбг не хочет отображать OutputDebugString.
    DebugView тоже не все отображает( как это обойти ?
    HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter значение дефаулт = 0xF
     
  16. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    XshStasX
    Тут советовали Syser вместо DebugView опробовать.
     
  17. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    _sheva740
    и ка их просматривать в нем?
    У меня 1,99 версия.
    Через него видно дебаг строки от всех ринг 3 приложений?
    У меня длл инжектится в один из процессов системных и в них работает, и для отладки выводит дебаг строки.
     
  18. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    XshStasX
    1,99 версия уже очень много лет :) так что это не о чем не говорит.
    Да должен показывать ..
    А вообще делайте либым дебаггером(в частности WinDbg user3 or kernel) аттач к приложению и будут вам эти строки выводится, а не все которые разные приложения постят:)
     
  19. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    :))) (kernel32.OutputDebugStringA)

    лог в файл не?
     
  20. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    shchetinin
    А в ХП выводятся, нежели так нельзя заставить вин 7 ?
    В общем перехват и перенаправление в файл все решило, не хотелось этого но пришлось.