Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fusix
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 133
#1

Создание потока в чужом процессе - C++

19.11.2011, 00:01. Просмотров 690. Ответов 0
Метки нет (Все метки)

Всем привет. Возник вопрос...
Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <windows.h>
 
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
DWORD __stdcall ThreadMain(LPVOID lpParameter);
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
 
DWORD __stdcall ThreadMain(LPVOID lpParameter)
{
    return true;
}
 
BOOL Inject(HANDLE hProc, DWORD(WINAPI* ThreadMain)(LPVOID))
{
    DWORD ThreadId;
    DWORD ByteOfWriten;
    LPVOID hModule = GetModuleHandle(0);
    LPVOID *NewMemory;
 
    DWORD size=((PIMAGE_OPTIONAL_HEADER)((LPVOID)((BYTE*)(hModule)+((PIMAGE_DOS_HEADER)(hModule))->e_lfanew+sizeof(DWORD)+sizeof(IMAGE_FILE_HEADER))))->SizeOfImage;
 
    NewMemory = (LPVOID*)VirtualAllocEx(hProc, 0, size, MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
 
    if(NewMemory == NULL) return false;
 
    WriteProcessMemory(hProc, NewMemory, hModule, size, &ByteOfWriten);
 
    if(ByteOfWriten != size) return false;
 
    HANDLE hThread = CreateRemoteThread(hProc, NULL, 0, ThreadMain, NewMemory, 0, &ThreadId);
 
    if(hThread == 0) return false;
 
    return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int PID = StrToInt(Edit1->Text);
    HANDLE hP = OpenProcess(PROCESS_ALL_ACCESS, false, PID);
    Inject(hP, &ThreadMain);
}
//---------------------------------------------------------------------------
На участке создания потока
C++
1
    HANDLE hThread = CreateRemoteThread(hProc, NULL, 0, ThreadMain, NewMemory, 0, &ThreadId);
Случается ошибка этого потока. Поток создается, но дело в том, что когда я пишу в свой процесс, все хорошо, а когда в чужой... поток завершается с ошибкой. Как мне кажется, оно не находит функцию старта в чужом процессе, хотя я её записываю.... почему так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 00:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание потока в чужом процессе (C++):

Управление памятью в чужом процессе используя его апи - C++
За пару дней с++ не со многими вещами разобрался, поэтому мог написать местами глупости. Суть: Внедряю dll(сплайсинг). Некоторые...

Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном процессе) - C++
Здравствуйте! Есть задание: Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном...

Создание потока из потока. - C++
Надо создать поток 1, в нем создать поток 2, сам я жуткий дураг, немаловероятно что правильного в коде вообще ничего нет ) ругается...

Создание потока - C++
В общем дело такое, есть функция main, само собой, и есть функция void music (), void music () { Beep(1046, 300); //до Beep(1046,...

Создание потока - C++
Доброй всем ночи! Перерыскал cplusplus.com, но так и не разобрался. Может ли кто-нибудь подсказать, как создать поток, который бы...

Создание нового потока - C++
Вот тут выдаёт ошибку. DWORD thID; CreateThread(NULL,NULL,SexToClient, &amp;client_socket,NULL,&amp;thID); } ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 00:01
Привет! Вот еще темы с ответами:

Создание потока в классе - C++
Всем здрасьте ! Меня волнует вопрос: Как создать поток в классе ? Находил много реализаций, но они уж что-то громоздкие, аж на...

Рекурсивное создание потока - C++
написал пример вызова. но только вот отрабатывает вся эта ерунда не совсем верно. нужно: создать 10 потоков и чтобы каждый из потоков в...

Создание консоли для потока - C++
Вомзожно ли создать несколько консолей для одного процесса ? Хотелось бы каждому потоку выделить консоль для ввода/вывода...

Создание объекта класса из потока - C++
Всем привет. Пишу простенькую игрушку, понадобилось для нее подобие движка(сразу оговорюсь: для рендеринга используется OpenGL, игра...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.