Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Native API ZwCreateFile

10K
07 февраля 2010 года
palevo060
144 / / 05.09.2009
Никак не могу понять почему не создается файл
Цитата:

.486
.model flat,stdcall
option casemap:none
.data

include E:\masm32\include\ntdll.inc
include E:\masm32\include\w2k\ntddk.inc
includelib E:\masm32\lib\ntdll.lib

include E:\masm32\include\w2k\ntstatus.inc
;include E:\masm32\include\w2k\ntifs.inc
include E:\masm32\include\w2k\ntoskrnl.inc

includelib E:\masm32\lib\w2k\ntoskrnl.lib
include E:\masm32\Macros\Strings.mac

CreateFile PROTO

ANSI_STRING struct
Length_ word 0
MaximumLength word 0
Buffer dword 0
ANSI_STRING ends


.data
unicodeString UNICODE_STRING<>
string_ db "\\??\\c:\\file.txt",0


.code

start:
invoke CreateFile
invoke NtTerminateProcess,-1,0

CreateFile proc
local oa:OBJECT_ATTRIBUTES
local iosb:IO_STATUS_BLOCK
local hFile:HANDLE
local ansiString:ANSI_STRING

invoke RtlInitAnsiString,addr ansiString,addr string_
invoke RtlAnsiStringToUnicodeString,addr unicodeString,addr ansiString, TRUE
invoke NtDisplayString, addr unicodeString

InitializeObjectAttributes offset oa, offset unicodeString, NULL, NULL, NULL
invoke ZwCreateFile, addr hFile, FILE_APPEND_DATA, addr oa, addr iosb, 50, FILE_ATTRIBUTE_NORMAL, \
FILE_SHARE_WRITE, FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT, 0, 0
.if eax == STATUS_SUCCESS
invoke ZwClose, hFile
.else
.endif
ret
CreateFile endp
end start



Может такой вариант не катит по Windows XP?

8.2K
07 февраля 2010 года
bagie2
299 / / 26.10.2008
а какой NTSTATUS код возврата?
10K
07 февраля 2010 года
palevo060
144 / / 05.09.2009
Цитата: bagie2
а какой NTSTATUS код возврата?



= 0xС000000D

261
07 февраля 2010 года
ahilles
1.5K / / 03.11.2005
по-моему проблема в имени
string_ db "\\??\\c:\\file.txt",0
какое-то непонятное имя файла, не подходит ни под обычный стиль, ни под сишный.
давно не юзал MASM, не помню в каком стиле там объявляются строки
string_ db "\\?\c:\file.txt",0 ; обычный стиль
string_ db "\\\\\?\\c:\\file.txt",0 ; сишный стиль
10K
07 февраля 2010 года
palevo060
144 / / 05.09.2009
хм нет все равно одна и таже ошибка, в обоих случаях
14
08 февраля 2010 года
Phodopus
3.3K / / 19.06.2008
что за 50?
10K
08 февраля 2010 года
palevo060
144 / / 05.09.2009
Цитата: Phodopus
что за 50?



Ну на сколько мне известно это должен быть размер файла, но я пробовал и с нулевым вариантом, так что проблема видимо в другом

14
08 февраля 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: palevo060
Ну на сколько мне известно это должен быть размер файла, но я пробовал и с нулевым вариантом, так что проблема видимо в другом


Нну-ну! Идем курить маны. Разрабоднидчкы.

10K
08 февраля 2010 года
palevo060
144 / / 05.09.2009
Цитата:
AllocationSize
A pointer to a LARGE_INTEGER that contains the initial allocation size, in bytes, for a file that is created or overwritten. Указатель содержит LARGE_INTEGER, что первоначальный размер кластера в байтах для файла, который создается или перезаписывается. If AllocationSize is NULL, no allocation size is specified. Если AllocationSize является NULL, не указан размер кластера. If no file is created or overwritten, AllocationSize is ignored. Если файл не созданы или переписаны, игнорируется AllocationSize.



Скурил и подставил, все что только мог и NULL и это-LARGE_INTEGER, и указатель на этоже (LARGE_INTEGER) и структуру вроде заполннил

Цитата:

local siz:LARGE_INTEGER
mov eax,10
mov siz.LowPart,eax
mov eax,1000
mov siz.HighPart,eax

InitializeObjectAttributes offset oa, offset unicodeString, NULL, NULL, NULL
invoke ZwCreateFile, addr hFile, FILE_APPEND_DATA, addr oa, addr iosb,addr siz, FILE_ATTRIBUTE_NORMAL, \
FILE_SHARE_WRITE, FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT, 0, 0


Уже даже не знаю. У меня чувство, что если я еще раз спрошу, что же тут не так то мне дадут в морду с батинка :(

8.2K
08 февраля 2010 года
bagie2
299 / / 26.10.2008
с флагом FILE_SYNCHRONOUS_IO_NONALERT надо юзать FILE_APPEND_DATA+SYNCHRONIZE
10K
08 февраля 2010 года
palevo060
144 / / 05.09.2009
Все делаю вывод что я идиот
Цитата:
.486
.model flat,stdcall
option casemap:none
.data

include E:\masm32\include\ntdll.inc
include E:\masm32\include\w2k\ntddk.inc
includelib E:\masm32\lib\ntdll.lib

include E:\masm32\include\w2k\ntstatus.inc
;include E:\masm32\include\w2k\ntifs.inc
include E:\masm32\include\w2k\ntoskrnl.inc

includelib E:\masm32\lib\w2k\ntoskrnl.lib
include E:\masm32\Macros\Strings.mac

CreateFile PROTO

ANSI_STRING struct
Length_ word 0
MaximumLength word 0
Buffer dword 0
ANSI_STRING ends


.data
unicodeString UNICODE_STRING<>
string_ db "\\\\\?\\c:\\file.txt",0
string_2 db "\\?\c:\file.txt",0
nnn db 100 dup(0)


.code

start:
invoke CreateFile
invoke NtTerminateProcess,-1,0

CreateFile proc
local oa:OBJECT_ATTRIBUTES
local iosb:IO_STATUS_BLOCK
local hFile:HANDLE
local siz:LARGE_INTEGER
local ansiString:ANSI_STRING

invoke RtlInitAnsiString,addr ansiString,addr string_2
invoke RtlAnsiStringToUnicodeString,addr unicodeString,addr ansiString, TRUE
invoke NtDisplayString, addr unicodeString
mov eax,10
mov siz.LowPart,eax
mov eax,1000
mov siz.HighPart,eax

InitializeObjectAttributes offset oa, offset unicodeString, NULL, NULL, NULL
xor eax,eax
mov oa.SecurityDescriptor,eax
invoke ZwCreateFile, addr hFile, FILE_APPEND_DATA+SYNCHRONIZE, addr oa, addr iosb,addr siz, FILE_ATTRIBUTE_NORMAL, \
FILE_SHARE_WRITE, FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT, 0, 0
.if eax == STATUS_SUCCESS
invoke ZwClose, hFile
.endif


;mov eax, iosb.Information
xor edx,edx
mov ecx,4
@1:
mov bl,al
and bl,0Fh
.if bl <= 9 && bl >= 0
add bl,30h
.else
add bl,37h
.endif
mov byte ptr [nnn+edx],bl
mov bh,al
and bh,0F0h
ror bh,4
.if bh <= 9 && bh >= 0
add bh,30h
.else
add bh,37h
.endif
inc edx
mov byte ptr [nnn+edx],bh
inc edx
ror eax,8
loop @1
invoke RtlInitAnsiString,addr ansiString,addr nnn
invoke RtlAnsiStringToUnicodeString,addr unicodeString,addr ansiString, TRUE
invoke NtDisplayString, addr unicodeString


ret
CreateFile endp
end start

8.2K
08 февраля 2010 года
bagie2
299 / / 26.10.2008
погляди аттач. я сделал пример на фасме. работает.
10K
08 февраля 2010 года
palevo060
144 / / 05.09.2009
Цитата: bagie2
погляди аттач. я сделал пример на фасме. работает.



Спс посмотрю, но сеня не успею уже.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог