
Быстрый поиск
Введите фрагмент названия статьи для поиска

Ассемблер: получаем имя файла оболочки
27.09.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter
В этой статье я расскажу, как можно программно получить имя файла оболочки Windows. Зачем это нужно? Например, есть программа, которая инжектит свою библиотеку в работающую копию explorer.exe и при этом подразумевает, что такой процесс в системе гарантированно должен присутствовать. В подавляющем большинстве случаев действительно все работает, никаких нареканий нет. Но стоит запустить программу под альтернативным шеллом, например, Aston Desktop, и она неизбежно падает с ошибкой, потому что explorer.exe в системе вообще не запущен. Проверки на соответствие оболочки в программе нет, и вместо корректного информирования пользователя о причинах невозможности запуска мы получаем фатальное падение. И хорошо, если не вместе с системой.Чтобы найти процесс оболочки, сперва надо определить ее главное окно. В MSDN для этого рекомендуют воспользоваться следующим кодом:
Code (Assembler) : Убрать нумерацию
- ; Найти окно с классом "Progman"
- invoke FindWindow, szClass, NULL
- ...
- szClass db 'Progman',0
Читать статью целиком »
Просмотров: 1507 | Комментариев: 3

Quick Task Terminator 1.4
03.05.2017 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Quick Task Terminator
Программа Quick Task Terminator предназначена для принудительного завершения процессов, а также для получения краткой информации о пути запуска, параметров командной строки и версии запущенных процессов. Также из меню программы можно принудительно перезагрузить или выключить компьютер или отправить его в режим гибернации. Комбинация "горячих" клавиш Alt+Ctrl+Shift+Win+K убивает процесс, окно которого активно в данный момент, что позволяет аварийно выходить из зависших полноэкранных приложений. Alt+Ctrl+Shift+Win+I - информация о процессе, окно которого активно в данный момент. Alt+Ctrl+Shift+Win+M - открыть список процессов (аналог клика на иконке). "Горячие" клавиши можно изменить в настройках программы. Как и остальной мой софт, Quick Task Terminator написан для личных нужд, поэтому обладает только нужным мне функционалом. Прототипом для его создания стал плагин Terminator от оболочки Aston, к которому я в свое время очень привык.
Читать статью целиком »
Просмотров: 15693 | Комментариев: 98

Получение информации о другом процессе
17.05.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter
Возможность получения информации о стороннем процессе раскрывает перед программистами и пользователями широкие возможности. Это могут быть продвинутые менеджеры процессов, антивирусные и антитроянские программы, утилиты для реверсной инженерии и многое другое. У меня, к примеру, подобные функции используются в программе Quick Task Terminator. Давайте посмотрим, как это делается. Для начала надо описать структуры, необходимые для работы с процессами. В стандартном комплекте FASM их, естественно, нет, но это и неудивительно.Code (Assembler) : Убрать нумерацию
- ; Структура для получения данных о процессе под Win32
- struct PROCESS_BASIC_INFORMATION
- ExitStatus dd ?
- PebBaseAddress dd ?
- AffinityMask dd ?
- BasePriority dd ?
- uUniqueProcessId dd ?
- uInheritedFromUniqueProcessId dd ?
- ends
- ; Структура PEB процесса под Win32
- ; Process Enviroment Block или блок окружения процесса
- ; Содержит все параметры пользовательского режима, ассоциированные
- ; системой с текущим процессом
- struct PEB
- InheritedAddressSpace db ?
- ReadImageFileExecOptions db ?
- BeingDebugged db ?
- b003 db ?
- Mutant dd ?
- ImageBaseAddress dd ?
- Ldr dd ?
- ProcessParameters dd ?
- ends
- ; Юникодная строка в Win32
- struct UNICODE_STRING
- Length dw ?
- MaximumLength dw ?
- Buffer dd ?
- ends
- ; Структура RTL_USER_PROCESS_PARAMETERS под Win32
- struct RTL_USER_PROCESS_PARAMETERS
- MaximumLength dd ?
- Length dd ?
- Flags dd ?
- DebugFlags dd ?
- ConsoleHandle dd ?
- ConsoleFlags dd ?
- StdInputHandle dd ?
- StdOutputHandle dd ?
- StdErrorHandle dd ?
- CurrentDirectoryPath UNICODE_STRING
- CurrentDirectoryHandle dd ?
- DllPath UNICODE_STRING
- ImagePathName UNICODE_STRING
- CommandLine UNICODE_STRING
- ends
Code (Assembler) : Убрать нумерацию
- section '.data' data readable writeable
- ...
- ; Данные о 32-битных процессах
- Info PROCESS_BASIC_INFORMATION
- peb PEB
- pparam RTL_USER_PROCESS_PARAMETERS
Читать статью целиком »
Просмотров: 8392 | Комментариев: 6

Исследование защиты программы APIS32
16.04.2013 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы APIS32
APIS32 - утилита для просмотра функций API, используемых тем или иным приложением Windows. Вам достаточно выбирать нужные вам функции из списка, запускаете программу-жертву, а APIS32 выдаст полный отчет о всех вызовах этих функций из нее. Если я не ошибаюсь, это одна из первых программ такого рода, но автор явно погорячился, сделав ее платной. Инструменты для реверса просто обязаны быть бесплатными.
Читать статью целиком »
Просмотров: 6202 | Комментариев: 7

Управление другим приложением из своей программы
12.02.2012 | Категория: Образ мышления: Assembler | Автор: ManHunter
Под управлением сторонним приложением я подразумеваю некие действия своей программы, эмулирующие действия живого человека. Например, нажатия на кнопки в диалоговых окнах. Попробуем сделать это на примере лоадера для популярного файлового менеджера Total Commander. Кто пользуется им, тот знает, что единственное различие между полной и незарегистрированной версией в том, что триалка при запуске показывает наг-скрин с предложением купить программу или нажать для продолжения одну из трех кнопок с цифрами. Конечно, кнопку можно нажать самостоятельно, но можно доверить это лоадеру.
Наг-скрин Total Commander
Чтобы работать с содержимым окна, сперва надо узнать его хэндл. Проще всего воспользоваться функцией FindWindow, указав в качестве параметра наименование класса наг-скрина. Его можно посмотреть при помощи моей программы WinDowzer или любой другой аналогичной программы. Противное окно имеет название класса TNASTYNAGSCREEN, первый шаг сделан. Теперь нам надо узнать хэндл нужной кнопки, для этого нужно изучить все связи родительских и дочерних объектов окна.
Читать статью целиком »
Просмотров: 9228 | Комментариев: 7
