
Быстрый поиск
Введите фрагмент названия статьи для поиска
Получение информации о другом процессе
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
Читать статью целиком »
Просмотров: 10490 | Комментариев: 6
Исследование защиты программы APIS32
16.04.2013 | Категория: Темная сторона Силы | Автор: ManHunter

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

Как узнать, что программа запущена под Администратором
Иногда требуется узнать, запущена ли ваша программа под учетной записью с правами Администратора, или же от обычного пользователя. Для чего это нужно? Например, некоторые операции с реестром или файлами требуют права Администратора. При попытке выполнить их обычному пользователю вернется ошибка ERROR_ACCESS_DENIED, но для более точного анализа ситуации надо будет проверить права доступа и уведомить об этом пользователя. Проверить, что программа запущена под Администратором, можно несколькими способами.
Читать статью целиком »
Просмотров: 11322 | Комментариев: 25
Принудительное завершение процесса
20.08.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter

Принудительное завершение процесса
Рано или поздно в программистской практике возникает задача по управлению процессами, в частности их принудительного завершения. Для дочерних процессов, порожденных собственным приложением, обычно хватает вызова TerminateProcess, но в некоторых случаях требуется принудительно завершить чужой процесс. Зная идентификатор процесса сделать это не составит большого труда. Открываем процесс функцией OpenProcess с правами PROCESS_TERMINATE, а затем, в случае успеха, отдаем полученный хэндл функции TerminateProcess. Вроде бы все просто, но не тут-то было.
Читать статью целиком »
Просмотров: 8819 | Комментариев: 18


