Сейчас на форуме: UniSoft, _MBK_, laslo, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Инжект кода в процесс |
Посл.ответ | Сообщение |
|
Создано: 27 июля 2011 16:22 · Личное сообщение · #1 Здраствуйте... Пишу простый инжектор кода в процесс(win32). Использую CreateRemoteThread. Внедряю код функции которая должна запустится в новом потоке удаленного процесса. Все вроде норм. но у меня траблы с WriteProcessMemory. вот кусок кода си++: [code] int main (void) { DWORD dwThreadId = 0, pID=0; void *pRemoteThread = NULL; char ExeFile[1024] = {0}; HANDLE hProcess = NULL, hSnap = NULL; HINSTANCE hUser = NULL; RPar my_RPar, *pmy_RPar = NULL; PROCESSENTRY32 pe32 = {0}; DWORD dwThreadSize = 2048; GetPrivilege("SeDebugPrivilege"); //получаю SeDebugPrivilege hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,FindProcessByName("calc.exe")); //открываю процесс if(hProcess == NULL) return FALSE; cout<<"opened\n"; //выделяю память pRemoteThread=VirtualAllocEx(hProcess,0,dwThreadSize,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE); if(pRemoteThread == NULL) return FALSE; cout<<"alloc\n"; //и тут облом - хочу писать данные в память if(!WriteProcessMemory(hProcess, (LPVOID)pRemoteThread, (LPCVOID)&ThreadProc, dwThreadSize, 0) ) {cout<<"error:"<<GetLastError()<<endl;system("PAUSE");return FALSE;} cout<<"wrote code\n"; system("PAUSE"); .................... [/code] WriteProcessMemory выдает ERROR_ACCESS_DENIED хотя я использую SeDebugPrivilege да и система у меня Win32 SP3 помогите разобратся...может существует лучшый способ инжекта кода(не dll) спасибо |
|
Создано: 27 июля 2011 16:37 · Личное сообщение · #2 |
|
Создано: 27 июля 2011 17:03 · Личное сообщение · #3 |
|
Создано: 27 июля 2011 17:22 · Личное сообщение · #4 Пример инжекта с CreateRemoteThread есть у Рихтера. Там хорошо все описано. Не надо GetPrivilege("SeDebugPrivilege"). | Сообщение посчитали полезным: maxteam |
|
Создано: 27 июля 2011 17:53 · Личное сообщение · #5 maxteam пишет: а что изменится? Появится уверенность что источник копирования целиком присутствует в памяти. | Сообщение посчитали полезным: maxteam |
|
Создано: 27 июля 2011 18:10 · Личное сообщение · #6 maxteam пишет: pRemoteThread=VirtualAllocEx(hProcess,0,dwThreadSize,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE); MEM_RESERVE убери | Сообщение посчитали полезным: maxteam |
|
Создано: 27 июля 2011 18:54 · Личное сообщение · #7 |
|
Создано: 27 июля 2011 19:38 · Поправил: VodoleY · Личное сообщение · #8 maxteam а если ты инжектить код хош нафиг тебе треад? и как собственно ты собираешься свою треад запускать, отпускать.. ведели себе место в удалленном процессе, скопируй туды код. и перехвати ченить из проги, тут больше вырусная технология как по мне, а не рихтор ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 27 июля 2011 19:57 · Личное сообщение · #9 VodoleY пишет: как собственно ты собираешься свою треад запускать, отпускать.. ведели себе место в удалленном процессе, скопируй туды код я открываю процесс OpenProcess, веделяю память VirtualAllocEx, копирую код и данные WriteProcessMemory, дальше думаю запускать все это с помощъю CreateRemoteThread. |
|
Создано: 27 июля 2011 21:19 · Поправил: VodoleY · Личное сообщение · #10 VodoleY супер. зачем? как? при каком условии? для чего? если ты хош нагнуть ченить или стырить данные после обработки процедуры нафига треад делать? или я чет не в ТЗ не дочитал? З.Ы. очень уж специфика интересна на какие такие цели тебе именно треад в чужом процессе надо? возможно ты свой велик с колесами квадратными сооружаеш? може проще можно? ибо треадом управлять надо ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 27 июля 2011 22:23 · Личное сообщение · #11 VodoleY пишет: для чего? если ты хош нагнуть ченить или стырить данные после обработки процедуры нафига треад делать? или я чет не в ТЗ не дочитал? VodoleY пишет: тут больше вырусная технология как по мне, ничего вредоносного в использовании хорошо документированых функций на msdn не вижу... я работаю с окнами, порожденными другим процессом.... |
|
Создано: 27 июля 2011 23:29 · Личное сообщение · #12 |
|
Создано: 28 июля 2011 09:27 · Личное сообщение · #13 |
|
Создано: 30 июля 2011 21:15 · Личное сообщение · #14 |
|
Создано: 31 июля 2011 11:47 · Личное сообщение · #15 |
eXeL@B —› Программирование —› Инжект кода в процесс |