Написал маленькую програмку , сбрасывает 30-дневный триал у XChata по идее, но она не выполняет своих функций , не удаляет ключ рееста и файлик, можете сказать на вскидку почему? Code (Text): .686p .model flat,stdcall option casemap:none includelib ./lib/kernel32.lib includelib ./lib/user32.lib includelib ./lib/shell32.lib includelib ./lib/ntdll.lib includelib ./lib/advapi32.lib .data? PROGRAM_FILESX86 db 260 dup (?) hKey dd ? .data xchat db "\xchat\inst.conf",0 RegistryKey db "\Software\XChat\",0 installed db "installed",0 .code start: SHGetSpecialFolderPathA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 1 push 0002ah ;CSIDL_PROGRAM_FILESX86 push offset PROGRAM_FILESX86 push 0 call SHGetSpecialFolderPathA lstrcatA PROTO :DWORD,:DWORD push offset xchat push offset PROGRAM_FILESX86 call lstrcatA DeleteFileA PROTO :DWORD push offset PROGRAM_FILESX86 call DeleteFileA RegOpenKeyExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD push offset hKey push 0000F003Fh ;KEY_ALL_ACCESS push 0 push offset RegistryKey push 80000001h ;HKEY_CURRENT_USER call RegOpenKeyExA mov hKey,eax RegDeleteKeyA PROTO :DWORD,:DWORD push offset installed push hKey call RegDeleteKeyA RegCloseKey PROTO :DWORD push hKey call RegCloseKey jmp msg MessBoxA db "XChat Trial Reset",0 msg: MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 00000030h push 0h push offset MessBoxA push 0h call MessageBoxA ExitProcess PROTO :DWORD push eax call ExitProcess end start
возможно SHGetSpecialFolderPathA возвращает C:\Program Files без последнего слеша и получается C:\Program Filesxchat\inst.conf посмотри в отладчике
поставил Ollydbg2 посмотрел там действительно нехватет слеша , но всеравно ошибка 00000005 после DeleteFileA ERROR_ACCESS_DENIED , что делать? А патом отладчик останавливается в дебрях какой то библиотеке , плюс нету хекс дампа программы в отладчике , папробую пастаить другую версию.
Почему программа из поста http://wasm.ru/forum/viewtopic.php?pid=389071#p389071 не выполняет своих функций , помогите дописать кто может.
А может еще скажешь каких именно функций, и какая программа, что вместо этого выполняет, какие коды ошибок ?
Ну там жеж написано все жеж. Программа: Code (Text): Код: .686p .model flat,stdcall option casemap:none includelib ./lib/kernel32.lib includelib ./lib/user32.lib includelib ./lib/shell32.lib includelib ./lib/ntdll.lib includelib ./lib/advapi32.lib .data? PROGRAM_FILESX86 db 260 dup (?) hKey dd ? .data xchat db "\xchat\inst.conf",0 RegistryKey db "\Software\XChat\",0 installed db "installed",0 .code start: SHGetSpecialFolderPathA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 1 push 0002ah ;CSIDL_PROGRAM_FILESX86 push offset PROGRAM_FILESX86 push 0 call SHGetSpecialFolderPathA lstrcatA PROTO :DWORD,:DWORD push offset xchat push offset PROGRAM_FILESX86 call lstrcatA DeleteFileA PROTO :DWORD push offset PROGRAM_FILESX86 call DeleteFileA RegOpenKeyExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD push offset hKey push 0000F003Fh ;KEY_ALL_ACCESS push 0 push offset RegistryKey push 80000001h ;HKEY_CURRENT_USER call RegOpenKeyExA mov hKey,eax RegDeleteKeyA PROTO :DWORD,:DWORD push offset installed push hKey call RegDeleteKeyA RegCloseKey PROTO :DWORD push hKey call RegCloseKey jmp msg MessBoxA db "XChat Trial Reset",0 msg: MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 00000030h push 0h push offset MessBoxA push 0h call MessageBoxA ExitProcess PROTO :DWORD push eax call ExitProcess end start Ошибка DeleteFileA 0х00000005 ERROR_ACCESS_DENIED хотя бы...
И ты предлагаешь что брать тестировать каждый кусок программа, и искать в нем ошибки ? Тем более код у тебя очень страшный, вот объясни мне ради интересу: Code (Text): push 00000030h push 0h push offset MessBoxA push 0h call MessageBoxA почему ты вместо 00000030h не поставишь имя константы ? Или это такое особое кодирование ?? Права на удаление файла есть? Может этот файл исполняется, или используется другой программой.
Ну во превых у меня не подключен windows.inc ... Прав видемо нет , как получить права на удаление файлов и удалении ключей реестра. Если хочешь я специально для тебя перепишу программу с инвоками и именными константами , если тебе станет легче. Код очень срашный , Волков боятся в лес не ходить , а мне не нравится код каторый предлагают в ексемплах masm32v9 , что будем делать?
Так будет удобней людям смотреть ну и мне в том числе. А специально для меня переписывать не стоит, ибо код проверять все равно не буду. Как вариант запустить программу од администратора.К сожалению что там творится на вин7 я хз.
Под администратором тоже не хочет , а как программно , с помощью апи , задать самые высокие права модулю? Просто вы мне сначало наверное посаветуете переписать программу потом зделать все просто в ручную... По теме пожалуйста.
Для начала проверь можно ли этот файл удалить вручную. Может тот файл который ты удаляешь уже кем то используется ??
Хорошо , как это зделать? И еще какой "заголовок CLR" нужен моему проекту чтобы его можно было дисассеблирывать с помощью IL DASM