TeamViewer service high CPU usage 100% 50%
TeamViewer высокая загрузка использование процессора 100% 50% нагружает процессор
Заголовки для поисковых ботов
В
общем достал меня TeamViewer своей загрузкой процессора даже в то
время, когда нет подключений. Имея небольшие познания в
инструментарии для отладки, профилирования и ассемблера x86 попытался
понять в чем причина.
Пришел к такому выводу - код обработки сетевых соединений в TeamViewer не
учитывает какие-то варианты поведения вызываемых WinAPI функций в
следствии чего "цикл" обработки соединений вида
while (true) {
if (some_condition) {
sleep(n)
}
connect(,,,,)
WSARecv(,,,,)
}
выполняется
с высокой частотой т.к. функция connect моментально возвращает
управление или что-то типа того и к тому-же условие some_condition
перестаёт выполняться и функция sleep также не получает управление.
Подключился
к TeamViewer'у профайлером, нашел место откуда активно вызывается
connect, подключился ollydebugger'ом и интуитивным путём заNOPил команды
условного перехода some_condition. Там была какая-то проверка кодов
возврата или что-то подобное, понадеявшись на авось - деактивировал эти
команды и запустил в RUN процесс.
Всё, больше не зависает.
Надеюсь
кто-то из опытных исследователей изучит этот вопрос и подробнее
распишет, а если и нет то и ладно :). Кому помогло, просьба отписаться в
комментариях.
Опыты проводились 11 ноября 2016г., на TeamViewer версии 11.0.1159.0
Скриншот исправленного места:
Скриншот исправленного места:
Комментариев нет:
Отправить комментарий