Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Resultados 1 a 2 de 2

Tópico: Anti-Debugging

  1. #1

    Avatar de c0zy
    Data de Ingresso
    Mar 2012
    Localização
    Capanema - Paraná
    Idade
    29
    Posts
    98
    Agradecido
    1
    Peso da Avaliação
    9

    Padrão Anti-Debugging

    AntiDebug.h
    Código:
    #ifndef ANTIDEBUG_H
    #define ANTIDEBUG_H
    
    
    #include <windows.h>
    #include "Misc.h"
    
    bool CheckForDebugger_CRDP	(void);
    bool CheckForDebugger_NQIP	(void);
    bool CheckForDebugger_PEB	(void);
    bool CheckForDebugger_EH	(void);
    
    bool MonitorDebugRegisters	(void);
    
    #endif
    AntiDebug.cpp
    Código:
    #include "AntiDebug.h"
    
    bool CheckForDebugger_CRDP(void)
    {
    	BOOL Present = false;
    	CheckRemoteDebuggerPresent(GetCurrentProcess(),&Present);
    	return Present;
    }
    
    bool CheckForDebugger_NQIP(void)
    {
    	HMODULE hModNTDLL;
    	FARPROC _NQIP;
    
    	hModNTDLL = LoadLibrary("ntdll.dll");
    	_NQIP = GetProcAddress(hModNTDLL,"NtQueryInformationProcess");
    
    	PVOID ProcessInfo;
    	DWORD *ad_ = (DWORD*)&ProcessInfo;
    
    	__asm
    	{
    		push NULL
    		push 4
    		push ad_
    		push 0x07		//debug port ( if there is one, that's what we're checking )
    		push -1			//current process
    		call _NQIP
    	}
    
    	if(ProcessInfo != 0)
    	{
    		return true;
    	}
    	return false;
    }
    
    bool CheckForDebugger_PEB(void)
    {
    	TIB* tib;
    	__asm
    	{
    		push eax
    
    		mov eax,fs:[18h]
    		mov tib,eax
    
    		pop eax
    	}
    	
    	if( tib->Peb->BeingDebugged == 1 )
    	{
    		return true;
    	} else {
    		return false;
    	}
    }
    
    bool MonitorDebugRegisters(void)
    {
    	CONTEXT* ct;
    	GetThreadContext(GetCurrentProcess(),ct);
    	if(ct->Dr0 != 0 || ct->Dr1 != 0 || ct->Dr2 != 0 || ct->Dr3 != 0 || ct->Dr6 != 0 || ct->Dr7 != 0)
    	{
    		return true;
    	}
    	return false;
    }
    
    int set=0;
    bool done = false;
    
    void EHCheck()
    {
    	__try 
    	{
    		__asm
    		{
    				int 3h
    		}
    	}__except(EXCEPTION_EXECUTE_HANDLER)
    	{
    			set=1;
    	}
    	done = true;
    }
    
    bool CheckForDebugger_EH(void)
    {
    	HANDLE EHThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)EHCheck,0,0,0);
    	if(done == true)
    	{
    		if(set != 1)
    		{
    			return true;
    		}
    	}
    	return false;
    }
    Misc.h
    Código:
    #ifndef MISC_H
    #define MISC_H
    
    
    #include <windows.h>
    
    struct PEB
    {
    	BOOLEAN InheritedAddressSpace;		    // 00
    	BOOLEAN ReadImageFileExecOptions;		// 01
    	BOOLEAN BeingDebugged;					// 02
    	BOOLEAN SpareBool;						// 03
    	HANDLE Mutant;							// 04
    	HMODULE ImageBaseAddress;				// 08
    	char* reserved1[4];						// 0c
    	int Parameters;							// 10
    	PVOID SubSystemData;					// 14
    	HANDLE ProcessHeap;						// 18
    	char* reserved3[4];						// 1c
    	PVOID FastPebLockRoutine;				// 20
    	PVOID FastPebUnlockRoutine;				// 24
    	ULONG EnvironmentUpdateCount;			// 28
    	PVOID KernelCallbackTable;				// 2c
    	PVOID EventLogSection;					// 30
    	PVOID EventLog;							// 34
    	PVOID FreeList;							// 38
    	ULONG TlsExpansionCounter;				// 3c
    	char* reserved4[4];						// 40
    	ULONG TlsBitmapBits[2];					// 44
    	PVOID ReadOnlySharedMemoryBase;			// 4c
    	PVOID ReadOnlySharedMemoryHeap;			// 50
    	PVOID *ReadOnlyStaticServerData;		// 54
    	PVOID AnsiCodePageData;					// 58
    	PVOID OemCodePageData;					// 5c
    	PVOID UnicodeCaseTableData;				// 60
    	ULONG NumberOfProcessors;				// 64
    	ULONG NtGlobalFlag;						// 68
    	BYTE Spare2[4];							// 6c
    	LARGE_INTEGER CriticalSectionTimeout;   // 70
    	ULONG HeapSegmentReserve;				// 78
    	ULONG HeapSegmentCommit;				// 7c
    	ULONG HeapDeCommitTotalFreeTh;			// 80
    	ULONG HeapDeCommitFreeBlockTh;			// 84
    	ULONG NumberOfHeaps;				    // 88
    	ULONG MaximumNumberOfHeaps;				// 8c
    	PVOID *ProcessHeaps;					// 90
    	PVOID GdiSharedHandleTable;				// 94
    	PVOID ProcessStarterHelper;				// 98
    	PVOID GdiDCAttributeList;				// 9c
    	PVOID LoaderLock;						// a0
    	ULONG OSMajorVersion;					// a4
    	ULONG OSMinorVersion;					// a8
    	ULONG OSBuildNumber;					// ac
    	ULONG OSPlatformId;						// b0
    	ULONG ImageSubSystem;					// b4
    	ULONG ImageSubSystemMajorVersion;		// b8
    	ULONG ImageSubSystemMinorVersion;		// bc
    	ULONG ImageProcessAffinityMask;			// c0
    	ULONG GdiHandleBuffer[34];				// c4
    	ULONG PostProcessInitRoutine;			// 14c
    	char* reserved5[4];						// 150
    	ULONG TlsExpansionBitmapBits[32];		// 154
    	ULONG SessionId;						// 1d4
    };
    
    struct TIB
    {
    	NT_TIB Tib;								// 000 Info block
    	PVOID EnvironmentPointer;				// 01c
    	DWORD processId;						// 20
    	DWORD threadId;							// 24
    	PVOID ActiveRpcHandle;					// 028
    	PVOID ThreadLocalStoragePointer;		// 02c
    	PEB *Peb;								// 030
    	DWORD LastErrorValue;					// 034
    	ULONG CountOfOwnedCriticalSections;		// 038
    	PVOID CsrClientThread;					// 03c
    	PVOID Win32ThreadInfo;					// 040
    	ULONG Win32ClientInfo[0x1f];			// 044
    	PVOID WOW32Reserved;					// 0c0
    	ULONG CurrentLocale;					// 0c4
    	ULONG FpSoftwareStatusRegister;			// 0c8
    	PVOID SystemReserved1[54];				// 0cc
    	PVOID Spare1;							// 1a4
    	LONG ExceptionCode;						// 1a8
    	BYTE SpareBytes1[40];					// 1ac
    	PVOID SystemReserved2[10];				// 1d4
    	DWORD num_async_io;						// 1fc
    	ULONG_PTR dpmi_vif;						// 200
    	DWORD vm86_pending;						// 204
    	DWORD pad6[309];						// 208
    	ULONG gdiRgn;							// 6dc
    	ULONG gdiPen;							// 6e0
    	ULONG gdiBrush;							// 6e4
    	DWORD RealProcessId;					// 6e8
    	DWORD RealThreadId;						// 6ec
    	HANDLE GdiCachedProcessHandle;			// 6f0
    	ULONG GdiClientPID;						// 6f4
    	ULONG GdiClientTID;						// 6f8
    	PVOID GdiThreadLocaleInfo;				// 6fc
    	PVOID UserReserved[5];					// 700
    	PVOID glDispachTable[280];				// 714
    	ULONG glReserved1[26];					// b74
    	PVOID glReserved2;						// bdc
    	PVOID glSectionInfo;					// be0
    	PVOID glSection;						// be4
    	PVOID glTable;							// be8
    	PVOID glCurrentRC;						// bec
    	PVOID glContext;						// bf0
    	ULONG LastStatusValue;					// bf4
    	char* reserved1[214];					// bf8
    	WCHAR StaticUnicodeBuffer[261];			// c00
    	PVOID DeallocationStack;				// e0c
    	PVOID TlsSlots[64];						// e10
    	char* reserved2[8];						// f10
    	PVOID Vdm;								// f18
    	PVOID ReservedForNtRpc;					// f1c
    	PVOID DbgSsReserved[2];					// f20
    	ULONG HardErrorDisabled;				// f28
    	PVOID Instrumentation[16];				// f2c
    	PVOID WinSockData;						// f6c
    	ULONG GdiBatchCount;					// f70
    	ULONG Spare2;							// f74
    	ULONG Spare3;							// f78
    	ULONG Spare4;							// f7c
    	PVOID ReservedForOle;					// f80
    	ULONG WaitingOnLoaderLock;				// f84
    	PVOID Reserved5[3];						// f88
    	PVOID *TlsExpansionSlots;				// f94
    };
    
    #endif
    Main.cpp
    Código:
    include <windows.h>
    
    #include "AntiDebug.h"
    
    
    void Thread()
    {
    	while(true)
    	{
    		if(CheckForDebugger_CRDP() || 
    		   CheckForDebugger_NQIP() || 
    		   CheckForDebugger_EH() ||
    		   CheckForDebugger_PEB() ||
    		   CheckForDebugger_EH() ||
    		   MonitorDebugRegisters()
    		   )
    		{
    				HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION | 
    											PROCESS_TERMINATE,
    											0,
    											GetCurrentProcessId()
    											);
    
    				TerminateProcess(handle,0);
    		}
    	}
    }
    
    bool __stdcall DllMain(HINSTANCE hInst,DWORD dwReason,void* lpReserved)
    {
    	if(dwReason == DLL_PROCESS_ATTACH)
    	{
    		CreateThread(0,0,(LPTHREAD_START_ROUTINE)Thread,0,0,0);
    	}
    	return true;
    Créditos:
    void

    []'s

  2. #2

    Avatar de DaniloAC
    Data de Ingresso
    Jun 2018
    Localização
    new york
    Posts
    2
    Agradecido
    0
    Agradeceu
    0
    Peso da Avaliação
    0

    Padrão

    interessante a quantidade de linha que você gasta em uma coisa simples.

 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Dúvida| Launcher PSLORD Anti Hacker e Anti Hacker do Main
    Por inloss no fórum Dúvidas
    Respostas: 0
    Último Post: 27-06-2014, 01:22 AM
  2. |Tutorial| Anti GM Hacker
    Por SrHouse no fórum Dekaron | 2 Moons
    Respostas: 3
    Último Post: 27-08-2012, 10:37 AM
  3. |Source| Anti DoS e Anti Inject
    Por Marceliin no fórum PHP
    Respostas: 7
    Último Post: 13-03-2012, 09:06 PM
  4. |Source| Anti Sql inject
    Por Litlle no fórum Sources
    Respostas: 2
    Último Post: 30-12-2011, 07:04 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •