Запуск процессов с командой перенаправления вывода
Для перенаправления ввода и вывода консольных приложений используются специальные символы командной строки "<", ">" и "|". Например:tree c:\windows > out.txt
В этом случае вывод команды tree вполне ожидаемо будет сохранен в файл out.txt. Но если попытаться выполнить эту же команду средствами WinAPI, например, через функции WinExec, CreateProcess или ShellExecute(Ex), то нужного результата достигнуто не будет. Дело в том, что перенаправление обрабатывается только командным процессором, а функции WinAPI просто передают командную строку в неизменном виде, то есть программе "tree" будут переданы параметры "c:\windows > out.txt". В большинстве случаев они окажутся просто некорректными с точки зрения программы, а могут привести к неожиданным результатам.
Code (Assembler) : Убрать нумерацию
- ; Выполнить напрямую команду с перенаправлением
- invoke WinExec,exec_re,SW_SHOW
- ...
- ...
- exec_re db 'c:\Windows\System32\tree.com c:\Windows\System32 >out.txt',0
Если вы хотите, чтобы эти символы интерпретировались в вашем приложении как операторы перенаправления вывода, то вам нужно передавать их командному процессору следующим образом:
cmd.exe /c tree c:\windows > out.txt
Хорошим тоном будет сперва узнать, где в системе обитает командный процессор. Сделать это можно, получив значение переменной окружения COMSPEC.
Code (Assembler) : Убрать нумерацию
- ; Получить переменную окружения COMSPEC
- ; со ссылкой на командный процессор
- invoke GetEnvironmentVariable,variable,cmd,100h
- ; Дописать ключ /c
- invoke lstrcat,cmd,exec_add
- ; Дописать выполняемую команду с перенаправлением
- invoke lstrcat,cmd,exec_re
- ; Выполнить команду через командный процессор
- invoke WinExec,cmd,SW_SHOW
- ...
- ...
- exec_re db 'c:\Windows\System32\tree.com c:\Windows\System32 >out.txt',0
- exec_add db ' /c ',0
- variable db 'COMSPEC',0
Просмотров: 2091 | Комментариев: 3
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(09.07.2019 в 09:51):
Это нормально. Кому-то нравится попадья, а кому-то свиной хрящик.
dma
(09.07.2019 в 09:46):
ManHunter, немного не хватает вашему блогу равномерности интересов среди ваших читателей. В каких-то ветках число комментариев порой зашкаливает за сотню, а здесь ни одного. Я решил хоть как-то исправить эту несправедливость. Но вы ж понимаете, мои возможности, к сожалению (а может и к счастью :)), достаточно скромны, а так бы я с радостью организовал бы здесь сто положительных отзывов. Видимо люди не слышали о таком понятии как шеллкод, а эта ветка как бы предподготовка к нему. Я правильно мыслю или нет? :) К чему это я? К спасибе, естественно, а к чему еще. :)
Добавить комментарий
Заполните форму для добавления комментария
На меня, видимо, произвела впечатление эта тема, потому что я недавно интересовался ей, а эта ветка явилась как бы приятным бонусом к моим знаниям. Как говорится, кто предупрежден - тот вооружен. Вдруг когда-нибудь буду заниматься плотно этой темой и всплывет подобная проблема.