| | Язык программирования для написания myAC 1.5.8 14 hack | |
| | Автор | Сообщение |
---|
KerchNET Читюк
| Тема: Язык программирования для написания myAC 1.5.8 14 hack Чт Окт 01, 2009 2:29 pm | |
| Скажите, пожалуйста, с помощью какого языка можно написать хак для нового маяка? Делфи или С++? И как встроить функцию антискриншот? | |
| | | Lamak Повелитель Стихий
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Чт Окт 01, 2009 6:29 pm | |
| С++ , но врятли у тя чё выйдет если ты его не изучал лет 5 | |
| | | KOD Профи читер
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Чт Окт 01, 2009 8:03 pm | |
| какой-нибудь Huyax уже поделился с тобой исходниками? | |
| | | Lamak Повелитель Стихий
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Чт Окт 01, 2009 9:13 pm | |
| бесплатно врятли , а за бабки мож и поделится | |
| | | hUYAX Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Пт Окт 02, 2009 9:38 pm | |
| Скажу лично про себя
Антибан - С (для драйвера), Delphi (оболочка)
Чит - С++
Endi писал дисаблеры на Assemblere насколько я знаю | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Сб Окт 03, 2009 5:46 am | |
| - hUYAX пишет:
- Скажу лично про себя
Антибан - С (для драйвера), Delphi (оболочка)
Чит - С++
Endi писал дисаблеры на Assemblere насколько я знаю Ответь, плиз какую литературу ты изучал (Кто авторы) И откуда ты взял исходный код на антискриншот? В литературе видел? | |
| | | hUYAX Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вс Окт 04, 2009 12:34 am | |
| - KerchNET пишет:
- hUYAX пишет:
- Скажу лично про себя
Антибан - С (для драйвера), Delphi (оболочка)
Чит - С++
Endi писал дисаблеры на Assemblere насколько я знаю Ответь, плиз какую литературу ты изучал (Кто авторы) И откуда ты взял исходный код на антискриншот? В литературе видел? Ты слишком заморачиваешься, нигде ты не найдешь как писать читы, качай исходники читов, ковыряйся, разбирайся. Что касается антискрина и антибана, все на том, что все функции снятия скриншота и получения серийника винта в большинстве случаев одинаковы для всех реализующих их программ | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вс Окт 18, 2009 8:31 pm | |
| Народ, а если у меня есть исходный код от чита, как мне из него сделать функционированный чит (.exe) с меню?! КАК СДЕЛАть ЧИТ? P.S Народ, дайте пожалуйста исходник лёгкого чита, ну чтоб для новичков было легко! - Код:
-
#include <NTDDK.h> #include <WINDEF.h> #include <NTIFS.h> #include <STDIO.h> #include <WINUSER.h> #include "IOCTL.h" #include "ZDisasm.h"
/* [sXe Injected 4.4] [32][7C90D793] - NtCreateSection [35][7C90D7D2] - NtCreateThread *NEED* [74][7C90DCFD] - NtOpenFile *NEED* [7A][7C90DD7B] - NtOpenProcess *NEED* [89][7C90DEB6] - NtProtectVirtualMemory [AD][7C90E1AA] - NtQuerySystemInformation *NEED* [D5][7C90E4F2] - NtSetContextThread [FE][7C90E84F] - NtSuspendThread [115][7C90EA32] - NtWriteVirtualMemory *NEED* */
__declspec(dllimport) PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; __declspec(dllimport) _stdcall KeAddSystemServiceTable(PVOID, PVOID, PVOID, PVOID, PVOID); PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTableShadow = NULL;
typedef struct _MODULE_ENTRY { LIST_ENTRY le_mod; ULONG unknown[4]; ULONG base; ULONG driver_start; ULONG unk1; UNICODE_STRING driver_Path; UNICODE_STRING driver_Name; } MODULE_ENTRY, *PMODULE_ENTRY;
const WCHAR DeviceNameBuffer[] = L"\\Device\\SXEDISABLER"; const WCHAR DeviceLinkBuffer[] = L"\\DosDevices\\SXEDISABLER";
PMODULE_ENTRY g_psLoadedModuleList = NULL; PDEVICE_OBJECT g_RootkitDevice = NULL; ULONG g_uProcessNameOffset = 0; NTSTATUS ntStatus = 0;
UCHAR DetourCode[] = "\xE9\x00\x00\x00\x00"; INT DetourSize = 5;
DWORD dwNtCreateThread; BYTE pbNtCreateThread[5];
DWORD dwNtOpenFile; BYTE pbNtOpenFile[5];
DWORD dwNtOpenProcess; BYTE pbNtOpenProcess[5];
DWORD dwNtQuerySystemInformation; BYTE pbNtQuerySystemInformation[5];
DWORD dwNtSetContextThread; BYTE pbNtSetContextThread[5];
DWORD dwNtSuspendThread; BYTE pbNtSuspendThread[5];
DWORD dwNtWriteVirtualMemory; BYTE pbNtWriteVirtualMemory[5];
//====================================================================================================== // DRIVER CODE //====================================================================================================== ULONG GetProcessNameOffset( VOID ) { ULONG i;
for(i = 0; i < 3 * PAGE_SIZE; i++) { if( !strncmp("System", (PCHAR)PsGetCurrentProcess() + i, strlen("System")) ) { return i; } }
return 0; } //====================================================================================================== ULONG GetProcessName( PCHAR theName ) { PEPROCESS curproc; char* nameptr; ULONG i;
if( g_uProcessNameOffset ) { curproc = PsGetCurrentProcess(); nameptr = (PCHAR) curproc + g_uProcessNameOffset; strncpy( theName, nameptr, 16 ); theName[ 16 ] = 0; return TRUE; }
return FALSE; } //====================================================================================================== VOID RestoreALL( VOID ) { __asm { cli push eax mov eax, cr0 and eax, 0xFFFEFFFF mov cr0, eax pop eax }
//NtCreateThread RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x35], pbNtCreateThread, DetourSize); //NtOpenFile RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x74], pbNtOpenFile, DetourSize); //NtOpenProcess RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x7A], pbNtOpenProcess, DetourSize); //NtQuerySystemInformation RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xAD], pbNtQuerySystemInformation, DetourSize); //NtSetContextThread RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xD5], pbNtSetContextThread, DetourSize); //NtSuspendThread RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xFE], pbNtSuspendThread, DetourSize); //NtWriteVirtualMemory RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x115], pbNtWriteVirtualMemory, DetourSize);
__asm { push eax mov eax, cr0 or eax, not 0xFFFEFFFF mov cr0, eax pop eax sti } } //====================================================================================================== VOID PatchALL( VOID ) { __asm { cli push eax mov eax, cr0 and eax, 0xFFFEFFFF mov cr0, eax pop eax }
//NtCreateThread RtlCopyMemory(pbNtCreateThread, KeServiceDescriptorTableShadow[0].ServiceTable[0x35], DetourSize); *(DWORD*)(DetourCode+1) = dwNtCreateThread - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x35] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x35], DetourCode, DetourSize);
//NtOpenFile RtlCopyMemory(pbNtOpenFile, KeServiceDescriptorTableShadow[0].ServiceTable[0x74], DetourSize); *(DWORD*)(DetourCode+1) = dwNtOpenFile - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x74] + 5 );; RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x74], DetourCode, DetourSize);
//NtOpenProcess RtlCopyMemory(pbNtOpenProcess, KeServiceDescriptorTableShadow[0].ServiceTable[0x7A], DetourSize); *(DWORD*)(DetourCode+1) = dwNtOpenProcess - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x7A] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x7A], DetourCode, DetourSize);
//NtQuerySystemInformation RtlCopyMemory(pbNtQuerySystemInformation, KeServiceDescriptorTableShadow[0].ServiceTable[0xAD], DetourSize); *(DWORD*)(DetourCode+1) = dwNtQuerySystemInformation - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xAD] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xAD], DetourCode, DetourSize);
//NtSetContextThread RtlCopyMemory(pbNtSetContextThread, KeServiceDescriptorTableShadow[0].ServiceTable[0xD5], DetourSize); *(DWORD*)(DetourCode+1) = dwNtSetContextThread - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xD5] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xD5], DetourCode, DetourSize);
//NtSuspendThread RtlCopyMemory(pbNtSuspendThread, KeServiceDescriptorTableShadow[0].ServiceTable[0xFE], DetourSize); *(DWORD*)(DetourCode+1) = dwNtSuspendThread - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xFE] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xFE], DetourCode, DetourSize);
//NtWriteVirtualMemory RtlCopyMemory(pbNtWriteVirtualMemory, KeServiceDescriptorTableShadow[0].ServiceTable[0x115], DetourSize); *(DWORD*)(DetourCode+1) = dwNtWriteVirtualMemory - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x115] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x115], DetourCode, DetourSize);
__asm { push eax mov eax, cr0 or eax, not 0xFFFEFFFF mov cr0, eax pop eax sti } } //====================================================================================================== unsigned int getAddressOfShadowTable() { unsigned int i; unsigned char *p; unsigned int dwordatbyte; p = (unsigned char*)KeAddSystemServiceTable; for(i = 0; i < 4096; i++, p++) { __try { dwordatbyte = *(unsigned int*)p; } __except(EXCEPTION_EXECUTE_HANDLER) { return 0; } if(MmIsAddressValid((PVOID)dwordatbyte)) { if(memcmp((PVOID)dwordatbyte, &KeServiceDescriptorTable, 16) == 0) { if((PVOID)dwordatbyte == &KeServiceDescriptorTable) { continue; } return dwordatbyte; } } } return 0; } //====================================================================================================== BOOL getShadowTable() { KeServiceDescriptorTableShadow = (PSERVICE_DESCRIPTOR_TABLE)getAddressOfShadowTable(); if(KeServiceDescriptorTableShadow == NULL) { return FALSE; } else { return TRUE; } } //===================================================================================================== NTSTATUS DriverDeviceControl( PFILE_OBJECT FileObject, BOOLEAN Wait, PVOID InputBuffer, ULONG InputBufferLength, PVOID OutputBuffer, ULONG OutputBufferLength, ULONG IoControlCode, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject ) { IoStatus->Status = STATUS_SUCCESS; IoStatus->Information = 0;
switch( IoControlCode ) { case IOCTL_DEVICE_INITIALIZE: { dwNtCreateThread = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x35]; dwNtOpenFile = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x74]; dwNtOpenProcess = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x7A]; dwNtQuerySystemInformation = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xAD]; dwNtSetContextThread = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xD5]; dwNtSuspendThread = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xFE]; dwNtWriteVirtualMemory = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x115]; break; } case IOCTL_DEVICE_DISABLE: { PatchALL(); break; } case IOCTL_DEVICE_RESTORE: { RestoreALL(); break; } default: { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; break; } }
return IoStatus->Status; } //====================================================================================================== DWORD FindPsLoadedModuleList(PDRIVER_OBJECT DriverObject) { PMODULE_ENTRY psReturnEntry = NULL;
if( !DriverObject ) return 0;
psReturnEntry = *((PMODULE_ENTRY*)((DWORD)DriverObject + 0x14));
return (DWORD)psReturnEntry; } //====================================================================================================== ULONG UnlinkDriverEntry(PDRIVER_OBJECT DriverObject) { if( g_psLoadedModuleList && DriverObject->DriverStart ) { PMODULE_ENTRY pm_current = g_psLoadedModuleList;
while((PMODULE_ENTRY)pm_current->le_mod.Flink != g_psLoadedModuleList) { if ((pm_current->unk1 != 0x00000000) && (pm_current->driver_Path.Length != 0)) { if((ULONG)DriverObject->DriverStart == pm_current->base) { *((PDWORD)pm_current->le_mod.Blink) = (DWORD)pm_current->le_mod.Flink; pm_current->le_mod.Flink->Blink = pm_current->le_mod.Blink; return 1; } }
pm_current = (MODULE_ENTRY*)pm_current->le_mod.Flink; } }
return 0; } //===================================================================================================== NTSTATUS DriverDispatch( PDEVICE_OBJECT DeviceObject, PIRP Irp ) { NTSTATUS ntStatus; PIO_STACK_LOCATION irpStack; PVOID inputBuffer; PVOID outputBuffer; ULONG inputBufferLength; ULONG outputBufferLength; ULONG ioControlCode; UNICODE_STRING ucDevicelink;
ntStatus = Irp->IoStatus.Status = STATUS_SUCCESS; Irp->IoStatus.Information = 0; irpStack = IoGetCurrentIrpStackLocation (Irp);
inputBuffer = Irp->AssociatedIrp.SystemBuffer; inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength; outputBuffer = Irp->AssociatedIrp.SystemBuffer; outputBufferLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength; ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
switch (irpStack->MajorFunction) { case IRP_MJ_CREATE: { break; } case IRP_MJ_SHUTDOWN: { break; } case IRP_MJ_CLOSE: { break; } case IRP_MJ_DEVICE_CONTROL: { if( IOCTL_TRANSFER_TYPE(ioControlCode) == METHOD_NEITHER ) { outputBuffer = Irp->UserBuffer; }
ntStatus = DriverDeviceControl( irpStack->FileObject, TRUE, inputBuffer, inputBufferLength, outputBuffer, outputBufferLength, ioControlCode, &Irp->IoStatus, DeviceObject ); break; } }
IoCompleteRequest( Irp, IO_NO_INCREMENT ); return ntStatus; } //===================================================================================================== VOID DriverUnload( PDRIVER_OBJECT DriverObject ) { UNICODE_STRING ucDeviceLink; RtlInitUnicodeString( &ucDeviceLink, DeviceLinkBuffer ); IoDeleteSymbolicLink( &ucDeviceLink ); IoDeleteDevice(DriverObject->DeviceObject); } //===================================================================================================== NTSTATUS DriverEntry( PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath ) { INT i; NTSTATUS ntStatus; UNICODE_STRING ucDeviceName; UNICODE_STRING ucDeviceLink;
g_psLoadedModuleList = (PMODULE_ENTRY)FindPsLoadedModuleList( DriverObject ); g_uProcessNameOffset = GetProcessNameOffset();
if( !g_psLoadedModuleList || !g_uProcessNameOffset || !getShadowTable() || !UnlinkDriverEntry(DriverObject) ) { return STATUS_UNSUCCESSFUL; }
RtlInitUnicodeString( &ucDeviceName, DeviceNameBuffer ); RtlInitUnicodeString( &ucDeviceLink, DeviceLinkBuffer );
ntStatus = IoCreateDevice(DriverObject, 0, &ucDeviceName, FILE_DEVICE_HACK, 0, TRUE, &g_RootkitDevice);
if( !NT_SUCCESS(ntStatus) ) { IoDeleteDevice(DriverObject->DeviceObject); return ntStatus; }
ntStatus = IoCreateSymbolicLink(&ucDeviceLink, &ucDeviceName); if( !NT_SUCCESS(ntStatus) ) { IoDeleteDevice(DriverObject->DeviceObject); return ntStatus; }
for(i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) { DriverObject->MajorFunction[i] = DriverDispatch; }
DriverObject->DriverUnload = DriverUnload;
return STATUS_SUCCESS; } //=====================================================================================================
| |
| | | hUYAX Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вс Окт 18, 2009 8:53 pm | |
| - KerchNET пишет:
- Народ, а если у меня есть исходный код от чита, как мне из него сделать функционированный чит (.exe) с меню?!
КАК СДЕЛАть ЧИТ?
P.S Народ, дайте пожалуйста исходник лёгкого чита, ну чтоб для новичков было легко! - Код:
-
#include <NTDDK.h> #include <WINDEF.h> #include <NTIFS.h> #include <STDIO.h> #include <WINUSER.h> #include "IOCTL.h" #include "ZDisasm.h"
/* [sXe Injected 4.4] [32][7C90D793] - NtCreateSection [35][7C90D7D2] - NtCreateThread *NEED* [74][7C90DCFD] - NtOpenFile *NEED* [7A][7C90DD7B] - NtOpenProcess *NEED* [89][7C90DEB6] - NtProtectVirtualMemory [AD][7C90E1AA] - NtQuerySystemInformation *NEED* [D5][7C90E4F2] - NtSetContextThread [FE][7C90E84F] - NtSuspendThread [115][7C90EA32] - NtWriteVirtualMemory *NEED* */
__declspec(dllimport) PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; __declspec(dllimport) _stdcall KeAddSystemServiceTable(PVOID, PVOID, PVOID, PVOID, PVOID); PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTableShadow = NULL;
typedef struct _MODULE_ENTRY { LIST_ENTRY le_mod; ULONG unknown[4]; ULONG base; ULONG driver_start; ULONG unk1; UNICODE_STRING driver_Path; UNICODE_STRING driver_Name; } MODULE_ENTRY, *PMODULE_ENTRY;
const WCHAR DeviceNameBuffer[] = L"\\Device\\SXEDISABLER"; const WCHAR DeviceLinkBuffer[] = L"\\DosDevices\\SXEDISABLER";
PMODULE_ENTRY g_psLoadedModuleList = NULL; PDEVICE_OBJECT g_RootkitDevice = NULL; ULONG g_uProcessNameOffset = 0; NTSTATUS ntStatus = 0;
UCHAR DetourCode[] = "\xE9\x00\x00\x00\x00"; INT DetourSize = 5;
DWORD dwNtCreateThread; BYTE pbNtCreateThread[5];
DWORD dwNtOpenFile; BYTE pbNtOpenFile[5];
DWORD dwNtOpenProcess; BYTE pbNtOpenProcess[5];
DWORD dwNtQuerySystemInformation; BYTE pbNtQuerySystemInformation[5];
DWORD dwNtSetContextThread; BYTE pbNtSetContextThread[5];
DWORD dwNtSuspendThread; BYTE pbNtSuspendThread[5];
DWORD dwNtWriteVirtualMemory; BYTE pbNtWriteVirtualMemory[5];
//====================================================================================================== // DRIVER CODE //====================================================================================================== ULONG GetProcessNameOffset( VOID ) { ULONG i;
for(i = 0; i < 3 * PAGE_SIZE; i++) { if( !strncmp("System", (PCHAR)PsGetCurrentProcess() + i, strlen("System")) ) { return i; } }
return 0; } //====================================================================================================== ULONG GetProcessName( PCHAR theName ) { PEPROCESS curproc; char* nameptr; ULONG i;
if( g_uProcessNameOffset ) { curproc = PsGetCurrentProcess(); nameptr = (PCHAR) curproc + g_uProcessNameOffset; strncpy( theName, nameptr, 16 ); theName[ 16 ] = 0; return TRUE; }
return FALSE; } //====================================================================================================== VOID RestoreALL( VOID ) { __asm { cli push eax mov eax, cr0 and eax, 0xFFFEFFFF mov cr0, eax pop eax }
//NtCreateThread RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x35], pbNtCreateThread, DetourSize); //NtOpenFile RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x74], pbNtOpenFile, DetourSize); //NtOpenProcess RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x7A], pbNtOpenProcess, DetourSize); //NtQuerySystemInformation RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xAD], pbNtQuerySystemInformation, DetourSize); //NtSetContextThread RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xD5], pbNtSetContextThread, DetourSize); //NtSuspendThread RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xFE], pbNtSuspendThread, DetourSize); //NtWriteVirtualMemory RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x115], pbNtWriteVirtualMemory, DetourSize);
__asm { push eax mov eax, cr0 or eax, not 0xFFFEFFFF mov cr0, eax pop eax sti } } //====================================================================================================== VOID PatchALL( VOID ) { __asm { cli push eax mov eax, cr0 and eax, 0xFFFEFFFF mov cr0, eax pop eax }
//NtCreateThread RtlCopyMemory(pbNtCreateThread, KeServiceDescriptorTableShadow[0].ServiceTable[0x35], DetourSize); *(DWORD*)(DetourCode+1) = dwNtCreateThread - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x35] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x35], DetourCode, DetourSize);
//NtOpenFile RtlCopyMemory(pbNtOpenFile, KeServiceDescriptorTableShadow[0].ServiceTable[0x74], DetourSize); *(DWORD*)(DetourCode+1) = dwNtOpenFile - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x74] + 5 );; RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x74], DetourCode, DetourSize);
//NtOpenProcess RtlCopyMemory(pbNtOpenProcess, KeServiceDescriptorTableShadow[0].ServiceTable[0x7A], DetourSize); *(DWORD*)(DetourCode+1) = dwNtOpenProcess - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x7A] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x7A], DetourCode, DetourSize);
//NtQuerySystemInformation RtlCopyMemory(pbNtQuerySystemInformation, KeServiceDescriptorTableShadow[0].ServiceTable[0xAD], DetourSize); *(DWORD*)(DetourCode+1) = dwNtQuerySystemInformation - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xAD] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xAD], DetourCode, DetourSize);
//NtSetContextThread RtlCopyMemory(pbNtSetContextThread, KeServiceDescriptorTableShadow[0].ServiceTable[0xD5], DetourSize); *(DWORD*)(DetourCode+1) = dwNtSetContextThread - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xD5] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xD5], DetourCode, DetourSize);
//NtSuspendThread RtlCopyMemory(pbNtSuspendThread, KeServiceDescriptorTableShadow[0].ServiceTable[0xFE], DetourSize); *(DWORD*)(DetourCode+1) = dwNtSuspendThread - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xFE] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0xFE], DetourCode, DetourSize);
//NtWriteVirtualMemory RtlCopyMemory(pbNtWriteVirtualMemory, KeServiceDescriptorTableShadow[0].ServiceTable[0x115], DetourSize); *(DWORD*)(DetourCode+1) = dwNtWriteVirtualMemory - ( (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x115] + 5 ); RtlCopyMemory(KeServiceDescriptorTableShadow[0].ServiceTable[0x115], DetourCode, DetourSize);
__asm { push eax mov eax, cr0 or eax, not 0xFFFEFFFF mov cr0, eax pop eax sti } } //====================================================================================================== unsigned int getAddressOfShadowTable() { unsigned int i; unsigned char *p; unsigned int dwordatbyte; p = (unsigned char*)KeAddSystemServiceTable; for(i = 0; i < 4096; i++, p++) { __try { dwordatbyte = *(unsigned int*)p; } __except(EXCEPTION_EXECUTE_HANDLER) { return 0; } if(MmIsAddressValid((PVOID)dwordatbyte)) { if(memcmp((PVOID)dwordatbyte, &KeServiceDescriptorTable, 16) == 0) { if((PVOID)dwordatbyte == &KeServiceDescriptorTable) { continue; } return dwordatbyte; } } } return 0; } //====================================================================================================== BOOL getShadowTable() { KeServiceDescriptorTableShadow = (PSERVICE_DESCRIPTOR_TABLE)getAddressOfShadowTable(); if(KeServiceDescriptorTableShadow == NULL) { return FALSE; } else { return TRUE; } } //===================================================================================================== NTSTATUS DriverDeviceControl( PFILE_OBJECT FileObject, BOOLEAN Wait, PVOID InputBuffer, ULONG InputBufferLength, PVOID OutputBuffer, ULONG OutputBufferLength, ULONG IoControlCode, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject ) { IoStatus->Status = STATUS_SUCCESS; IoStatus->Information = 0;
switch( IoControlCode ) { case IOCTL_DEVICE_INITIALIZE: { dwNtCreateThread = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x35]; dwNtOpenFile = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x74]; dwNtOpenProcess = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x7A]; dwNtQuerySystemInformation = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xAD]; dwNtSetContextThread = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xD5]; dwNtSuspendThread = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0xFE]; dwNtWriteVirtualMemory = (DWORD)KeServiceDescriptorTableShadow[0].ServiceTable[0x115]; break; } case IOCTL_DEVICE_DISABLE: { PatchALL(); break; } case IOCTL_DEVICE_RESTORE: { RestoreALL(); break; } default: { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; break; } }
return IoStatus->Status; } //====================================================================================================== DWORD FindPsLoadedModuleList(PDRIVER_OBJECT DriverObject) { PMODULE_ENTRY psReturnEntry = NULL;
if( !DriverObject ) return 0;
psReturnEntry = *((PMODULE_ENTRY*)((DWORD)DriverObject + 0x14));
return (DWORD)psReturnEntry; } //====================================================================================================== ULONG UnlinkDriverEntry(PDRIVER_OBJECT DriverObject) { if( g_psLoadedModuleList && DriverObject->DriverStart ) { PMODULE_ENTRY pm_current = g_psLoadedModuleList;
while((PMODULE_ENTRY)pm_current->le_mod.Flink != g_psLoadedModuleList) { if ((pm_current->unk1 != 0x00000000) && (pm_current->driver_Path.Length != 0)) { if((ULONG)DriverObject->DriverStart == pm_current->base) { *((PDWORD)pm_current->le_mod.Blink) = (DWORD)pm_current->le_mod.Flink; pm_current->le_mod.Flink->Blink = pm_current->le_mod.Blink; return 1; } }
pm_current = (MODULE_ENTRY*)pm_current->le_mod.Flink; } }
return 0; } //===================================================================================================== NTSTATUS DriverDispatch( PDEVICE_OBJECT DeviceObject, PIRP Irp ) { NTSTATUS ntStatus; PIO_STACK_LOCATION irpStack; PVOID inputBuffer; PVOID outputBuffer; ULONG inputBufferLength; ULONG outputBufferLength; ULONG ioControlCode; UNICODE_STRING ucDevicelink;
ntStatus = Irp->IoStatus.Status = STATUS_SUCCESS; Irp->IoStatus.Information = 0; irpStack = IoGetCurrentIrpStackLocation (Irp);
inputBuffer = Irp->AssociatedIrp.SystemBuffer; inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength; outputBuffer = Irp->AssociatedIrp.SystemBuffer; outputBufferLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength; ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
switch (irpStack->MajorFunction) { case IRP_MJ_CREATE: { break; } case IRP_MJ_SHUTDOWN: { break; } case IRP_MJ_CLOSE: { break; } case IRP_MJ_DEVICE_CONTROL: { if( IOCTL_TRANSFER_TYPE(ioControlCode) == METHOD_NEITHER ) { outputBuffer = Irp->UserBuffer; }
ntStatus = DriverDeviceControl( irpStack->FileObject, TRUE, inputBuffer, inputBufferLength, outputBuffer, outputBufferLength, ioControlCode, &Irp->IoStatus, DeviceObject ); break; } }
IoCompleteRequest( Irp, IO_NO_INCREMENT ); return ntStatus; } //===================================================================================================== VOID DriverUnload( PDRIVER_OBJECT DriverObject ) { UNICODE_STRING ucDeviceLink; RtlInitUnicodeString( &ucDeviceLink, DeviceLinkBuffer ); IoDeleteSymbolicLink( &ucDeviceLink ); IoDeleteDevice(DriverObject->DeviceObject); } //===================================================================================================== NTSTATUS DriverEntry( PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath ) { INT i; NTSTATUS ntStatus; UNICODE_STRING ucDeviceName; UNICODE_STRING ucDeviceLink;
g_psLoadedModuleList = (PMODULE_ENTRY)FindPsLoadedModuleList( DriverObject ); g_uProcessNameOffset = GetProcessNameOffset();
if( !g_psLoadedModuleList || !g_uProcessNameOffset || !getShadowTable() || !UnlinkDriverEntry(DriverObject) ) { return STATUS_UNSUCCESSFUL; }
RtlInitUnicodeString( &ucDeviceName, DeviceNameBuffer ); RtlInitUnicodeString( &ucDeviceLink, DeviceLinkBuffer );
ntStatus = IoCreateDevice(DriverObject, 0, &ucDeviceName, FILE_DEVICE_HACK, 0, TRUE, &g_RootkitDevice);
if( !NT_SUCCESS(ntStatus) ) { IoDeleteDevice(DriverObject->DeviceObject); return ntStatus; }
ntStatus = IoCreateSymbolicLink(&ucDeviceLink, &ucDeviceName); if( !NT_SUCCESS(ntStatus) ) { IoDeleteDevice(DriverObject->DeviceObject); return ntStatus; }
for(i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) { DriverObject->MajorFunction[i] = DriverDispatch; }
DriverObject->DriverUnload = DriverUnload;
return STATUS_SUCCESS; } //=====================================================================================================
Если ты про этот исходник, то это не чит. а дисаблер к SXE оч старый и далеко не полный. Исходники читов тут - cheat-project.net в разделе Sources | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вс Окт 18, 2009 10:00 pm | |
| Ну а если есть исходный код, то как сделать сам чит с меню??
P.S Ну а если нет исходного кода, то как самому написать правильно?! | |
| | | hUYAX Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Пн Окт 19, 2009 12:28 pm | |
| - KerchNET пишет:
- Ну а если есть исходный код, то как сделать сам чит с меню??
P.S Ну а если нет исходного кода, то как самому написать правильно?! Microsoft Visual Studio тебе в помощь. Язык C++ | |
| | | Lamak Повелитель Стихий
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Пн Окт 19, 2009 4:01 pm | |
| Вот зачем тебе эта морока? ты больше мозг продолбишь , проще купить у знающих и проверенных людей) | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Пн Окт 19, 2009 9:18 pm | |
| - Lamak пишет:
- Вот зачем тебе эта морока? ты больше мозг продолбишь , проще купить у знающих и проверенных людей)
Я хочу сам научиться. Ты ж не покупал не у кого, а сам разбирался, потому что интересно. Вот я зашёл на сайт, где брать исходники, а как их подправлять, чтоб античит не видел? http://www.cheat-project.com/games/41/%5B-Source-Code-%5D | |
| | | hUYAX Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Пн Окт 19, 2009 10:51 pm | |
| - KerchNET пишет:
- Lamak пишет:
- Вот зачем тебе эта морока? ты больше мозг продолбишь , проще купить у знающих и проверенных людей)
Я хочу сам научиться. Ты ж не покупал не у кого, а сам разбирался, потому что интересно. Вот я зашёл на сайт, где брать исходники, а как их подправлять, чтоб античит не видел? http://www.cheat-project.com/games/41/%5B-Source-Code-%5D Скорей всего никак | |
| | | Lamak Повелитель Стихий
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Пн Окт 19, 2009 11:06 pm | |
| хех думаешь всё так просто сначала надо рыться в исходниках античита , потом уже читом заниматься | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вт Окт 20, 2009 2:50 am | |
| - Lamak пишет:
- хех думаешь всё так просто сначала надо рыться в исходниках античита , потом уже читом заниматься
А как исходный код маяка выдрать? UPlyX v0.5* как распаковать? | |
| | | Lamak Повелитель Стихий
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вт Окт 20, 2009 3:57 am | |
| исходник можешь у хуякса выторговать | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вт Окт 20, 2009 4:53 pm | |
| - Lamak пишет:
- исходник можешь у хуякса выторговать
Та блять! Нахуй мне покупать, если можно самому разобраться. Я ж спрашиваю как распаковать файлы, упакованныe UPolyx v0.5* | |
| | | Lamak Повелитель Стихий
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вт Окт 20, 2009 4:56 pm | |
| Омг , хуякс разве можно скомпилированный файл , распоковать опять на исходники? | |
| | | KOD Профи читер
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вт Окт 20, 2009 8:15 pm | |
| KerchNET, на олчитс тебе правильно сказали
исходники и самого маяка и чита под него (не знаю что ты имел ввиду) есть только у авторов, а из бинарника, при условии что ты его распакуешь, ты сможешь получить лишь ассемблерный код
нету магических прог для распаковки защитных упаковщиков одной кнопкой, иначе какой смысл в такой защите? вот, осиливай ) | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вт Окт 20, 2009 10:10 pm | |
| - Дорогие , читера!
Читы на маяк вы делаете из исходников, "старых" читов, которые палились, но как переделать исходник не замечаемым для античита?! | |
| | | KerchNET Читюк
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Вт Окт 20, 2009 10:13 pm | |
| - KOD пишет:
- KerchNET, на олчитс тебе правильно сказали
исходники и самого маяка и чита под него (не знаю что ты имел ввиду) есть только у авторов, а из бинарника, при условии что ты его распакуешь, ты сможешь получить лишь ассемблерный код
нету магических прог для распаковки защитных упаковщиков одной кнопкой, иначе какой смысл в такой защите? вот, осиливай ) Так а с *нецензурная брань* мне Lamak написал, что "можешь купить исходники у huYAX'a" да и ещё за бабки. Разводило?! Правильно, что лучше самому сделать! | |
| | | Lamak Повелитель Стихий
| Тема: Re: Язык программирования для написания myAC 1.5.8 14 hack Ср Окт 21, 2009 2:37 am | |
| я это писал , потому что думал что он чит с их помощью делает , но раз нет значит флаг в руки | |
| | | | Язык программирования для написания myAC 1.5.8 14 hack | |
|
| Права доступа к этому форуму: | Вы не можете отвечать на сообщения
| |
| |
| |