Форум: "Система";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
ВнизКак реализацовать 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c