ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

ZwCreateThread
  #1  
Старый 18.04.2010, 10:50
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию ZwCreateThread

Такой вопрос - как ее правильно вызывать? Какой минимум параметров ей нужен, и как ей передать виртуальный адрес старта. Я нашел описание ее:

NTSYSAPI
NTSTATUS
NTAPI ZwCreateThread(
OUT PHANDLE ThreadHandle, //понятно
IN ACCESS_MASK DesiredAccess, //понятно
IN POBJECT_ATTRIBUTES ObjectAttributes, //понятно
IN HANDLE ProcessHandle, //понятно
OUT PCLIENT_ID ClientId, //понятно
IN PCONTEXT ThreadContext,
IN PUSER_STACK UserStack,
IN BOOLEAN CreateSuspended //понятно
);

остается 2 параметра

IN PCONTEXT ThreadContext,
IN PUSER_STACK UserStack,

подозреваю, что в какую-то из этих структур надо передавать адрес старта

p.s. - запускаю из ядра
 
Ответить с цитированием

  #2  
Старый 18.04.2010, 12:00
Аватар для fluffylion
fluffylion
Познающий
Регистрация: 22.02.2010
Сообщений: 30
Провел на форуме:
188597

Репутация: 15
По умолчанию

Может это поможет:
ThreadContext
Points to a structure that specifies the initial values of the processor registers for the
thread.
UserStack
Points to a structure that specifies the user mode stack of the thread.

typedef struct _USER_STACK {
PVOID FixedStackBase;
PVOID FixedStackLimit;
PVOID ExpandableStackBase;
PVOID ExpandableStackLimit;
PVOID ExpandableStackBottom;
} USER_STACK, *PUSER_STACK;
 
Ответить с цитированием

  #3  
Старый 18.04.2010, 12:03
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

я это тоже видел, похоже что не там адрес начала, а где-тот в IN PCONTEXT ThreadContext
 
Ответить с цитированием

  #4  
Старый 18.04.2010, 12:24
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

нашел описание структуры context

typedef struct {
double Fpr0;
double Fpr1;
double Fpr2;
double Fpr3;
double Fpr4;
double Fpr5;
double Fpr6;
double Fpr7;
double Fpr8;
double Fpr9;
double Fpr10;
double Fpr11;
double Fpr12;
double Fpr13;
double Fpr14;
double Fpr15;
double Fpr16;
double Fpr17;
double Fpr18;
double Fpr19;
double Fpr20;
double Fpr21;
double Fpr22;
double Fpr23;
double Fpr24;
double Fpr25;
double Fpr26;
double Fpr27;
double Fpr28;
double Fpr29;
double Fpr30;
double Fpr31;
double Fpscr;
DWORD Gpr0;
DWORD Gpr1;
DWORD Gpr2;
DWORD Gpr3;
DWORD Gpr4;
DWORD Gpr5;
DWORD Gpr6;
DWORD Gpr7;
DWORD Gpr8;
DWORD Gpr9;
DWORD Gpr10;
DWORD Gpr11;
DWORD Gpr12;
DWORD Gpr13;
DWORD Gpr14;
DWORD Gpr15;
DWORD Gpr16;
DWORD Gpr17;
DWORD Gpr18;
DWORD Gpr19;
DWORD Gpr20;
DWORD Gpr21;
DWORD Gpr22;
DWORD Gpr23;
DWORD Gpr24;
DWORD Gpr25;
DWORD Gpr26;
DWORD Gpr27;
DWORD Gpr28;
DWORD Gpr29;
DWORD Gpr30;
DWORD Gpr31;
DWORD Cr;
DWORD Xer;
DWORD Msr;
DWORD Iar;
DWORD Lr;
DWORD Ctr;
DWORD ContextFlags;
DWORD Fill[3];
DWORD Dr0;
DWORD Dr1;
DWORD Dr2;
DWORD Dr3;
DWORD Dr4;
DWORD Dr5;
DWORD Dr6;
DWORD Dr7;
} CONTEXT;

но где тут регистры общего назначения и EIP?
 
Ответить с цитированием

  #5  
Старый 18.04.2010, 12:28
Аватар для 12usver12
12usver12
Познающий
Регистрация: 12.12.2007
Сообщений: 81
Провел на форуме:
589075

Репутация: 53
По умолчанию

инфо о стеке извлекай из ZwQuerysection из структуры SECTION_IMAGE_INFORMATION оттуда и о значение eip и esp
 
Ответить с цитированием

  #6  
Старый 18.04.2010, 12:39
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

Цитата:
Сообщение от 12usver12  
инфо о стеке извлекай из ZwQuerysection из структуры SECTION_IMAGE_INFORMATION оттуда и о значение eip и esp
мне как бы надо не извлечь, а прописать, чтобы поток стартовал с моим EIP
 
Ответить с цитированием

  #7  
Старый 18.04.2010, 12:51
Аватар для 12usver12
12usver12
Познающий
Регистрация: 12.12.2007
Сообщений: 81
Провел на форуме:
589075

Репутация: 53
По умолчанию

я все таки не могу понять - ты с нуля запускаешь процесс из ядра или на каком-то этапе перехватываешь уже созданный процесс ?
 
Ответить с цитированием

  #8  
Старый 18.04.2010, 13:15
Аватар для 12usver12
12usver12
Познающий
Регистрация: 12.12.2007
Сообщений: 81
Провел на форуме:
589075

Репутация: 53
По умолчанию

ты неправильное описание структуры взял или неполное
CONTEXT context = {CONTEXT_FULL};
context.Eip = (SECTION_IMAGE_INFORMATION)si.EntryPoint ну или свою подставляй
 
Ответить с цитированием

  #9  
Старый 18.04.2010, 13:37
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

Цитата:
Сообщение от 12usver12  
ты неправильное описание структуры взял или неполное
CONTEXT context = {CONTEXT_FULL};
context.Eip = (SECTION_IMAGE_INFORMATION)si.EntryPoint ну или свою подставляй
я брал с MSDN

p.s. в студии есть норм. сейчас попробую

Последний раз редактировалось ntldr; 18.04.2010 в 13:44..
 
Ответить с цитированием

  #10  
Старый 18.04.2010, 14:15
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

а как заполнять структуру USER_STACK
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ