Сейчас на форуме: UniSoft, _MBK_, laslo, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Инжект кода в процесс
Посл.ответ Сообщение

Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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.7 (посетитель), 2thx
Активность: 0.01=0.01
Статус: Участник

Создано: 27 июля 2011 16:37
· Личное сообщение · #2

а если вместо

if(!WriteProcessMemory(hProcess, (LPVOID)pRemoteThread, (LPCVOID)&ThreadProc, dwThreadSize, 0) )

написать

if(!WriteProcessMemory(hProcess, (LPVOID)pRemoteThread, (LPCVOID)&dwThreadId, 1, 0) )

?



Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 июля 2011 17:03
· Личное сообщение · #3

ant_man

а что изменится? у меня dwThreadSize=2048, а если поставить 1 то запишем 1 байт...

BOOL WINAPI WriteProcessMemory(
__in HANDLE hProcess,
__in LPVOID lpBaseAddress,
__in LPCVOID lpBuffer,
__in SIZE_T nSize,
__out SIZE_T *lpNumberOfBytesWritten
);

сейчас попробую изменить размер



Ранг: 20.8 (новичок), 1thx
Активность: 0.010
Статус: Участник

Создано: 27 июля 2011 17:22
· Личное сообщение · #4

Пример инжекта с CreateRemoteThread есть у Рихтера. Там хорошо все описано.
Не надо GetPrivilege("SeDebugPrivilege").

| Сообщение посчитали полезным: maxteam

Ранг: 27.7 (посетитель), 2thx
Активность: 0.01=0.01
Статус: Участник

Создано: 27 июля 2011 17:53
· Личное сообщение · #5

maxteam пишет:
а что изменится?


Появится уверенность что источник копирования целиком присутствует в памяти.

| Сообщение посчитали полезным: maxteam

Ранг: 60.6 (постоянный), 87thx
Активность: 0.060
Статус: Участник

Создано: 27 июля 2011 18:10
· Личное сообщение · #6

maxteam пишет:
pRemoteThread=VirtualAllocEx(hProcess,0,dwThreadSize,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);

MEM_RESERVE убери

| Сообщение посчитали полезным: maxteam

Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 июля 2011 18:54
· Личное сообщение · #7

um0v пишет:
Пример инжекта с CreateRemoteThread есть у Рихтера. Там хорошо все описано.


ну я как бы по Рихтеру и делаю, только там инжект dll , а я хочу инжект кода



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 27 июля 2011 19:38 · Поправил: VodoleY
· Личное сообщение · #8

maxteam а если ты инжектить код хош нафиг тебе треад?
и как собственно ты собираешься свою треад запускать, отпускать.. ведели себе место в удалленном процессе, скопируй туды код. и перехвати ченить из проги, тут больше вырусная технология как по мне, а не рихтор

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 июля 2011 19:57
· Личное сообщение · #9

VodoleY пишет:
как собственно ты собираешься свою треад запускать, отпускать.. ведели себе место в удалленном процессе, скопируй туды код


я открываю процесс OpenProcess, веделяю память VirtualAllocEx, копирую код и данные WriteProcessMemory,
дальше думаю запускать все это с помощъю CreateRemoteThread.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 27 июля 2011 21:19 · Поправил: VodoleY
· Личное сообщение · #10

VodoleY супер. зачем? как? при каком условии? для чего? если ты хош нагнуть ченить или стырить данные после обработки процедуры нафига треад делать? или я чет не в ТЗ не дочитал?
З.Ы. очень уж специфика интересна на какие такие цели тебе именно треад в чужом процессе надо? возможно ты свой велик с колесами квадратными сооружаеш? може проще можно? ибо треадом управлять надо

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 июля 2011 22:23
· Личное сообщение · #11

VodoleY пишет:
для чего? если ты хош нагнуть ченить или стырить данные после обработки процедуры нафига треад делать? или я чет не в ТЗ не дочитал?

VodoleY пишет:
тут больше вырусная технология как по мне,


ничего вредоносного в использовании хорошо документированых функций на msdn не вижу...
я работаю с окнами, порожденными другим процессом....



Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 июля 2011 23:29
· Личное сообщение · #12

спасибо всем! разобрался...




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 28 июля 2011 09:27
· Личное сообщение · #13

Написал бы, в чём дело было, да закрыл тему.



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 30 июля 2011 21:15
· Личное сообщение · #14

maxteam пишет:
ничего вредоносного в использовании хорошо документированых функций на msdn не вижу...я работаю с окнами, порожденными другим процессом....

юзай оконные хуки и прехват обработчика оконного

-----
продавец резиновых утёнков





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 31 июля 2011 11:47
· Личное сообщение · #15

Archer пишет:
Написал бы, в чём дело было, да закрыл тему.


Видимо в этом:
Kaimi пишет:
MEM_RESERVE убери


-----
Yann Tiersen best and do not fuck



 eXeL@B —› Программирование —› Инжект кода в процесс
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати