![]() |
eXeL@B —› Вопросы новичков —› Как замерить время исполнения функций в OLLYDBG? |
Посл.ответ | Сообщение |
|
Создано: 14 января 2010 17:18 · Поправил: Yupiter · Личное сообщение · #1 Требуется вывести в лог время исполнения разных функций исследуемой программы, для чего можно поставить на функции (call ... ) и сразу после них условные брейкпойнты. Что возможно сделать для того, чтобы в лог писались миллисекунды хотя бы от запуска Windows, программы и т.д., или может какой плагин есть на эту тему? Поиск не помог. ![]() |
|
Создано: 14 января 2010 17:30 · Личное сообщение · #2 |
|
Создано: 14 января 2010 17:36 · Личное сообщение · #3 |
|
Создано: 14 января 2010 17:48 · Поправил: Yupiter · Личное сообщение · #4 |
|
Создано: 14 января 2010 18:38 · Личное сообщение · #5 |
|
Создано: 14 января 2010 19:09 · Личное сообщение · #6 |
|
Создано: 14 января 2010 19:26 · Поправил: Yupiter · Личное сообщение · #7 |
|
Создано: 14 января 2010 19:49 · Личное сообщение · #8 |
|
Создано: 14 января 2010 19:54 · Поправил: Yupiter · Личное сообщение · #9 Вот функция GetTickCount (всего то ничего) 7C80932E MOV EDX,7FFE0000 7C809333 MOV EAX,DWORD PTR DS:[EDX] 7C809335 MUL DWORD PTR DS:[EDX+4] 7C809338 SHRD EAX,EDX,18 7C80933C RETN Как это запрограммировать в OllyScript? Ещё не работал с OllyScript. Archer, извини конечно, но мне думается, что и в Олли эту задачу можно решить без привлечения профайлеров. ![]() |
|
Создано: 14 января 2010 20:24 · Личное сообщение · #10 Yupiter пишет: но мне думается, что и в Олли эту задачу можно решить без привлечения профайлеров. ну раз думается, то ищи как это решить, а то другие об этих встроеных возможнастях не знают и можешь еще посмотреть это http://exelab.ru/f/action=vthread&forum=5&topic=14847 ----- Лучше быть одиноким, но свободным © $me ![]() |
|
Создано: 14 января 2010 21:17 · Поправил: Yupiter · Личное сообщение · #11 |
|
Создано: 14 января 2010 21:27 · Личное сообщение · #12 |
|
Создано: 14 января 2010 21:34 · Личное сообщение · #13 |
|
Создано: 14 января 2010 21:37 · Поправил: Yupiter · Личное сообщение · #14 |
|
Создано: 14 января 2010 21:49 · Личное сообщение · #15 Yupiter пишет: Наверное достаточно величины находящейся по адресу 7FFE0000, она со временем увеличивается, возможно там отсчитывается количество тактов процессора или ещё что то подобное, на миллисекунды вроде бы не похоже. По адресу 7FFE0004 значение так и не изменилось за более чем 10 минут. на масме подсчет через GetTickCount выглядит примерно так: Code:
![]() |
|
Создано: 15 января 2010 16:55 · Личное сообщение · #16 |
|
Создано: 15 января 2010 16:55 · Поправил: Yupiter · Личное сообщение · #17 Code:
Собираюсь добавить на свободное место код функции, чтобы вместо вызываемой функции (пусть она находится по адресу 00444400) идти туда и там делать засечки данных/времени из адреса 7FFE0000. По адресу 00555500 будем суммировать время нахождения в нашей функции, предварительно данные там занулив. Вопрос такой, что в функцию ещё нужно дописать, чтобы всё правильно отрабатывало? Не сделал ли я ошибок в написанном уже коде, так как в ассемблере я ещё не программировал. ![]() |
|
Создано: 16 января 2010 15:36 · Поправил: Yupiter · Личное сообщение · #18 Если кому интересно будет повозиться. Исследуемый объект: Исследуется модуль тестера, статьи по работе с этим модулем: После установки проги в папке "эксперты" есть пара экспертов-примеров, которые используют встроенные индикаторы в своей работе. В этом случае тестер работает быстро, если ещё выбрать режимы тестирования "генетический алгоритм" и "по ценам открытия". Кроме стандартных встроенных индикаторов бывают самописные, которые закидывают в папку "эксперты\индикаторы". Пишутся они на си-подобном языке, есть в проге редактор для написания и компиляции. Если будет интерес, то далее выложу один такой индикатор. С использованием таких индикаторов как раз заметно возрастает время работы тестера. Что я уже заметил, так это то что при работе тестера скомпилованный файл индикатора многократно загружается, видимо происходит это при каждом обращении эксперта к индикатору для расчёта значений. При загрузке далее происходит ещё её расшифровка, так как компилированный файл шифруется, чтобы затруднить через декомпиляцию исследование запрограммированных торговых стратегий. Многократное повторение этих операций скорее всего и влияет на время работы тестера при использовани пользовательских индикаторов. Тут выкладывали набор декомпиляторов ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Как замерить время исполнения функций в OLLYDBG? |