Как добавить в файл значение переменной? (Лог трассировки)

Тема в разделе "WASM.RESEARCH", создана пользователем Smafil, 2 июн 2005.

  1. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    Доброго времени суток.



    Есть программа-клиент. Команды с сервера на нее

    поступают около 5 раз в секунду.



    Я ставлю брейк на обработчик команд в клиенте.

    Могу слелать !dump в файл кода команды,

    но хотелось бы получить последовательность

    команд. !dump создает файл заново, а мне нужно

    добавить значение к уже существующим.



    Сумбурно конечно обьяснил.



    Вообщем софтайс перехватывает программу 5 раз в секунду.

    Как получить последовательность из значений по адресу

    хххх (одному и тому же) в файл (на протяжении скажем 5 минут).



    Я использую DS 3.2; IceExt 0.67; w2k SP4.
     
  2. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    В Айсе есть макросы => можно процесс "автоматизировать" :)
     
  3. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    А я бы сделал dll, прицепил ее к импорту клиента, и в DLL_PAROCESS_ATTACH патчил бы нужное место в клиенте на вызов функции из dll. А уж с помошью hll писать в лог это тривиальная задача.
     
  4. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    В Айсе есть макросы => можно процесс "автоматизировать" :)



    :) - A, я, значит, как дятел, собирался SOS кнопкой F5 отбивать? :)



    А я бы сделал dll, прицепил ее к импорту клиента, и в DLL_PAROCESS_ATTACH патчил бы нужное место в клиенте на вызов функции из dll.



    - Защита сработает. Отключать долго.



    А уж с помошью hll писать в лог это тривиальная задача.



    - А ето что за зверь?
     
  5. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > - Защита сработает. Отключать долго.



    Если память не чекает - заинжектить прямо в процесс с помощью библиотеки apihooks
     
  6. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    High Level Language
     
  7. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    можно прямо в лог выводить:



    bpx <handler> do "dd <DataAddr> l <DataLen>;x;"



    правда лог потом надо будет профильтровать скриптом.



    И мерцать будет ужасно

    :derisive:
     
  8. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    Про лог айса совсем забыл.



    Просто написал



    bpm adr x do "? eax;x;"



    В логе были зсе значения.



    Только "мусора" много типа



    Break due to BP 02: BPMB 001B:00477B5D X DR1 DO "?eax;x;" (ET=540.14 microseconds)

    MSR LastBranchFromIp=6C371ED3

    MSR LastBranchToIp=00477B30



    <ulong> = 0x31, 49, "1" - собственно искомое



    Если бы можно было как-то отключить эти сообщения,

    получилось бы совсем то что надо.



    Спасибо Dr.Golova за идею. Где бы скачать эту библиотеку

    полностью, с доками. Линк можно?
     
  9. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    Green, каким скриптом? Где он, сюда его быстрее.
     
  10. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    у меня нет готового на этот случай

    :derisive:



    на Перле проще всего сделать
     
  11. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    вот, слепил:
    Код (Text):
    1.  
    2. open (FileIn, $ARGV[0]);
    3. open (FileOut, ]$ARGV[1]");
    4.  
    5. while (<FileIn>)
    6. {
    7.     print FileOut $1 , ", " if (/<ulong> = (.+?),/);
    8. }
    9.  
    10. close FileIn;
    11. close FileOut;
    12.  
    13.  
     
  12. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    Green, будь последователен, не издевайся над

    старым двоечником. Скомпилируй пожалуйста.



    FileOut назови Green.Mozg :derisive:



    Вообщем спасибо огромное.
     
  13. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    Про компиляцию - это была шутка, если кто не понял.
     
  14. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine




    да не издеваюсь я

    :derisive:



    У меня нет компилятора Перла, по-моему его вообще нет в природе, по крайней мере релизной версии.
     
  15. kolega

    kolega New Member

    Публикаций:
    0
    Регистрация:
    3 май 2005
    Сообщения:
    4
    Smafil

    одной строкой :)

    perl -ne "print if (/<ulong>=(.+?),/)" FileIn > FileOut
     
  16. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    kolega



    Поставил Перл.



    Сделал bat файл, запустил - не работает.

    Fileout пустой.



    Долго думал. Может это и есть дзен? :)
     
  17. Smafil

    Smafil New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    11
    Нирвана, конец сансаре!



    Добавил пробел:



    perl -ne "print if (/<ulong>=(.+?),/)" winice.log > winice1.log

    perl -ne "print if (/<ulong> =(.+?),/)" winice.log > winice1.log



    Действительно дзен. Пустого места не хватало.



    Всем больвое спасибо за помощь.
     
  18. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    У меня нет компилятора Перла, по-моему его вообще нет в природе, по крайней мере релизной версии



    Хм, неточная формулировка. Перл - это интерпретатор, но, разумеется, текст должен быть пропарсен и построено дерево, так что, это и компилятор. А что до компилятора в чистом виде - то перл можно сбросить в виде сишных структур, ну а дальше скомпилировать любым сишным компилером.