Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Хитрое консольное приложение


Автор: Vovkin 8.9.2007, 00:18
Есть консольная программка. При запуске ждет ввода строки с клавиатуры
и при нажатии ввод выполняет какие-то действия и закрывается.
Решил поуправлять ею дистанционно через pipe. Это хорошо описано
в инете.
Так вот. При таком способе (через pipe) программа не выводит запрос
и никак не реагирует на запись строки в стандартный pipe.
С другими программами (в том числе cmd.exe) моя управлялка отлично
работает, а с этой нет. Стоит перенаправить ввод и он пропадает вовсе.
В чём может быть причина. Исходником этой консольной программы нет.
Она кем-то когда то писалась. Может кто сталкивался с такими консольками?
Может она как то хитро написана.
И самое интересное, что команды вывода и ввода из файла работают.
Т.е. если я перенаправляю ввод-вывод, то не работает.
А если прямо при вызове делаю > file.txt или < file.txt, то в файлах
отражаются результаты и данные из файла тоже берутся и подставляются
как при вводе.

Автор: Tectoder 8.9.2007, 09:42
На самом деле и консоль, и файл, и пайп отличаются друг от друга.
Если твой программа(консольная) этого не учитывает, то у нее будут трабблы.
Попробуй писать в пайп всю информацию перед передачей, авось поможет

Автор: Vovkin 8.9.2007, 23:28
 А как например из моей программы запустить консольную (DOS) программу и там
сымитировать нажатия клавишь клавиатуры? Без перенаправления ввода-вывода.

Автор: Tectoder 8.9.2007, 23:54
эмм, кажеться никак smile

Автор: Vovkin 9.9.2007, 15:10
Программка оказалась очень хитрая.
Она даже не реагирует на SendMessage в своё консольное окно.
Если какой-нить cmd.exe запустить, то всё работает.
Что-то мне говорит, что это какая-то чисто досовская программа,
которая вообще на винду чихает.

Автор: Tectoder 9.9.2007, 16:33
Консольные окна не реагируют на SendMessage. Потому что лежат в другой станции

Автор: W4FhLF 9.9.2007, 17:02
При запуске программы в процессах появляется ntvdm.exe? 

Автор: Vovkin 9.9.2007, 17:20
Цитата(W4FhLF @ 9.9.2007,  17:02)
При запуске программы в процессах появляется ntvdm.exe?

Даю Я как раз хотел написать, что выяснил, что
прога запускается под ntvdm.
Есть какие-нить варианты борьбы с этой прогой?

Автор: W4FhLF 9.9.2007, 17:51
Стандартных способов нет. Из прочего, реверсить виртуальную машину, смотреть как она выводит на консоль и делать перехват этого функционала в процессе ntvdm.exe.

Автор: Vovkin 9.9.2007, 22:34
Цитата(W4FhLF @ 9.9.2007,  17:51)
Стандартных способов нет. Из прочего, реверсить виртуальную машину, смотреть как она выводит на консоль и делать перехват этого функционала в процессе ntvdm.exe.

А может есть возможность перенаправить ввод вывод ntvdm?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)