NASM WIN64 HELLO WORLD

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

  1. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    Код (ASM):
    1. mov qword [rsp+60h],lpPassword
    2. mov qword [rsp+58h],lpServiceStartName
    3. mov qword [rsp+50h],lpDependencies
    4. mov qword [rsp+48h],lpdwTagId
    5. mov qword [rsp+40h],lpLoadOrderGroup
    6. mov qword [rsp+38h],lpBinaryPathName
    7. mov rax,[dwErrorControl]
    8. mov [rsp+30h],rax
    9. mov rax,[dwStartType]
    10. mov [rsp+28h],rax
    11. mov rax,[dwServiceType]
    12. mov [rsp+20h],rax
    13. mov r9,[dwDesiredAccess]
    14. mov r8d,lpDisplayName
    15. mov edx,lpServiceName
    16. mov rcx,[hSCManager]
    17. call CreateServiceA
    там, где название переменной начинается с lp ― это адрес, иначе это значение переменной ― тогда используются скобки и регистр еах
    система подставит иконку "по умолчанию"
     
  2. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Я сделал так : https://pastebin.com/sMttVcbh
    Сервис не создается и после OpenSCManagerA не берется даже GetLastError, хотя в x64dbg вроде всё отрабатывается
     
  3. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Простите, что-то всё-таки создается, но вопрос не актуален по поводу сервиса больше.
    Клиент будет обычным консольным приложением.
    --- Сообщение объединено, 12 янв 2021 ---
    Mikl___ помогите с ресурсами пожалуйста. Как сделать иконку у exe файла?
     
  4. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    M0rg0t нравится это.
  5. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Ищу RC.EXE

    И мне еще нужно добавить xml к программе что бы запускалась от Администратора.
    Код (XML):
    1.  
    2. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    3. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    4. <description>Admin program</description>
    5. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    6.   <security>
    7.      <requestedPrivileges>
    8.         <requestedExecutionLevel
    9.           level="requireAdministrator"
    10.           uiAccess="false"/>
    11.      </requestedPrivileges>
    12.   </security>
    13. </trustInfo>
    14. </assembly>
    15.  
     
  6. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    Забанили в Гугле? ;)
     

    Вложения:

    • Rc.7z
      Размер файла:
      167,3 КБ
      Просмотров:
      237
  7. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Скомпилировал res.rc с кодом:
    Код (Text):
    1.  
    2. 1 24 "xpmanifest.xml"
    3. 100 ICON "icon.ico"
    4.  
    получил res.res

    Нужно создать секцию в файле .rsrc и добавить туда как-то скомпилированные ресурсы или прилинковать как-то?
    Я не совсем понял как делать. У меня программа не оконная.
    --- Сообщение объединено, 12 янв 2021 ---
    Почему RC.EXE у вас весит 74кб в пакете masm32 он 5кб :dntknw:
    --- Сообщение объединено, 12 янв 2021 ---
    да просто указал линкеру на res.res и все готово! Спасибо огромное!
     
  8. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    Наверное потому что разные версии? :scratch_one-s_head:
    • У меня ― 64-разрядный Resource Compiler Version 6.3.9600.17336
    • В пакете masm32 ― 32-разрядный Resource Compiler, Version 5.00.1823.1 - Build 1823
     
    Hacker нравится это.
  9. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Цифровая подпись к exe добавляется так же манифестом xml?
    Хотелось что бы в UAC отображался "Издатель" exe
     
  10. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
     
  11. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Помогите пожалуйста с вот такой программой. Нашел Trial Reset XChat код и переписал его.
    но почему-то в отладчике sub esp 30 хотя в коде 48, как Вы говорили 8*на максимальное кол-во аргументов и кратное 16
    Вот код: https://yadi.sk/d/-A4C_L9HFGBQFw
    --- Сообщение объединено, 12 янв 2021 ---
    http://xchat.org/files/binary/win32/xchat-2.8.9.exe
     
  12. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    наверное в отладчике sub esp,30h
    30h=3*16=48
    6 или 5 параметров 6*8=48= 5*8+8
     
  13. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Почему код застревает где-то в дебрях системы после вызова SHGetSpecialFolderPathA? Даже не получается взять GetLastError :dntknw:
    --- Сообщение объединено, 12 янв 2021 ---
    INT3 точка останова "останов в точке входа" на <trial.EntryPoint> (0000000000401000)!
    EXCEPTION_DEBUG_INFO:
    dwFirstChance: 1
    ExceptionCode: C0000005 (EXCEPTION_ACCESS_VIOLATION)
    ExceptionFlags: 00000000
    ExceptionAddress: 0000000000D86B81 shell32.0000000000D86B81
    NumberParameters: 2
    ExceptionInformation[00]: 0000000000000000 Read
    ExceptionInformation[01]: FFFFFFFFFFFFFFFF Inaccessible Address
     
    Последнее редактирование: 12 янв 2021
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Hacker,

    В одном потоке два исключения одновременно невозможны. Первое у тебя i3 это останов отладчика на PE.EP.

    Второе отвалился на выборке шелл, тк не верные аргументы у какой то апи:

    > ExceptionAddress: 0000000000D86B81 shell32.0000000000D86B81

    Первый адрес это линейный адрес инструкции, второй это адрес выборки. Два адреса в области системного общего модуля, а значит ты не смотрел аргументы на мсдн. Наверно как обычно попутал значение с указателем на него.

    Интересно кстате зачем ты использовал отладчик, если ничего в это не понимаешь даже то что он тебе показывает :preved:
     
    Последнее редактирование: 12 янв 2021
  15. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    MSDN: [SHGetSpecialFolderPath is not supported. Instead, use SHGetFolderPath.]
    Отменили, вместо этого:

    Код (C):
    1.  
    2. SHFOLDERAPI SHGetFolderPathA( HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPSTR pszPath );
    3.  
    --- Сообщение объединено, 13 янв 2021 ---
    Код (ASM):
    1.  
    2. mov qword [rsp+20h] , PROGRAM_FILESX86
    3.     mov r9 , 0
    4.     mov r8 , 0
    5.     mov rdx , 0x002a
    6.     mov rcx , 0
    7.     call SHGetFolderPathA
    8.  
    не получается, то же почти исключение
     
  16. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    174
    Адрес:
    Москва
    Вообще это всё устаревшие функции и нужно брать системные пути с помощью SHGetKnownFolderPath но не могу разобраться в аргументах, читаю MSDN редко.
    Может кто поможет?

    HRESULT SHGetKnownFolderPath(
    REFKNOWNFOLDERID rfid,
    DWORD dwFlags,
    HANDLE hToken,
    PWSTR *ppszPath
    );

    https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath

    Нужен путь к Program Filex x86
     
  17. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Код (C++):
    1. PWSTR path;
    2. SHGetKnownFolderPath(&FOLDERID_ProgramFilesX86, 0, NULL, &path);
    //path = L"C:\\Program Files (x86)"
    --- Сообщение объединено, 13 янв 2021 ---
    Еще есть хорошая книжка по NASM , вот https://wasm.in/threads/o-knige-rudolfa-mareka.3551/
    если нет в ресурсах, могу добавить.
     
  18. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.797
    M0rg0t,
    да, это очень неплохая книга :good3: (жаль только Hacker ничего читать не будет, метод научного тыка ― это наше всё! :rofl:)
     
  19. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Mikl___, в системном программировании такое не прокатит ) когда-то тоже пробовал методом тыка что-то решать, но понял - пока не прочту книгу , толку нет. Это в веб-кодинге можно так, на яваскрипт каком-то или пхп угадать там метод и функцию. Тут же только фундаментальное изучение матчасти (имхо).

    Книгу добавил
     
    Последнее редактирование модератором: 13 янв 2021
  20. Mikl___

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

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