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

Внедрение динамической библиотеки - C++

Восстановить пароль Регистрация
 
fcnfgtyrjd3004
1 / 1 / 0
Регистрация: 06.12.2013
Сообщений: 61
03.01.2016, 13:15     Внедрение динамической библиотеки #1
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
#include <windows.h>
#include <tlhelp32.h>
 
LRESULT CALLBACK WindowProcedure (HWND,UINT,WPARAM,LPARAM);
char szClassName[ ] = "0";
int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
HWND hwnd;           
MSG messages;         
WNDCLASSEX wincl;   
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;   
wincl.style = CS_DBLCLKS;               
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL,IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL,IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = 0;               
wincl.cbClsExtra = 0;                   
wincl.cbWndExtra = 0;                   
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND+7;
if (!RegisterClassEx (&wincl))
return 0;
hwnd = CreateWindowEx (0,szClassName,"",WS_SYSMENU|WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,0,0,HWND_DESKTOP,0,hThisInstance,0 );
while (GetMessage (&messages,0,0,0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
HWND Input1,Input2;
HWND Inject;
 
 
BOOL SetPrivilege(LPSTR type) 
{
HANDLE Htoken;
TOKEN_PRIVILEGES tokprivls;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&Htoken))
{
return 0;
}
tokprivls.PrivilegeCount = 1;
LookupPrivilegeValue(NULL, type, &tokprivls.Privileges[0].Luid);
tokprivls.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
BOOL Success =AdjustTokenPrivileges( Htoken,FALSE,&tokprivls, sizeof(tokprivls),0,0);
CloseHandle(Htoken);
return Success;
}
HANDLE GetHandle(char *proc)
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE Snap = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
Process32First(Snap,&pe32);
do
{
if(stricmp(pe32.szExeFile,proc)==0)
{
SetPrivilege(SE_DEBUG_NAME);
return OpenProcess(PROCESS_ALL_ACCESS,0,pe32.th32ProcessID);
}
}
while(Process32Next(Snap,&pe32));CloseHandle(Snap);
}
void InjectDll(char* Name, char *path)
{
HANDLE hProcess = GetHandle(Name);
if(hProcess)
{
int DllPath = strlen(path) + 20;
LPVOID MemSp = VirtualAllocEx(hProcess,NULL,DllPath,MEM_COMMIT,PAGE_READWRITE);
WriteProcessMemory(hProcess,MemSp,path,DllPath,0);
HANDLE hThread = CreateRemoteThread(hProcess,0,0,(LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("Kernel32.dll"),"LoadLibraryA"), MemSp,0,0);
if(hThread)
{
WaitForSingleObject(hThread,100);
CloseHandle(hThread);
}
VirtualFreeEx(hProcess,MemSp,0,MEM_RELEASE);
}      
}
 
char proc[50],dll[260];
LRESULT CALLBACK WindowProcedure (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{  
switch (message)             
{
case WM_CREATE:    
 
 
 
Input1 = CreateWindow("Edit", "OPERATION7.exe",0,0,0,0,0,0,0,0,0);
Input2 = CreateWindow("Edit", "C:\\ole32.dll",0,0,0,0,0,0,0,0,0);
SendMessage(Input1,WM_GETTEXT,sizeof(proc),LPARAM(proc));
if(proc!=0)
SendMessage(Input2,WM_GETTEXT,sizeof(dll),LPARAM(dll));
if(dll!=0)
InjectDll(proc,dll);
FatalExit(0);       
}
return TRUE;
}
в данном случае инжект происходит из C:\\ole32.dll я чот после праздников не могу не как понять
почему если я не указываю каталог C:\\ инжекта не происходит в процесс
вопрос в том что если я инжектор и саму dll допустим на рабочий стол положу рядом и не указывая каталог C:\\
просто запишу название ole32.dll или даже так \\ole32.dll не чего не происходит
не могли бы вы подсказать как правильно сделать инжект из текущего каталога (папки и т.п) если dlll и инжект будет рядом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,297
Завершенные тесты: 1
03.01.2016, 15:58     Внедрение динамической библиотеки #2
Цитата Сообщение от fcnfgtyrjd3004 Посмотреть сообщение
почему если я не указываю каталог C:\\ инжекта не происходит в процесс
Потому что путь к dll получается относительный, а не абсолютный, и
создаваемый удаленный поток ищет эту dll не там, где она лежит.

Цитата Сообщение от fcnfgtyrjd3004 Посмотреть сообщение
не могли бы вы подсказать как правильно сделать инжект из текущего каталога (папки и т.п) если dlll и инжект будет рядом
Определить полный путь к каталогу, дописать туда название dll. Все.
fcnfgtyrjd3004
1 / 1 / 0
Регистрация: 06.12.2013
Сообщений: 61
03.01.2016, 16:31  [ТС]     Внедрение динамической библиотеки #3
я просто подумал что возможно сделать и без указания пути к данному каталогу если и dll и injekt лежат рядом
ну все же спасибо за ответ, а то я уже пол googla перечитал) в поисках своего ответа
думал возможно

Добавлено через 6 минут
хотел сотворить на подобие этого
http://www.youtube.com/watch?v=V5krjb_sH9s
только что бы прям из архива происходил инжект
не помещая файл в ресурсы и не хочется просто что бы dll вобщем отдельно лежала на диске
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
03.01.2016, 16:41     Внедрение динамической библиотеки #4
Потому что ole32 есть в KnownDLLs, с другим именем попробуй.
https://msdn.microsoft.com/ru-ru/lib...=vs.85%29.aspx

Добавлено через 2 минуты
Цитата Сообщение от fcnfgtyrjd3004 Посмотреть сообщение
только что бы прям из архива происходил инжект
не помещая файл в ресурсы и не хочется просто что бы dll вобщем отдельно лежала на диске
Теоретически, конечно, всё возможно, но это будет очень проблематично.
fcnfgtyrjd3004
1 / 1 / 0
Регистрация: 06.12.2013
Сообщений: 61
03.01.2016, 16:50  [ТС]     Внедрение динамической библиотеки #5
я и так тож пробовал переименовать
результат тот же)
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,297
Завершенные тесты: 1
03.01.2016, 17:23     Внедрение динамической библиотеки #6
Цитата Сообщение от fcnfgtyrjd3004 Посмотреть сообщение
я просто подумал что возможно сделать и без указания пути к данному каталогу если и dll и injekt лежат рядом
Возможно. Но только в том случае, если current directory у этого exe указывает на этот каталог,
или он прописан для данной программы либо в dll search path, либо в переменной %Path%.
Somebody выше привел очень четкую ссылку по этой теме, т.е. как загрузчик dll
узнает, откуда ему нужно загружать эту dll, а также каков порядок поиска.
Yandex
Объявления
03.01.2016, 17:23     Внедрение динамической библиотеки
Ответ Создать тему
Опции темы

Текущее время: 16:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru