· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› помогите с NtOpenProcess

Посл.отвђт Сообщенiе


Дата: Ноя 10, 2004 23:52:19

Скачал значит *The Undocumented Functions Microsoft Windows NT/2000* и сижу разбираюсь, но никак не получается открыть процесс с помощью NtOpenProcess возвращает 80000002(OUTOFMEMORY)
а делаю все как надо:
push offset ClientId
push offset ObjectAttributes(первый байт=18h)
И каков должен быть размер ObjectAttributes?
push PROCESS_ALL_ACCESS
push offset OUT_PROCESS_HANDLE
А должен ли OUT_PROCESS_HANDLE содержать processId?
(хотя пробовал и так и так)
Подскажите в чем дело(кроме кривых рук).


Дата: Ноя 10, 2004 23:59:57

> push PROCESS_ALL_ACCESS

А тебе никто и не обещал с такими правами открытие процесса, возможно система воспротивилась если ты под юзером или ещё там чего...
Да и некорректно открывать процесс с такими правами доступа, тем более они все вряд ли тебе нужны ;-)


Дата: Ноя 11, 2004 00:14:54

>возможно система воспротивилась если ты под юзером
А когда вызываю через OpenProcess то не противиться?
А сижу под админом и открываю explorer.exe
И забыл:сижу на XP Pro SP1


Дата: Ноя 11, 2004 00:19:07

Ты выровнял структуры? Попробуй поставить align 4 перед ObjectAttributes


Дата: Ноя 11, 2004 00:21:32

Я бы грешил на неправильно переданные параметры...
Вот тебе пример вызова на С:
OBJECT_ATTRIBUTES oa = {sizeof(oa)};
CLIENT_ID cid = {TargetPID, 0};
HANDLE hTarget;
NTSTATUS Result = NtOpenProcess(&hTarget, PROCESS_ALL_ACCESS, &oa, &cid);


Дата: Ноя 11, 2004 00:54:42

Для компиляции потребуется KmdKit (лежит на этом сайте). С Windows.inc не совместим.
.386
.model flat, stdcall
option casemap:none

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
;                                  I N C L U D E   F I L E S                                        
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::

include \masm32\include\kernel32.inc
include \masm32\include\w2k\ntdll.inc
include \masm32\include\w2k\ntddk.inc
include \masm32\include\w2k\ntstatus.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\w2k\ntdll.lib

include \masm32\Macros\Strings.mac

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
;                                       C O D E                                                     
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::

.code

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
;                                         start                                                     
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::

start proc

local hProcess:HANDLE
local oa:OBJECT_ATTRIBUTES
local cid:CLIENT_ID

    InitializeObjectAttributes addr oa, NULL, OBJ_CASE_INSENSITIVE, NULL, NULL

    mov cid.UniqueProcess, 1100     ; Your process ID. You've got it somehow.
    mov cid.UniqueThread, 0

    invoke ZwOpenProcess, addr hProcess, PROCESS_ALL_ACCESS, addr oa, addr cid
    .if eax == STATUS_SUCCESS
    
        invoke ZwClose, hProcess
    .endif

    invoke ExitProcess, 0
    ret

start endp

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
;                                                                                                   
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::

end start


Дата: Ноя 11, 2004 00:59:11

Все спасибо за оперативную помощью Надо всего было поставить align 4 и правильно поработать с OBJECT_ATTRIBUTES.
И не подскажите, а где можно взять инфу об кейлогерре который бы работал через драйвер, и если мне не изменяет память, то там что-то обещал по поводу этой темы Four-F?


Дата: Ноя 11, 2004 01:17:05 · Поправил: Asterix

Four-F

А чем отличается ZwOpenProcess от NtOpenProcess?
В импорте kernel32 кажется Nt или я что-то путаю?
Мне это нужно для плагина знать ;-)


Дата: Ноя 11, 2004 01:28:00 · Поправил: dead_body

Asterix
названием. так думает PeBrowsePro
GetProcAddress c NtOpenProcess делаеш
а он пишет что eax==ZwOpenProcess
И точка входа у них одна,если верит PeBrowsePro


Дата: Ноя 11, 2004 14:06:13 · Поправил: Four-F

[ Asterix: А чем отличается ZwOpenProcess от NtOpenProcess? ]

Для ntdll ничем. Это синонимы. Для ядра отличаются. Я имею ввиду префиксы Zw и Nt вообще.



[ dead_body: И не подскажите, а где можно взять инфу об кейлогерре который бы работал через драйвер, и если мне не изменяет память, то там что-то обещал по поводу этой темы Four-F? ]

Первая часть статьи написана и во вторник отослана Aquila. Если он её получил, то на днях выложит, наверное. Но там пока арт-подготовка. Фильтр будет в следующей статье. Пример готового "кейлогерра, который бы работал через драйвер" можно взять на rootkit.com: проект называется klog.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078