либо так: Код (Text): Hello dw __utf16__('C:\WINDOWS'), 0 https://www.nasm.us/xdoc/2.10.09/html/nasmdoc3.html#section-3.4.5
Ес-но если в lstrcatA передавать юникодную строку, то выйдет что-то не то. Почему и говорю в пятый раз - ставьте Си! И будут подсказки от компилятора. Я раньше тоже писал на асме, был какой-то заскок на эту тему, типа это тру и все такое. Пришел на этот форум и начал с 0 учить Асм, задавая такие же вопросы , ошибка в двух символах. Пока мне 1 человек на этом форуме не посоветовал сначала изучить Си. И действительно - понял, что зря мучился столько времени. Щас, когда надо пишу на Асме, но обычно не надо.
Процесс пошел! Спасибо! Путь до файла получил , но файл скрытый, DeleteFileW возвращает мне 0х05 - в доступе отказано, хоть запускаю программу с правами Администратора. Как быть в такой ситуации?
Если файл рид-онли - снять аттрибут и попробовать еще. Если там защита от аверского драйвера - никак.
Hacker, http://www.vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_getfileattributes.htm http://www.vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_setfileattributes.htm
Hacker, Файл может быть занятым каким-либо (системным) процессом, поэтому нельзя будет ни поменять его атрибуты, ни удалить
M0rg0t, я попытался ответить Hacker о том, почему он не может удалить файл (а этому может помешать куча причин, в том числе и невнимательность). Ему бы потренироваться на NASM в написании простых программ, а не лезть в системные дебри. Или, сначала добиться работоспособных программ на С++/Delphi, а потом переводить их на NASM
Ну можно проверочку еще сделать на то открыт ли файл где-то, если поможите, или запущен ли экземпляр программы. Я учусь просто ни куда не спешу. До конца триала дней 15 еще, думаю успею дописать. Mikl___ программ на С++/Delphi спасибо что не gcc под Qt Linux советуете хоть системные дебри - это же самое простое, как подругому то? Было бы конечно очень интересно взять какую нибудь стороннюю библиотеку и воспользваться функциями, но пока к сожелению нету таких задач.
Hacker, я советовал написать программу (и убедится в том что она работает) на любом знакомом тебе высокоуровневом языке, хотя это, скорее всего, бесполезно
Qt 6.0 кстати скоро должен выйти (если еще не вышел), так вот там довольно неплохо по фичам, выглядит не плохо.
Файл удалил. Не получается удалить ключ реестра. RegOpenKeyExA возвращает 0х02 File Not Found. Не получается найти ключ реестра. В regedit проверяю путь такой существует и там нужный мне ключ. Может я что не заметил и где-то ошибка, посмотрите пожалуйста. Вот код: Код (ASM): global start NULL equ 0 KEY_ALL_ACCESS equ 0x0000F003F HKEY_CURRENT_USER equ 0x80000001 FILE_ATTRIBUTE_NORMAL equ 0x80 extern SHGetKnownFolderPath extern lstrcatW extern lstrcatA extern DeleteFileW extern RegOpenKeyExA extern RegDeleteKeyA extern RegCloseKey extern MessageBoxA extern ExitProcess extern GetFileAttributesW extern SetFileAttributesW section .data BUFFER db 260 dup (?) pBuf resq 1 FOLDERID_ProgramFilesX86 dd 0x7C5A40EF dw 0xA0FB dw 0x4BFC db 0x87,0x4A,0xC0,0xF2,0xE0,0xB9,0xFA,0x8E hKey resq 1 xchat dw __utf16__('\xchat\inst.conf'),0 RegistryKey db '\SOFTWARE\XChat\',0 installed db 'installed',0 MessBox db 'XChat Trial Reset',0 MessBox1 db 'Good! Now reinstall XChat.',0 section .code start: sub rsp,40 mov r9 , pBuf mov r8 , NULL mov rdx , NULL mov rcx , FOLDERID_ProgramFilesX86 call SHGetKnownFolderPath mov rdx , [pBuf] mov rcx , BUFFER call lstrcatW mov rdx , xchat mov rcx , BUFFER call lstrcatW mov rcx , BUFFER call GetFileAttributesW mov rdx , FILE_ATTRIBUTE_NORMAL mov rcx , BUFFER call SetFileAttributesW mov rcx , BUFFER call DeleteFileW mov qword [rsp+20h] , hKey mov r9 , KEY_ALL_ACCESS mov r8 , NULL mov rdx , RegistryKey mov rcx , HKEY_CURRENT_USER call RegOpenKeyExA mov [hKey] , rax mov rdx , installed mov rcx , rax call RegDeleteKeyA mov rcx , [hKey] call RegCloseKey mov r9 , 0x40 mov r8 , MessBox mov rdx , MessBox1 mov rcx , NULL call MessageBoxA mov rcx , rax call ExitProcess
навскидку, тут ссылка нужна, а не значение (Lea rdx,RegistryKey). А так хз, у меня на компе тоже этого ключа нет))
Я уже задавал подобный вопрос и разницы особой не вижу: В чем разница межу адресом, буфера допустим. и смещением mov rcx , trial.402000 и lea rcx , qword ptr ds:[402000]
адрес можно занести двумя способами, я тебе про это... или я что-то путаю? а значение заносятся через квадратные скобки
Hacker, да хоть десятью, я не собираюсь пересказывать тут учебник по ассемблеру. Если уж избрали такой мазохизм, как изучения с 0 64 битного асма, так учитесь, прилагайте усилия. Код (ASM): lea rax,hKey mov qword ptr [rsp+20h],rax mov r9d, KEY_ALL_ACCESS xor r8d,r8d lea rdx , RegistryKey mov rcx , HKEY_CURRENT_USER call RegOpenKeyExA почему такие параметры, подумай сам.
LastError 00000002 (ERROR_FILE_NOT_FOUND) LastStatus C000003B (STATUS_OBJECT_PATH_SYNTAX_BAD) --- Сообщение объединено, 1 фев 2021 --- Изменил RegistryKey db '\SOFTWARE\XChat\',0 на RegistryKey db 'SOFTWARE\XChat',0 - статус поменялся на 00000000 (STATUS_SUCCESS) но LastError 00000002 (ERROR_FILE_NOT_FOUND) осталась той же почему-то, ключ не удаляется --- Сообщение объединено, 1 фев 2021 --- Простите а что быстрее? mov reg , 0 или xor reg , reg