Сейчас на форуме: zombi-vadim, zds (+4 невидимых) |
eXeL@B —› Программирование —› Патч (или инжект) exe-файла для правильного Unicode-вывода в консоль |
Посл.ответ | Сообщение |
|
Создано: 20 июня 2013 14:54 · Личное сообщение · #1 Подскажите, как решить следующую задачу: есть EXE-приложение LogonSessions от Sysinternals (насколько я понял - консольное, архитектура x86, unicode, скомпилированное в Visual C). Исходников этого приложения нет. Это приложение содержит баг, который в консоль вместо русских Unicode-символов выводит знаки вопроса (точнее, IMHO, это больше баг VC Runtime-библиотеки). Автор приложения знает об этом баге, исправил его в некоторых своих утилитах (например, Autoruns), но в других это делать не спешит... В VC2005 Microsoft добавила корректную поддержку Unicode в консоли — для нормального вывода Unicode в консоль необходимо до первой команды вывода в консоль выполнить следующую команду: _setmode(_fileno(stdout), _O_U16TEXT); Собственно вопрос следующий: хотелось бы как-то заставить это exe-приложение выводить в консоль нормально Unicode через инжектирование в адресное пространство exe-приложения (или может быть как-то без инжекта патчить таблицы импорта или ещё что-то) куска кода, выполняющего до первой команды вывода в консоль команду _setmode(_fileno(stdout), _O_U16TEXT); При этом желательно избегать сильно хакерских методов, которые могут не работать из-за ASLR и т.п. технологий. Очень приветствуются куски кода-прототипа для решения (я не сильно силён в хакерстве)... Хотелось бы сделать инжект динамическим, что-то типа лоадера. Версия программы, которую надо патчить, может меняться — не хотелось бы каждый раз её потрошить, хотелось бы в автомате всё сделать... |
|
Создано: 20 июня 2013 15:28 · Личное сообщение · #2 |
|
Создано: 20 июня 2013 23:14 · Личное сообщение · #3 |
|
Создано: 21 июня 2013 13:12 · Личное сообщение · #4 Veliant пишет: Напишите свою dll, которая будет из dllmain вызывать _setmode(_fileno(stdout), _O_U16TEXT);Потом либо через инжектор запускайте, либо добавьте свою либу в импорт, чтоб автоматически подтягивалась А нет ли уже какой-нибудь готовой универсальной утилиты для инжекта или правки таблицы импорта? Или может быть дадите ссылки на примеры кода, как самому написать инжектор или правку импорта? |
|
Создано: 21 июня 2013 13:21 · Личное сообщение · #5 OSA пишет: Ютилиту LogonSessions можно написать самому. LogonSessions - это просто пример одной утилиты. У Sysinternals их много, и большая часть из них имеет проблемы с Unicode. Поэтому и спрашиваю про вариант автоматического инжекта, применяемого с минимальными телодвижениями для любой Sysinternals-утилиты. А вообще советую также взглянуть на аналогичные утилиты: mimikatz и WCE. Спасибо. А не подскажите какие-либо консольные утилиты для перечисления: - Windows desktops; - Windows Stations; - COM Classes; - ActiveX Controls; - DCOM Classes. |
eXeL@B —› Программирование —› Патч (или инжект) exe-файла для правильного Unicode-вывода в консоль |