NASM WIN64 HELLO WORLD

Тема в разделе "NASM", создана пользователем Hacker, 9 янв 2021.

  1. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    Hacker и Mikl___ нравится это.
  2. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Ес-но если в lstrcatA передавать юникодную строку, то выйдет что-то не то. Почему и говорю в пятый раз - ставьте Си! И будут подсказки от компилятора.

    Я раньше тоже писал на асме, был какой-то заскок на эту тему, типа это тру и все такое. Пришел на этот форум и начал с 0 учить Асм, задавая такие же вопросы , ошибка в двух символах. Пока мне 1 человек на этом форуме не посоветовал сначала изучить Си. И действительно - понял, что зря мучился столько времени. Щас, когда надо пишу на Асме, но обычно не надо.
     
  3. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Процесс пошел! Спасибо! Путь до файла получил , но файл скрытый, DeleteFileW возвращает мне 0х05 - в доступе отказано, хоть запускаю программу с правами Администратора. Как быть в такой ситуации?
     
  4. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Если файл рид-онли - снять аттрибут и попробовать еще.
    Если там защита от аверского драйвера - никак.
     
  5. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Как атрибут изменить, какие функции не подскажите?
     
  6. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    Hacker,
    Файл может быть занятым каким-либо (системным) процессом, поэтому нельзя будет ни поменять его атрибуты, ни удалить
     
  8. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Mikl___, если не системный процесс, то убить.
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    M0rg0t,
    я попытался ответить Hacker о том, почему он не может удалить файл (а этому может помешать куча причин, в том числе и невнимательность). Ему бы потренироваться на NASM в написании простых программ, а не лезть в системные дебри. Или, сначала добиться работоспособных программ на С++/Delphi, а потом переводить их на NASM
     
    Aiks и M0rg0t нравится это.
  10. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Ну можно проверочку еще сделать на то открыт ли файл где-то, если поможите, или запущен ли экземпляр программы.
    Я учусь просто ни куда не спешу. До конца триала дней 15 еще, думаю успею дописать.

    Mikl___ программ на С++/Delphi спасибо что не gcc под Qt Linux советуете хоть
    системные дебри - это же самое простое, как подругому то?

    Было бы конечно очень интересно взять какую нибудь стороннюю библиотеку и воспользваться функциями, но пока к сожелению нету таких задач.
     
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    Hacker,
    я советовал написать программу (и убедится в том что она работает) на любом знакомом тебе высокоуровневом языке, хотя это, скорее всего, бесполезно :negative:
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Qt 6.0 кстати скоро должен выйти (если еще не вышел), так вот там довольно неплохо по фичам, выглядит не плохо.
     
  13. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Hacker, ну вы же знаете, какой проге триал сбрасываете, вот ее и завершайте.
     
  14. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Файл удалил. Не получается удалить ключ реестра. RegOpenKeyExA возвращает 0х02 File Not Found.
    Не получается найти ключ реестра. В regedit проверяю путь такой существует и там нужный мне ключ.
    Может я что не заметил и где-то ошибка, посмотрите пожалуйста. Вот код:

    Код (ASM):
    1.  
    2. global start
    3.  
    4. NULL equ 0
    5. KEY_ALL_ACCESS equ 0x0000F003F
    6. HKEY_CURRENT_USER equ 0x80000001
    7. FILE_ATTRIBUTE_NORMAL equ 0x80
    8.  
    9.  extern SHGetKnownFolderPath
    10.  extern lstrcatW
    11.  extern lstrcatA
    12.  extern DeleteFileW
    13.  extern RegOpenKeyExA
    14.  extern RegDeleteKeyA
    15.  extern RegCloseKey
    16.  extern MessageBoxA
    17.  extern ExitProcess
    18.  extern GetFileAttributesW
    19.  extern SetFileAttributesW
    20.  
    21. section .data
    22.  
    23. BUFFER db 260 dup (?)
    24. pBuf resq 1
    25. FOLDERID_ProgramFilesX86 dd 0x7C5A40EF
    26.                          dw 0xA0FB
    27.                          dw 0x4BFC
    28.                          db 0x87,0x4A,0xC0,0xF2,0xE0,0xB9,0xFA,0x8E
    29.  
    30. hKey resq 1
    31. xchat dw __utf16__('\xchat\inst.conf'),0
    32. RegistryKey db '\SOFTWARE\XChat\',0
    33. installed db 'installed',0
    34. MessBox db 'XChat Trial Reset',0
    35. MessBox1 db 'Good! Now reinstall XChat.',0
    36.  
    37. section .code
    38.  
    39. start:
    40.  
    41. sub rsp,40
    42.  
    43. mov r9 , pBuf
    44. mov r8 , NULL
    45. mov rdx , NULL
    46. mov rcx , FOLDERID_ProgramFilesX86
    47. call SHGetKnownFolderPath
    48.  
    49. mov rdx , [pBuf]
    50. mov rcx , BUFFER
    51. call lstrcatW
    52.  
    53. mov rdx , xchat
    54. mov rcx , BUFFER
    55. call lstrcatW
    56.  
    57. mov rcx , BUFFER
    58. call GetFileAttributesW
    59.  
    60. mov rdx , FILE_ATTRIBUTE_NORMAL
    61. mov rcx , BUFFER
    62. call SetFileAttributesW
    63.  
    64. mov rcx , BUFFER
    65. call DeleteFileW
    66.    
    67. mov qword [rsp+20h] , hKey
    68. mov r9 , KEY_ALL_ACCESS
    69. mov r8 , NULL
    70. mov rdx , RegistryKey
    71. mov rcx , HKEY_CURRENT_USER
    72. call RegOpenKeyExA
    73.  
    74. mov [hKey] , rax
    75.  
    76. mov rdx , installed
    77. mov rcx , rax
    78. call RegDeleteKeyA
    79.  
    80. mov rcx , [hKey]
    81. call RegCloseKey
    82.  
    83. mov r9 , 0x40
    84. mov r8 , MessBox
    85. mov rdx , MessBox1
    86. mov rcx , NULL
    87. call MessageBoxA
    88.  
    89. mov rcx , rax
    90. call ExitProcess
    91.  
     
  15. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    навскидку, тут ссылка нужна, а не значение (Lea rdx,RegistryKey). А так хз, у меня на компе тоже этого ключа нет))
     
  16. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Я уже задавал подобный вопрос и разницы особой не вижу:
    В чем разница межу адресом, буфера допустим. и смещением mov rcx , trial.402000 и lea rcx , qword ptr ds:[402000]
     
  17. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    В регистр заносится либо значение переменной, либо ее адрес. Посмотрите в отладчике, в чем разница.
     
  18. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    адрес можно занести двумя способами, я тебе про это... или я что-то путаю?
    а значение заносятся через квадратные скобки
     
  19. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Hacker, да хоть десятью, я не собираюсь пересказывать тут учебник по ассемблеру. Если уж избрали такой мазохизм, как изучения с 0 64 битного асма, так учитесь, прилагайте усилия.

    Код (ASM):
    1. lea rax,hKey
    2. mov qword ptr [rsp+20h],rax
    3. mov r9d, KEY_ALL_ACCESS
    4. xor r8d,r8d
    5. lea rdx , RegistryKey
    6. mov rcx , HKEY_CURRENT_USER
    7. call RegOpenKeyExA
    почему такие параметры, подумай сам.
     
  20. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    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