Быстрый поиск
Введите фрагмент названия статьи для поиска
Как отказаться от обновления до Windows 10
10.06.2016 | Категория: Software | Автор: ManHunter
Как отказаться от обновления до Windows 10
Выбор и установка программного обеспечения на персональный компьютер - личное дело каждого пользователя. Это же относится и к переходу на новую версию операционной системы. Те, кто добровольно обновился до Windows 10, дальше могут не читать. Флаг вам в руки и обновления в систему. Я же предпочитаю оставаться на Windows 7, это мой осознанный выбор и мое личное мнение. Сама же проблема заключается даже не в наличии в природе Windows 10, а в том, насколько агрессивно Micro$oft пытается ее втюхать пользователям более ранних версий Windows. С каждой новой версией программа для обновления становится все более назойливой, в последних версиях ее даже невозможно просто закрыть. Ничуть не удивлюсь, если в один прекрасный день нафотошопленная заглавная картинка из этой статьи станет реальностью.
Читать статью целиком »
Просмотров: 4270 | Комментариев: 16
Самоудаляющийся файл
17.05.2016 | Категория: Образ мышления: Assembler | Автор: ManHunter
Самоудаляющийся файл
Небольшая, но в то же время полезная развлекуха - самоудаляющийся исполняемый файл. Во времена MS-DOS подобным фокусом никого было не удивить, там операционная система позволяла писать что угодно куда угодно, и даже удалять исполняемый файл во время его выполнения (хе-хе...). С появлением Windows вольница закончилась. Если файл запущен, то до того, как он завершит работу, ничего с ним сделать не получится. Но из этого правила есть одно исключение - так называемые пакетные или bat-файлы. Они выполняются не как самостоятельное приложение, а как набор инструкций для командного процессора, поэтому запросто могут удалять сами себя. Этим мы и воспользуемся для решения нашей задачи. Вот пример пакетного файла, который сперва пытается удалить файл по заданному пути, а затем самоуничтожается.
:loc
del "D:\Path\file.exe"
if exist "D:\Path\file.exe" goto loc
del %0
Проверка и цикл нужны для того, чтобы дождаться момента, когда файл освободится и станет доступным для ликвидации. Команда "del %0" удаляет bat-файл, в котором она выполняется, без привязки к его имени. Теперь, чтобы наш исполняемый файл самоудалялся, он должен выполнить следующие действия: получить имя и путь выполняемого файла, сформировать bat-файл, запустить его и завершить работу. bat-файл дождется окончания работы исполняемого файла, удалит его, затем удалит сам себя.
Читать статью целиком »
Просмотров: 6747 | Комментариев: 14
Как проверить соответствие файла PE-формату без запуска
01.12.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
Как проверить соответствие файла PE-формату без запуска
На форуме EXEL@B встретилась интересная тема по проверке является ли файл корректным PE-файлом, но без его запуска. Статическая проверка по типовым полям PE-заголовка не дает гарантии корректности, так как можно просто приписать к валидному заголовку кусок мусора или испортить его содержимое. Придется как минимум проверить соответствие размера файла суммарному размеру секций, а более тщательные проверки потребуют самостоятельного разбора секций импорта и экспорта, TLS, релоков и еще много чего. Проще всего доверить подобные проверки самой системе.
Читать статью целиком »
Просмотров: 4030 | Комментариев: 7
Автогенерация имени файла при наличии дублей
26.09.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
При разработке одной из своих программ передо мной встала задача сохранения файлов, но не просто так, а чтобы имя файла автоматически изменялось, если такой файл уже существует. С подобной задачей очень хорошо справляются менеджеры закачек и браузеры, в случае совпадения дополняя имя нового файла числовым индексом. В результате у меня получилась вот такая функция:Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------------------------
- ; Функция автогенерации имени файла
- ;---------------------------------------------------------------
- ; lpOldName - указатель на проверяемое имя файла
- ; lpNewName - указатель на доступное имя файла
- ;---------------------------------------------------------------
- proc generate_filename lpOldName:DWORD, lpNewName:DWORD
- locals
- fname dd ?
- fext dd ?
- filename rb MAX_PATH
- buff rb MAX_PATH
- idx dd ?
- endl
- pusha
- ; Получить полный путь к файла и указатель на имя
- lea edi,[filename]
- lea eax,[fname]
- invoke GetFullPathName,[lpOldName],MAX_PATH,edi,eax
- ; Проверить наличие файла или каталога
- invoke PathFileExists,edi
- or eax,eax
- ; Файла нет, сразу вернуться
- jz .loc_use_filename
- ; Индекс для автогенерации имени файла
- mov [idx],1
- ; Поискать расширение в названии файла
- invoke lstrlen,edi
- add edi,eax
- mov [fext],edi
- std
- mov ecx,edi
- sub ecx,[fname]
- mov al,'.'
- repne scasb
- cld
- or ecx,ecx
- jz @f
- ; Расширение найдено
- inc edi
- mov byte [edi],0
- inc edi
- mov [fext],edi
- @@:
- ; Сгенерировать имя файла с индексом
- lea edi,[buff]
- lea ebx,[filename]
- invoke wsprintf,edi,.mask,ebx,[idx],[fext]
- add esp,20
- ; Проверить наличие файла или каталога
- invoke PathFileExists,edi
- or eax,eax
- ; Файла нет, использовать это имя
- jz .loc_use_filename
- ; Следуюший номер счетчика
- inc [idx]
- jmp @b
- .loc_use_filename:
- ; Скопировать имя файла в буфер-приемник
- invoke lstrcpy,[lpNewName],edi
- popa
- ret
- ; Маска для автогенерации имени файла
- .mask db '%s (%i).%s',0
- endp
Читать статью целиком »
Просмотров: 2656 | Комментариев: 13
Отслеживание изменений в каталоге на Ассемблере
17.08.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
Отслеживание изменений в каталоге на Ассемблере
Одна из интересных задач, с которой рано или поздно сталкивается системный программист - это отслеживание изменений в определенном каталоге или на всем диске целиком. Это может быть что-то типа файлового монитора или какого-нибудь программного триггера, срабатывающего при появлении или изменении определенного файла. Не стоит забывать и борьбу со всякой хитрозакрученной шароварой, когда надо точно и быстро отследить, в какой файл записывается регистрационная информация или триальный счетчик. В этой статье я расскажу, как сделать подобный монитор изменений в каталогах на чистом Ассемблере.
Читать статью целиком »
Просмотров: 5422 | Комментариев: 10