首页
社区
课程
招聘
xxxxxxxxxxxx
发表于: 2013-4-4 17:12 7608

xxxxxxxxxxxx

2013-4-4 17:12
7608
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
要发代码 就发全
2013-4-4 17:15
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
来膜拜我了?
2013-4-4 17:17
0
雪    币: 952
活跃值: (1826)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
if(Handles->Information[i].ObjectTypeNumber == 0x8)
这个索引值不同系统不同,这样不大可靠
应该先创建一个debugport句柄获取 ObjectTypeNumber
2013-4-4 17:18
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
*****!你给kernelMode打开看看你的东西还能跑不?
我做的是一些列的,就算你开启KernelMode也可以过啊
没有这个技术 就别逞这个能
2013-4-4 17:28
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
竟然还挑衅我
2013-4-4 17:29
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
也可能我才疏学浅 你没有给出能跑的代码
我替你整了一下
如果是如下代码 那肯定过不了sod的kernelMde,还有你的代码检测到我的vs2008了,但是closehandle后异常了,我也难得理睬了
#include <stdio.h>
#include <shlwapi.h>
#include "PEInfo.h"
#pragma comment(lib,"shlwapi")
 typedef NTSYSAPI NTSTATUS (NTAPI *ZWQUERYSYSTEMINFORMATION)(   
   IN ULONG SystemInformationClass,   
    IN PVOID SystemInformation,   
  IN ULONG SystemInformationLength,   
    OUT PULONG ReturnLength);  
DWORD OldProtect=0;
DWORD NewProtect=0;

typedef struct _SYSTEM_HANDLE_INFORMATION 
{
	ULONG ProcessId;
	UCHAR ObjectTypeNumber;
	UCHAR Flags;
	USHORT Handle;
	PVOID Object;
	ACCESS_MASK GrantedAccess;
}SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;

typedef struct _SYSTEM_HANDLE_INFORMATION_EX 
{
	ULONG NumberOfHandles;
	SYSTEM_HANDLE_INFORMATION Information[1];
}SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX;

#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) 

	void KillPeHeader()
	{
		char *pBaseAddr = (char*)GetModuleHandle(NULL);
		VirtualProtect(pBaseAddr, 0x1000,PAGE_READWRITE, &OldProtect);
		ZeroMemory(pBaseAddr, 0x1000);
		VirtualProtect(pBaseAddr, 0x1000,PAGE_NOACCESS, &NewProtect);
	}
	//anti debug
	bool KillDebugHandle()
	{
		ULONG* pHandleInfor = NULL;
		NTSTATUS ntStatus;
		ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation = NULL;

		ULONG ulSize = 0x4000;
		HMODULE hHanlde = GetModuleHandle(L"ntdll.dll");
		if(NULL == hHanlde) return false;
		ZwQuerySystemInformation = (ZWQUERYSYSTEMINFORMATION)GetProcAddress(hHanlde, "ZwQuerySystemInformation");
		if(NULL == ZwQuerySystemInformation) return false;
		do
		{
			pHandleInfor = (ULONG*)malloc(ulSize);
			if(NULL == pHandleInfor) return false;
			ntStatus = ZwQuerySystemInformation(16,pHandleInfor,ulSize,NULL);
			if(!NT_SUCCESS(ntStatus))
			{
				free(pHandleInfor);
				ulSize = ulSize * 2;
				if(ulSize > 0x4000000) return false;
			}
		}while(!NT_SUCCESS(ntStatus));
		PSYSTEM_HANDLE_INFORMATION_EX Handles = (PSYSTEM_HANDLE_INFORMATION_EX)pHandleInfor;
		if(NULL == Handles) return false;
		for(ULONG i = 0; i < Handles->NumberOfHandles; i++)
		{
			if(GetCurrentProcessId() != Handles->Information[i].ProcessId)
			{
				if(Handles->Information[i].ObjectTypeNumber == 0x8) // Handle Type "DebugObject"
				{
					MessageBox(GetActiveWindow(),L"run debugger",L"run debugger",MB_OK);
					CloseHandle((HANDLE)Handles->Information[i].Handle);
					break;
				}
			}
		}
		free(Handles);
		return true;
	}





int main()

{
KillDebugHandle();
   
      return 0;
} 


2013-4-4 17:32
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
8
哥懒得和你讲,哥还要上班,还要写代码,我挑衅你?你想多了.
2013-4-4 17:36
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
9
BTW:这份代码肯定是我测试过才敢发出来的.
2013-4-4 17:37
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=elianmeng;1161617]膜拜个狗屁啊!你给kernelMode打开看看你的东西还能跑不?
我做的是一些列的,就算你开启KernelMode也可以过啊
没有这个技术 就别逞这个能[/QUOTE]

说脏话,留个证据.
2013-4-4 17:38
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
我用原版的od sod打上kenelMode 你的检测真的没有用啊
让我怎么膜拜你啊
上传的附件:
2013-4-4 17:53
0
雪    币: 496
活跃值: (291)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=loqich;1161614]if(Handles->Information[i].ObjectTypeNumber == 0x8)
这个索引值不同系统不同,这样不大可靠
应该先创建一个debugport句柄获取 ObjectTypeNumber[/QUOTE]

说的对。

你这里直接hardcode一个值问题很大。
楼主可以用WinObj查看一下ObjectTypes

在xp下面和win7下面是ObjectType的数量是不一样的,没有探究过有没有影响之前的index值。

另外:
过不过调试器还要看是怎么调的,就如楼主这样一个函数,你说你放在哪里去调用呢?如果你放在main函数里面那就几乎跟没反调措施一样,多trace几回就知道反调代码在哪里启动了。
退一步说你放在mainCRTStartup里面还是能被Trace出来。

如果能做到你的反调措施在exe的image加载之前就生效就比较可靠了。
2013-4-4 19:25
0
雪    币: 47147
活跃值: (20485)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
13
- 对海风大侠很尊敬,没别的意思,请不要介意.
[CODE]namespace AntiDebug
{
void KillPeHeader()
……


即发出来就不要删除了。

这个回帖同样送给你:
http://bbs.pediy.com/showpost.php?p=1161675&postcount=11
2013-4-4 20:34
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
DT吃饱了撑着。。。。
2013-4-4 20:38
0
雪    币: 390
活跃值: (768)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
分享即是美。。
2013-4-4 21:04
0
雪    币: 7395
活跃值: (4582)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
又是一个老虎屁股,哈哈。。。
2013-4-4 22:20
0
游客
登录 | 注册 方可回帖
返回
//