Русский / Russian English / Английский

Сейчас на форуме: (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› PsExec - Вывод в консоль
Посл.ответ Сообщение


Ранг: 469.0 (мудрец)
Статус: Участник
[www.AHTeam.org]

Создано: 10 февраля 2012 03:52 New!
Цитата · Личное сообщение · #1

Дароф всем ;)

Собственно есть известная программка - PsExec.exe --> Link <-- для удаленного запуска порог и т.п. Но есть одна проблем, она не делает лог файлов, т.е. в консоль не выводит результаты своей работы.

Все, что она может вывести - это свой хэлп ( если хапусить PsExec.exe >> log.txt)

что б потестить, можно запускать так: PsExec.exe \localhost calc

Должно вывести: Couldn't access localhost:

Вывод происходит тут:

Code:
  1.   /*40294A*/  PUSH PsExec.00428C84
  2. /*40294F*/  CALL PsExec.004069CC  //culd acc


нормальный вывод в констоль:
Code:
  1. /*404BA0*/  PUSH PsExec.0042A7C0
  2. /*404BA5*/  CALL PsExec.00408375


Проблема в том, что Couldn't access localhost: и прочая нужная инфа выводится в юникоде, а правильный вывод в консольку - в ASCII.


Кроме того в в импорте присутствуют функции типа WriteConsoleA и WriteConsoleW


Вопрос: как бы там грамотно вывести на примере строки "Couldn't access localhost:" в консоль ( что бы сработало ">> log.txt"

Ранг: 3.6 (гость)
Статус: Участник

Создано: 10 февраля 2012 04:30 · Поправил: kiber_punk New!
Цитата · Личное сообщение · #2

Не нужно глубоко копать и дизасмить.

>> а правильный вывод в консольку - в ASCII.
Неа. Вывод зависит от настроек этой самой консоли.

Запускай консольку в юникоде и не мучайся.
cmd /u


Ранг: 469.0 (мудрец)
Статус: Участник
[www.AHTeam.org]

Создано: 10 февраля 2012 04:53 New!
Цитата · Личное сообщение · #3

Ладно, задам вопрос подругому: у мну в eax указатель на строку в юникоде, как мне ее переконвертить в аски?

Ранг: 3.6 (гость)
Статус: Участник

Создано: 10 февраля 2012 05:44 New!
Цитата · Личное сообщение · #4

уфф... помоему вопрос звучал несколько иначе - "вывести строку в консоль, что бы сработало ">> log.txt"
Т.е. корректно перенаправить вывод в файл.

Не зачем изобретать велосипед, а переконвертировать строку средствами самой консоли.


Ранг: 469.0 (мудрец)
Статус: Участник
[www.AHTeam.org]

Создано: 10 февраля 2012 05:57 New!
Цитата · Личное сообщение · #5

как это сделать?

Ранг: 3.6 (гость)
Статус: Участник

Создано: 10 февраля 2012 06:51 · Поправил: kiber_punk New!
Цитата · Личное сообщение · #6

Я уже выше писал об этом.
Запускай консоль в режиме Юникода:
cmd /u
а из неё уже переправляй вывод из psexec в файл тем же способом.

Ранг: 85.4 (постоянный)
Статус: Участник

Создано: 10 февраля 2012 09:22 New!
Цитата · Личное сообщение · #7

команда chcp меняет кодировку

Ранг: 3.6 (гость)
Статус: Участник

Создано: 10 февраля 2012 09:52 New!
Цитата · Личное сообщение · #8

>> команда chcp меняет кодировку
chcp меняет кодовую страницу, но не кодировку.

Перевести вывод консоли в режим юникода можно лишь [пере]запустив командный процессор с ключом /u

KingSise, оно:
%comspec% /u /c PsExec.exe \localhost calc >> log.txt
?

Ранг: 281.8 (наставник)
Статус: Участник
Destroyer of protectors

Создано: 10 февраля 2012 10:21 · Поправил: MasterSoft New!
Цитата · Личное сообщение · #9

KingSise пишет:
в eax указатель на строку в юникоде, как мне ее переконвертить в аски?


Code:
  1. mov ebx, eax
  2. push    eax //src
  3. call    lstrlenW
  4. mov     edx, 004010AB //dest
  5. @loop:
  6. mov     cx, word ptr [ebx]
  7. mov     byte ptr [edx], cl
  8. inc     edx
  9. add     ebx, 0x2
  10. sub     eax, 0x1
  11. test    eax, eax
  12. jnz     @loop


так?


Ранг: 2011.4 (!!!!)
Статус: Модератор
retired

Создано: 10 февраля 2012 10:56 New!
Цитата · Личное сообщение · #10

И половина кодировок типа китайской отвалятся. Есть же нормальные апи для конвертации MultiByteToWideChar и наборот соответственно.

| Сообщение посчитали полезным: yagello



Ранг: 106.9 (ветеран)
Статус: Участник

Создано: 10 февраля 2012 21:34 New!
Цитата · Личное сообщение · #11

Archer пишет:
И половина кодировок типа китайской отвалятся. Есть же нормальные апи для конвертации MultiByteToWideChar и наборот

Ну если брать во внимание кодировки, особенно если понадобится китайская, то придется следить за локалью и выставлять нужную через setlocale. Иначе при конвертации из Unicode в ANSI произойдет потеря символов.


Ранг: 469.0 (мудрец)
Статус: Участник
[www.AHTeam.org]

Создано: 12 февраля 2012 15:14 New!
Цитата · Личное сообщение · #12

kiber_punk пишет:
Перевести вывод консоли в режим юникода можно лишь [пере]запустив командный процессор с ключом /u


К сожалению с PsExec такой трюк не проходит, там походу просто нету вывода...

Зато есть kernel32.WriteConsoleW ;) Так что кое как вывод организовать удалось, не совсем так как хотелось, но все же ;)
 eXeL@B —› Основной форум —› PsExec - Вывод в консоль

Видеокурс ВЗЛОМ