Форум программистов, компьютерный форум CyberForum.ru

Run exe from memory (x64) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Я по по воду хакерства.В последнее время это меня очень сильно заинтересовало может посоветуете чего нибудь(книги,программы и тд ) буду очень благодар http://www.cyberforum.ru/cpp/thread1107677.html
Прошу прощения , но я не нашел подходящей темы и решил написать сюда т.к. единственное что я знаю это С++ и то плоховато)) вы наверное подумаете " еще один про хакер"
C++ Как с помощью Bitblt нарисовать линию из '*'? как с помощью Bitblt нарисовать линию из таких символов *? http://www.cyberforum.ru/cpp/thread1107399.html
Как должен выглядеть POST и GET запросы к нужному ресурсу? C++
Всем привет! Пишу приложение, используя библиотеку cURL и застрял на том, что не могу определить как должен выглядеть POST и GET запрос к нужному ресурсу? Как это определять? P.S. Правильно ли я понимаю (в общих чертах), что POST запрос нужно формировать для авторизации (получение куков), после чего GET запросами мы переходим по директории ресурса?
C++ Необходимо дописать программу
Здравствуйте. Нужна помощь в написании программы, точнее её частичном изменении. Вот исходники программы. На картинке изобразил, что хотелось бы получить в итоге:
C++ Твитнуть через cURL http://www.cyberforum.ru/cpp/thread1104522.html
Всем привет! Хочу твитнуть используя следующий код: int main() { setlocale(LC_ALL,""); std::string twit("Hello world!"); //Вместо этого нужно создать алгоритм считывания строки CURL* curl = curl_easy_init(); //Инициализация объекта curl CURLcode res; //объект результата вызова perform
C++ Возможно ли создать свою фцию system() и как это сделать? Возникла потребность реализовать вызов ф-ции system() без упоминания таковой (то есть слова system). Как можно это сделать. Возможно ли создать свою фцию system() и как это сделать? Буду рад любым линкам по этой теме и любой помощи (Желательно не использовать сторонних библиотек, все в 1 файл) подробнее

Показать сообщение отдельно
Убежденный
Системный программист
Эксперт С++
15102 / 6797 / 1073
Регистрация: 02.05.2013
Сообщений: 11,111
Завершенные тесты: 1
03.03.2014, 20:54     Run exe from memory (x64)
Приведу две цитаты со StackOverflow:

1.
It's actually quite easy. Similar technique has been described in a paper I read like 3 years ago.

Windows allow you to call the CreateProcess function with CREATE_SUSPENDED flag, that tells the API to keep the process suspended until the ResumeThread function is called.

This gives us time to grab the suspended thread's context using GetThreadContext function, then the EBX register will hold a pointer to the PBE(Process Enviroment Block) structure, which we need to determine the base address.

From the layout of the PBE structure we can see that the ImageBaseAddress is stored at the 8th byte, therefore [EBX+8] will give us actual base address of the process being suspended.

Now we need the in-memory EXE and do appropiate alignment if the alignment of memory and in-memory EXE differs.

If the base address of suspended process and in-memory exe matches, plus if the imageSize of the in-memory exe is lesser or equal to the suspended process' we can simply use WriteProcessMemory to write in-memory exe into the memory space of the suspended process.

But if the aforementioned conditions weren't met, we need a little more magic. First, we need to unmap the original image using ZwUnmapViewOfSection, and then allocate enough memory using VirtualAllocEx within the memory space of the suspended process. Now we need to write the in-memory exe into the memory space of the suspended process using the WriteProcessMemory function.

Next, patch the BaseAddress of the in-memory exe into the PEB->ImageBaseAddress of the suspended process.

EAX register of the thread context holds EntryPoint address, which we need to rewrite with the EntryPoint address of the in-memory exe. Now we need to save the altered thread context using the SetThreadContext function.

Voila! We're ready to call the ResumeThread function on the suspended process to execute it!
2.
This is a major hack, and you should really avoid doing it. If you want to start a new process then the only guaranteed way to make it work without issue is to launch an executable that resides in the filesystem. Anything else is a hack and you can't rely on it working in the future.
В п.2 подписываюсь под каждым словом.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru