Перейти к содержимому

C++

Создание драйверов. Часть 1

Создание драйверов. Часть 1. В данной статье мне хотелось бы показать, как создавать драйвера, если Вам необходима теоретическая информация то советую прочесть книгу Дэвида Соломона и Марка Руссиновича «Внутреннее устройство Microsoft Windows 2000». Для начала мы сделаем простой драйвер для Windows 2000, который послужит нам каркасом для дальнейших экспериментов. Для работы понадобится «Windows 2000 Driver Development Kit», именно с помощью данного пакета создаются драйвера, в его состав входят компилятор, линкер, заголовочные файлы, lib-файлы, документация, полезные инструменты и конечно множество примеров.Подробнее »Создание драйверов. Часть 1

Неавторизованная отправка почты

Неавторизованная отправка почты. В данном примере хочу Вам показать, как использовать неавторизованную отправку почты, то есть владелец электронного почтового ящика получает письмо от себя. Хочу сразу предупредить, что такой способ используют спамеры и это чревато проблемами с законодательством.Подробнее »Неавторизованная отправка почты

Raw сокеты WinSocket C++

Raw сокеты WinSocket C++. В данной статье – примере мне хотелось бы показать работу с простыми(raw) сокетами. Данные сокеты позволяют получить доступ к базовому протоколу передачи данных, это дает нам большие возможности создания таких сетевых утилит как Ping, Traceroute, а также для организации IP Spoofing, DDoS, ICMP-flood, и многого еще =) Рассматривать будем только протокол IP, так как большинство других протоколов вообще не поддерживают простые сокеты, разве только ATM.Подробнее »Raw сокеты WinSocket C++

Как узнать, сколько памяти занимает процесс

Как узнать, сколько памяти занимает процесс?

#include <iostream>
#include <windows.h>
#include <psapi.h>//Psapi.lib
using namespace std;
 
int main()
{
 
        DWORD pid;
        PROCESS_MEMORY_COUNTERS pmc;
 
        cout<<"Enter process PID: ";cin>>pid;
 
        HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
        if(NULL != hProcess)
        {
                if(GetProcessMemoryInfo(hProcess,&pmc,sizeof(pmc)))
                {
                        cout<<pmc.cb<<endl;
                        cout<<pmc.PageFaultCount/1024<<endl;
                        cout<<pmc.PeakWorkingSetSize/1024<<endl;
                        cout<<pmc.WorkingSetSize/1024<<endl;
                        cout<<pmc.QuotaPeakPagedPoolUsage/1024<<endl;
                        cout<<pmc.QuotaPagedPoolUsage/1024<<endl;
                        cout<<pmc.QuotaPeakNonPagedPoolUsage/1024<<endl;
                        cout<<pmc.QuotaNonPagedPoolUsage/1024<<endl;
                        cout<<pmc.PagefileUsage/1024<<endl;  
                        cout<<pmc.PeakPagefileUsage/1024<<endl;
                }
        }
        CloseHandle( hProcess );
        return 0;
}

Просматриваем заголовок исполняемого файла

Просматриваем заголовок исполняемого файла. В Интернете можно найти достаточное количество информации о формате исполняемых файлов. В данном примере мне хотелось бы показать Вам как можно получить данные из заголовка.Подробнее »Просматриваем заголовок исполняемого файла

Программно создаем динамическую иконку

Программно создаем динамическую иконку. Для создания динамической иконки (и не только) понадобится API функция:

HICON CreateIcon(HINSTANCE hInstance, int nWidth, int nHeight, BYTE cPlanes, BYTE cBitsPixel, CONST BYTE *lpbANDbits, CONST BYTE *lpbXORbits);
Подробнее »Программно создаем динамическую иконку

Программное нажатие кнопки

Программное нажатие кнопки. В данном примере хочу показать, как просто манипулировать над элементами управления, чужой программы. Для этого нам понадобится всего несколько API функций.
Подробнее »Программное нажатие кнопки