создание канала, выполните консоль CreateProcess программы () и читайте с ReadFile () или записи в консоли WriteFile ()
HANDLE hRead ; // ConsoleStdInput
HANDLE hWrite; // ConsoleStdOutput and ConsoleStdError
STARTUPINFO stiConsole;
SECURITY_ATTRIBUTES segConsole;
PROCESS_INFORMATION priConsole;
segConsole.nLength = sizeof(segConsole);
segConsole.lpSecurityDescriptor = NULL;
segConsole.bInheritHandle = TRUE;
if(CreatePipe(&hRead,&hWrite,&segConsole,0) )
{
FillMemory(&stiConsole,sizeof(stiConsole),0);
stiConsole.cb = sizeof(stiConsole);
GetStartupInfo(&stiConsole);
stiConsole.hStdOutput = hWrite;
stiConsole.hStdError = hWrite;
stiConsole.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
stiConsole.wShowWindow = SW_HIDE; // execute hide
if(CreateProcess(NULL, "c:\\teste.exe",NULL,NULL,TRUE,NULL,
NULL,NULL,&stiConsole,&priConsole) == TRUE)
{
//readfile and/or writefile
}
}
PEiD - это инструмент, который вам нужен. Он может обнаруживать множество распаковщиков, пытаться распаковать любой упакованный exe (независимо от схемы упаковки), выполнять простую разборку, обнаруживать алгоритмы шифрования, присутствующие в исходном коде (не схема шифрования exe, чтобы быть ясным), и многое другое. Но в первую очередь это идентификатор упаковщиков, шифровальщиков и компиляторов exe.
Во многих случаях упакованный исполняемый файл начинается с программы запуска, за которой следует стандартный zip-файл. Это возможно, потому что заголовок ZIP находится в конце файла, поэтому вы можете добавить произвольные данные в zip-файл, и он останется zip-файлом. Попробуйте разархивировать его и посмотрите, работает ли это.