kray_zemli (kray_zemli) wrote,
kray_zemli
kray_zemli

Пригодились навыки Reverse Engineering.

Был у нас баг с крэшем/зависанием при выходе из приложения. Неприятный баг, хоть и не фатальный, ведь уже при выходе же. Баг проявляется только после использования определенного стороннего SDK. Баг то исчезал, то появлялся вновь. Уже полгода никто не мог его победить. Выяснили, что происходит это во время вызова FreeLibrary для выгрузки одного из наших модулей. Дальше одни догадки.

Пришла моя очередь взяться. Ушло три дня.

Как оказалось, одна из наших сторонних библиотек зависит от msvcr100.dll, хотя весь остальной проект под vc12. Больше будто бы от рантайма vc10 не зависит ничего. Но оказалось, что эта самая сторонняя SDK включает внутри себя другую стороннюю SDK, которая включает в себя собственный License Manager. Этот менеджер по-хакерски подгружает и расшифровывает в память некоторую свою часть. И эта часть зависит от vc10 runtime!

Получается, если мы не используем vc10 runtime, то он успевает загрузиться, проверить лицензию и выгрузиться вместе со своим рантаймом, не оставляя после себя особых следов. Так как этот код зашифрован, выявить его зависимость от msvcr100.dll беглым поиском по бинарникам нельзя.

Но у нас, получается, msvcr100.dll тоже используется. А этот хакерский код полагается на то, что msvcr100.dll выгрузится вместе с ним и запустит его atexit каллбэк. В результате теперь, при выгрузке хакерского кода msvcr100.dll не выгружается, деинициализация хакерского кода вовремя не отрабатывает, и запускается уже только при выгрузке этой нашей сторонней библиотеки, от неё зависящей. Вот тогда-то и запускается atexit каллбэк хакерского кода, который теперь уже указывает на выгруженный код. Если его в памяти уже нет, то всё крэшится, а если ещё есть, то он виснет.

Отправил суппорт реквест авторам SDK, высказав всё, что думаю об этих хакерах.
Subscribe

  • Зачем либералам власть?

    Забавляет либеральное двоемыслие, предлагающее давить на власть сугубо законными методами, в то время как власть пишет закон сугубо под себя, да и…

  • Дворец: мужское и женское

    Традиционно, в дворцах есть мужская и женская части. Исходя из этого предположения, по плану легко сообразить, что казино, танцевальный автомат,…

  • Глубинный народ о Дворце

    Подумаешь, дворец! У вечернего мудозвона Соловьёва — и то хоромы есть. А Путину что, нельзя? Тем более, в России, а не где-нибудь в Америках да…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment