Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.17;
Скачать: CL | DM;

Вниз

Как реализацовать CreateRemoteThread для Win9x?   Найти похожие ветки 

 
ByteButcher ©   (2002-08-08 17:29) [0]

Если у кого есть какие идейки - отзовитесь!!!


 
Ученик ©   (2002-08-08 18:00) [1]

Тут было предложение ставить hook на WH_GETMESSAGE


 
ByteButcher ©   (2002-08-08 19:02) [2]

При этом будет внедряться DLL.
Можно конечно скопировать в эту DLL код потока и выполнить его.
Но это всё немного не то.
А ещё есть какие-нибудь предложения?

И вопрос навстречу - а как можно узнать Handle потока(Thread) (именно Handle, а не ID) (надо как-то извратиться и вытащить это из недокументированных внутренних структур Win9x - но где? как? и что?)
Тогда можно было-бы SuspendThread - SetContext - ResumeThread и т.д. но для этого нужен HANDLE!!!


 
Ученик ©   (2002-08-08 21:04) [3]

Странно, в MSDN написано, что CreateRemoteThread поддерживается с Windows 98, но и в Kernel32.dll от Windows 95 OSR эта функция тоже есть (правда может быть stub)


 
bytebutcher ©   (2002-08-08 22:53) [4]

> Ученик
Надо внимательней читать MSDN!!!!!!
В Вынь9x эта функция только объявлена, но не определена, т.е. она ничего не делает!


 
Ученик ©   (2002-08-08 23:24) [5]

>bytebutcher

Куда уж внимательней :), хотя вполне возможно ничего не делает (stub).

QuickInfo
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 98 or later.
Windows CE: Unsupported.
Header: Declared in winbase.h.
Import Library: Use kernel32.lib.



 
Almaz ©   (2002-08-09 00:26) [6]


> Ученик © (08.08.02 23:24)

У вас какая версия MSDN ? У меня вот в MSDN написано для CreateRemoteThread:

Requirements
Windows NT/2000: Requires Windows NT 3.1 or later.
Windows 95/98: Unsupported.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.



> ByteButcher © (08.08.02 19:02)
> И вопрос навстречу - а как можно узнать Handle потока(Thread)
> (именно Handle, а не ID) (надо как-то извратиться и вытащить
> это из недокументированных внутренних структур Win9x -
> но где? как? и что?)
> Тогда можно было-бы SuspendThread - SetContext - ResumeThread
> и т.д. но для этого нужен HANDLE!!!

Handle по ID можно узнать с помощью Tool Help функций (CreateToolhelp32Snapshot и т.д.)
Но, IMHO, внедрять поток лучще через HOOK. Только код потока располагать не в DLL hook"a, а в другой DLL, которую функция hook"a будет загружать в адресное пространство процесса-жертвы. После этого hook может быть снят и установившая его программа завершена, а код потока будет продолжать выполняться.

Удачи.


 
Ученик ©   (2002-08-09 08:44) [7]

>Almaz
MSDN был от Visual Studio 6.0, хотя в MSDN 2000 и на msdn.microsost.com написано Unsupported :)

>Только код потока располагать не в DLL hook"a, а в другой DLL
Система выгружает DLL после снятия hookа ?


 
Ученик ©   (2002-08-09 09:13) [8]

>Almaz
Вопрос видоизменяется, что происходит с отображением DLL (в которой hook) для других процессов системы после ее выгрузки ?


 
bytebutcher ©   (2002-08-09 09:42) [9]

>Almaz
В том то и дело, что ToolHelp функции выдают ThreadID, а не Handle.
Понимаешь для процессов существует функция OpenProcess, а для Thread такого нет - в этом то и проблема.

P.S. Про Hooks всё уже известно и понятно - там несколько вариантом реализации, но это не важно.
>All
Посмотрите на www.madshi.net библиотеку madRemote - может у кого какие идеи возникнут?


 
watcher   (2002-08-09 11:38) [10]

OpenThread
The OpenThread function opens an existing thread object.

HANDLE OpenThread(
DWORD dwDesiredAccess, // access right
BOOL bInheritHandle, // handle inheritance option
DWORD dwThreadId // thread identifier
);

Requirements
Windows NT/2000 or later: Requires Windows 2000 or later.
Windows 95/98/Me: Requires Windows Me.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.


 
Ученик ©   (2002-08-09 11:50) [11]

Случайно никто не в курсе, что выполняется здесь (Dede) ?

function SharedMem9x_Alloc (size: System.Cardinal): System.Pointer;
stdcall;
begin
JMP DWORD PTR [_Nn_53],NEAR
end;

function SharedMem9x_Free (ptr: System.Pointer): System.LongBool; stdcall;
begin
JMP DWORD PTR [_Nn_52],NEAR
end;


 
Ученик ©   (2002-08-09 12:08) [12]

>bytebutcher © (09.08.02 09:42)
Есть подозрение на вызов CreateThread :)


 
Almaz ©   (2002-08-10 03:30) [13]


> Ученик © (09.08.02 08:44)
> Система выгружает DLL после снятия hookа ?

DLL с кодом hook"a будет выгружена. А вот DLL, загруженные hook"ом из адресного пространства чужого процесса будут выгружены только после завершения этого процесса.

Удачи.



Страницы: 1 вся ветка

Текущий архив: 2002.10.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
1-56101
tenzor
2002-10-08 23:25
2002.10.17
Русский текст в консольных приложения


1-56102
Kolya
2002-10-08 07:00
2002.10.17
TTreeView


3-55940
Ditrix
2002-09-24 11:41
2002.10.17
редактирование объединенных таблиц, поиск по Lookup полям


7-56375
Sergserg
2002-07-26 12:57
2002.10.17
Иконки на форме


1-56063
Лана Розанова
2002-10-08 12:40
2002.10.17
Exel