Помогите найти директорию

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

  1. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    SHGetSpecialFolderPath(,,CSIDL_PROGRAM_FILES,)
    SHGetSpecialFolderPath(,,CSIDL_PROGRAM_FILESX86,)
     
  2. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Спасибо всем! Странно но на висте у меня ошибка.
     
  3. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Написал маленькую програмку , сбрасывает 30-дневный триал у XChata по идее, но она не выполняет своих функций , не удаляет ключ рееста и файлик, можете сказать на вскидку почему?

    Код (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/shell32.lib
    8. includelib      ./lib/ntdll.lib
    9. includelib      ./lib/advapi32.lib
    10.  
    11. .data?
    12. PROGRAM_FILESX86 db 260 dup (?)
    13. hKey dd ?
    14.  
    15. .data
    16. xchat db "\xchat\inst.conf",0
    17. RegistryKey db "\Software\XChat\",0
    18. installed db "installed",0
    19.  
    20. .code
    21. start:
    22.  
    23. SHGetSpecialFolderPathA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    24.  
    25.     push 1
    26.     push 0002ah ;CSIDL_PROGRAM_FILESX86
    27.     push offset PROGRAM_FILESX86
    28.     push 0
    29.     call SHGetSpecialFolderPathA
    30.  
    31. lstrcatA PROTO :DWORD,:DWORD
    32.  
    33.     push offset xchat
    34.     push offset PROGRAM_FILESX86
    35.     call lstrcatA
    36.  
    37. DeleteFileA PROTO :DWORD
    38.  
    39.     push offset PROGRAM_FILESX86
    40.     call DeleteFileA   
    41.  
    42. RegOpenKeyExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    43.  
    44.     push offset hKey
    45.     push 0000F003Fh ;KEY_ALL_ACCESS
    46.     push 0
    47.     push offset RegistryKey
    48.     push 80000001h ;HKEY_CURRENT_USER
    49.     call RegOpenKeyExA
    50.  
    51.     mov hKey,eax
    52.  
    53. RegDeleteKeyA PROTO :DWORD,:DWORD
    54.  
    55.     push offset installed
    56.     push hKey
    57.     call RegDeleteKeyA
    58.    
    59. RegCloseKey PROTO :DWORD
    60.  
    61.     push hKey
    62.     call RegCloseKey
    63.  
    64. jmp msg
    65.  
    66. MessBoxA db "XChat Trial Reset",0
    67.  
    68. msg:
    69.  
    70. MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    71.  
    72.     push 00000030h
    73.     push 0h
    74.     push offset MessBoxA
    75.     push 0h
    76.     call MessageBoxA
    77.  
    78. ExitProcess PROTO :DWORD
    79.  
    80.     push eax
    81.     call ExitProcess
    82.  
    83. end start
     
  4. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    возможно SHGetSpecialFolderPathA возвращает C:\Program Files без последнего слеша и получается
    C:\Program Filesxchat\inst.conf
    посмотри в отладчике
     
  5. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    поставил Ollydbg2 посмотрел там действительно нехватет слеша , но всеравно ошибка 00000005 после DeleteFileA ERROR_ACCESS_DENIED , что делать? А патом отладчик останавливается в дебрях какой то библиотеке , плюс нету хекс дампа программы в отладчике , папробую пастаить другую версию.
     
  6. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
  7. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    А может еще скажешь каких именно функций, и какая программа, что вместо этого выполняет, какие коды ошибок ?
     
  8. fragment

    fragment New Member

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

    Код (Text):
    1. Код:
    2. .686p
    3. .model flat,stdcall
    4. option casemap:none
    5.  
    6. includelib     ./lib/kernel32.lib
    7. includelib     ./lib/user32.lib
    8. includelib      ./lib/shell32.lib
    9. includelib      ./lib/ntdll.lib
    10. includelib      ./lib/advapi32.lib
    11.  
    12. .data?
    13. PROGRAM_FILESX86 db 260 dup (?)
    14. hKey dd ?
    15.  
    16. .data
    17. xchat db "\xchat\inst.conf",0
    18. RegistryKey db "\Software\XChat\",0
    19. installed db "installed",0
    20.  
    21. .code
    22. start:
    23.  
    24. SHGetSpecialFolderPathA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    25.  
    26.     push 1
    27.     push 0002ah ;CSIDL_PROGRAM_FILESX86
    28.     push offset PROGRAM_FILESX86
    29.     push 0
    30.     call SHGetSpecialFolderPathA
    31.  
    32. lstrcatA PROTO :DWORD,:DWORD
    33.  
    34.     push offset xchat
    35.     push offset PROGRAM_FILESX86
    36.     call lstrcatA
    37.  
    38. DeleteFileA PROTO :DWORD
    39.  
    40.     push offset PROGRAM_FILESX86
    41.     call DeleteFileA    
    42.  
    43. RegOpenKeyExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    44.  
    45.     push offset hKey
    46.     push 0000F003Fh ;KEY_ALL_ACCESS
    47.     push 0
    48.     push offset RegistryKey
    49.     push 80000001h ;HKEY_CURRENT_USER
    50.     call RegOpenKeyExA
    51.  
    52.     mov hKey,eax
    53.  
    54. RegDeleteKeyA PROTO :DWORD,:DWORD
    55.  
    56.     push offset installed
    57.     push hKey
    58.     call RegDeleteKeyA
    59.    
    60. RegCloseKey PROTO :DWORD
    61.  
    62.     push hKey
    63.     call RegCloseKey
    64.  
    65. jmp msg
    66.  
    67. MessBoxA db "XChat Trial Reset",0
    68.  
    69. msg:
    70.  
    71. MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
    72.  
    73.     push 00000030h
    74.     push 0h
    75.     push offset MessBoxA
    76.     push 0h
    77.     call MessageBoxA
    78.  
    79. ExitProcess PROTO :DWORD
    80.  
    81.     push eax
    82.     call ExitProcess
    83.  
    84. end start
    Ошибка DeleteFileA 0х00000005 ERROR_ACCESS_DENIED хотя бы...
     
  9. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    И ты предлагаешь что брать тестировать каждый кусок программа, и искать в нем ошибки ?
    Тем более код у тебя очень страшный, вот объясни мне ради интересу:
    Код (Text):
    1.   push 00000030h
    2.     push 0h
    3.     push offset MessBoxA
    4.     push 0h
    5.     call MessageBoxA
    почему ты вместо 00000030h не поставишь имя константы ?
    Или это такое особое кодирование ??
    Права на удаление файла есть? Может этот файл исполняется, или используется другой программой.
     
  10. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Ну во превых у меня не подключен windows.inc ...
    Прав видемо нет , как получить права на удаление файлов и удалении ключей реестра.
    Если хочешь я специально для тебя перепишу программу с инвоками и именными константами , если тебе станет легче. Код очень срашный , Волков боятся в лес не ходить , а мне не нравится код каторый предлагают в ексемплах masm32v9 , что будем делать?
     
  11. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Так будет удобней людям смотреть ну и мне в том числе.
    А специально для меня переписывать не стоит, ибо код проверять все равно не буду.

    Как вариант запустить программу од администратора.К сожалению что там творится на вин7 я хз.
     
  12. fragment

    fragment New Member

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

    Просто вы мне сначало наверное посаветуете переписать программу потом зделать все просто в ручную... По теме пожалуйста.
     
  13. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Для начала проверь можно ли этот файл удалить вручную.
    Может тот файл который ты удаляешь уже кем то используется ??
     
  14. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Хорошо , как это зделать?

    И еще какой "заголовок CLR" нужен моему проекту чтобы его можно было дисассеблирывать с помощью IL DASM

    [​IMG]