Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033

VirtualAllocEx возвращает ошибку The handle is invalid

18.12.2012, 18:15. Показов 5661. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вопрос собственно уже в заголовке , не пойму почему ? Хэндл точно находит нормально !!!
C++
1
VirtualAllocEx(hSnap,hModule,size, MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2012, 18:15
Ответы с готовыми решениями:

VirtualAllocEx возвращает ошибку 487
Здравствуйте! HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, false, process_id); new_memory = (DWORD)VirtualAllocEx(handle,...

Непонятный баг (я думаю с BS_OWNERDRAW); выдает ошибку 6(invalid handle)
В общем пишу что-то вроде менеджера загрузок(пока что только окошко к нему). Использую winapi. Все хорошо, создал окошки, кнопочки...

Ошибка Invalid BLOB Handle in record buffer
привет! Как прочитать строку из MEMO-поля? Я просто ставил ей .AsString - Сначала работает, но через несколько таких прочтений...

28
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
19.12.2012, 12:29
Студворк — интернет-сервис помощи студентам
Вот, попробуй мою библу и приложение. В папках Release есть бинарники. Только сейчас скомпилировал из архива своего (код старый, поэтому кривой как турецкая сабля, но работает ).
Кидаешь dll в c:\windows\SysWOW64\, запускаешь Injecter, вводишь pid 32-х битного процесса и смотришь. Если dll заинжектится, то она ответит. Пишешь test - она должна ответить "Test connection...". Пишешь exit - dll выгружается из процесса и выкидывает MessageBox.
Вложения
Тип файла: zip Inject.zip (894.0 Кб, 16 просмотров)
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
19.12.2012, 14:57  [ТС]
не могли бы кинуть вот этот файл , а то у меня отсутствует - msvcp110.dll
0
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
19.12.2012, 15:38
Тут одним msvcp110.dll не отделаешься, т.к. зависимости вылезут еще...
Вот во вложении пересобрал со статической линковкой. Если Win7, то должно пойти. Для XP надо перекомпилить в VS2012 SP1 (у меня без SP).
Вложения
Тип файла: zip bins.zip (105.1 Кб, 16 просмотров)
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
19.12.2012, 21:54  [ТС]
Спасибо , действительно на 32 битных приложениях работает как надо , буду разбираться с вашим кодом , что бы сделать функцию по инжекту

Добавлено через 1 час 3 минуты
Рассказываю о своих продвижениях - сделал программу dll инжектится и даже если после инжекта пробывать удалить пишет , что она открыта в подъопытном процессе , но вот беда в моей dll не выполняется код при чём вообще не какой , с чего бы это ?

Добавлено через 2 часа 48 минут
WhiteP, вот моя dll причём она грузится в процесс , но код там не выполняется
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
#define EXTF extern "C" __declspec(dllexport)
#include "dll.h"
 
DWORD WINAPI ThreadProc(LPVOID Param);
 
BOOL WINAPI DllMain(HINSTANCE hInstDll,DWORD fdwReason, LPVOID Res)
{
 
    switch(fdwReason)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(NULL,0,ThreadProc,0,0,NULL);
        break;
    case DLL_PROCESS_DETACH:
        MessageBoxW(0,(LPCWSTR)L"Detaching",(LPCWSTR)L"OK!",MB_OK);
        break;
    case DLL_THREAD_ATTACH:
        break;
    case DLL_THREAD_DETACH:
        break;
    default:
        break;
    }
    return TRUE;
}
 
 
DWORD WINAPI ThreadProc(LPVOID Param)
{
MessageBox(0,"Hi it is I'm","Ok",MB_OK);
}
вот сама программа
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <windows.h>
 
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
 
/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
 
BOOL SetDebugPrivileges();
char name[]="My.dll";
 
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
 
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
 
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
 
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
 
    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;
 
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
 
    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);
 
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }
 
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}
 
 
/*  This function is called by the Windows function DispatchMessage()  */
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
           
           case WM_CHAR:
 
SetDebugPrivileges();
     
    HANDLE hProc; HANDLE hMMF,EventServ,EventClient;
    HANDLE hTR;
    LPVOID cmtmem;PBYTE pView;            
 
    DWORD pid ,f;
    pid=1752;
//  char cmd[255];
 
//  if(!SetDebugPrivileges()){cout<<"Debug privileges not set"<<endl;return 0;}
 
//  cout<<"Enter pid for inject: ";
//  cin>>pid;
 
    hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
// if(!hProc){GetErrText();return 0;}
 
     cmtmem=VirtualAllocEx(hProc,NULL,strlen(name)+1,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
//  if(!cmtmem){GetErrText();return 0;}
 
    hMMF=CreateFileMappingA(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,1024,"InjecterMMF");
    pView=(PBYTE)MapViewOfFile(hMMF,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);
    EventServ=CreateEventA(NULL,FALSE,FALSE,"ServEvent");
    EventClient=CreateEventA(NULL,FALSE,FALSE,"CliEvent");
 
    if(WriteProcessMemory(hProc,cmtmem,name,strlen(name)+1,NULL))
    {
        LPTHREAD_START_ROUTINE pfnLoad=(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandleA("kernel32.dll"),"LoadLibraryA");
//      if(!pfnLoad){GetErrText();return 0;}
 
         hTR=CreateRemoteThread(hProc,NULL,0,pfnLoad,cmtmem,0,NULL);
    //  if(!hTR){GetErrText();return 0;}
    }
                
            //    WaitForSingleObject(EventClient,INFINITE);//?aai eieoeaeecaoee DLL (cicaaiey iioiea)
//  if(!strcmp((PSTR)pView,"IFIN"))//anee a i?iaeoee ioaao ia oaa?iie eieoeaeecaoee
if(hTR!=0)  
{MessageBox(0,"ok","ok",0);}
                
                break;
           
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}
BOOL SetDebugPrivileges()
{
    TOKEN_PRIVILEGES tp;
    LUID luid;
    HANDLE hToken;
 
    if(!OpenProcessToken(GetCurrentProcess(),TOKEN_READ|TOKEN_ADJUST_PRIVILEGES,&hToken))
        {return FALSE;}
 
    if(!LookupPrivilegeValueA(NULL,"SeDebugPrivilege",&luid))
        {CloseHandle(hToken);return FALSE;}
 
    tp.PrivilegeCount=1;
    tp.Privileges[0].Luid=luid;
    tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
 
    if(!AdjustTokenPrivileges(hToken,FALSE,&tp,NULL,NULL,NULL))
        {CloseHandle(hToken);return FALSE;}
    
    CloseHandle(hToken);
    return TRUE;
}
буду очень признателен за помощь , мне просто надо , что бы загрузилась dll и что находится в case DLL_PROCESS_ATTACH: выполнилось.Заранее ОГРОМНЕЙШЕЕ СПАСИБО за поддержку !!!!!!!!!
0
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
19.12.2012, 22:53
У меня все работает. Единственное, переделал строки под Unicode и добавил return:

C
1
2
3
4
5
DWORD WINAPI ThreadProc(LPVOID Param)
{
MessageBox(0,"Hi it is I'm","Ok",MB_OK);
return 0;
}
Строки влиять не должны, по идее.
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
19.12.2012, 23:02  [ТС]
попробуй мою dll заинжектить если не трудно
Вложения
Тип файла: rar My.rar (4.0 Кб, 7 просмотров)
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
19.12.2012, 23:54  [ТС]
Я вот что подумал , быть может это из за того , что у меня Dev C++ и там что нибудь ещё надо дописать или изменить или ещё что то ? БЛИИИИИИИИИИИИИИИН !!! :wal l:
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
30.12.2012, 11:30  [ТС]
вот архив , в нём - подъопытная программа , программа которая вживляет , и dll , но происходит так - dll вживляется , но код из dll не выполняется
Вложения
Тип файла: rar inject.rar (19.4 Кб, 8 просмотров)
0
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
30.12.2012, 12:23
Игорь с++,
Если вечером будет время - гляну. Сейчас - режу салаты ))
Просмотрел msdn накануне - CreateThread должен вызываться как полагается. Может ошибка в коде? Просмотри Рихтера книгу еще раз по внедрению и dll главу.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.12.2012, 12:23

Метод OpenService не возвращает handle
var serviceHandle = OpenService( scManagerHandle, svc.ServiceName, SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG); ...

Созданная форма не возвращает(?) Handle
Доброго времени суток, господа программисты, будьте так любезны :) Суть: Попытки открытия другого приложения внутри windows формы(1...

OpenProcess возвращает разные handle запущенного др. приложения
привет. Вопрос такой - хочу получить handle процесса для использования в функциях VirtualAllocEx и WriteProcessMemory делаю так ...

Ошибка Exception EOSError in module .... System error. Code: 1400. Invalid window handle.
Доброе время суток! Я использовал поток в приложении CreateThread().. Примерно такая струкура приложения получилась: interface uses ...

Считать содержимое большого файла: ошибка "An invalid handle was specified"
Здравствуйте. Нужно считать содержимое большого файла (500,000 символов, включая пробелы и переходы на новую строку). Написал такой...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru