当前位置: 首页 > news >正文

巴西网站建设免费入驻的电商平台

巴西网站建设,免费入驻的电商平台,赌博游戏网站建设,做服务器的网站的模板在Windows操作系统中,Process Environment Block (PEB,进程环境块) 是一个包含特定进程信息的数据结构。它可以被用于反调试中 如何获取PEB指针? 在Windows操作系统中,获取PEB指针的常见方法主要有以下几种。: 1. 使…

在Windows操作系统中,Process Environment Block (PEB,进程环境块) 是一个包含特定进程信息的数据结构。它可以被用于反调试中

如何获取PEB指针?

在Windows操作系统中,获取PEB指针的常见方法主要有以下几种。:

1. 使用 NtCurrentPeb 获取 PEB

NtCurrentPeb 是Windows内核提供的一个函数,它返回当前进程的PEB指针。这个方法通常用于内核模式或通过非公开的API调用。在用户模式中,你可以使用 NtCurrentPeb 来获取PEB指针。

PEB* GetPEB()
{return NtCurrentPeb();  // 获取当前进程的PEB指针
}

NtCurrentPeb 是Windows的NT内核函数,通常不公开给用户模式程序直接调用,但可以通过动态加载 ntdll.dll 并使用 GetProcAddress 来调用。

2. 使用 NtQueryInformationProcess 获取 PEB

通过 NtQueryInformationProcess 函数,可以查询关于进程的信息,其中包括PEB的指针。这是通过NT内部函数来实现的。

#include <Windows.h>
#include <winternl.h>typedef struct _PROCESS_BASIC_INFORMATION {ULONG Reserved;ULONG PebBaseAddress;  // PEB的地址ULONG AffinityMask;ULONG BasePriority;ULONG UniqueProcessId;ULONG InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;typedef NTSTATUS(WINAPI* NtQueryInformationProcess_t)(HANDLE ProcessHandle,PROCESS_INFORMATION_CLASS ProcessInformationClass,PVOID ProcessInformation,ULONG ProcessInformationLength,PULONG ReturnLength
);PEB* GetPEB(HANDLE hProcess)
{NtQueryInformationProcess_t NtQueryInformationProcess =(NtQueryInformationProcess_t)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtQueryInformationProcess");PROCESS_BASIC_INFORMATION pbi;ULONG len = 0;NTSTATUS status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), &len);if (NT_SUCCESS(status)){return (PEB*)pbi.PebBaseAddress;}return NULL;
}

:此方法需要依赖动态加载 ntdll.dll,并调用 NtQueryInformationProcess 函数。这个函数是Windows的NT内核接口,返回关于进程的详细信息。

3. 直接通过 NtQueryInformationProcess 查询 PEB 地址

也可以通过调用 NtQueryInformationProcess 来获取进程的PEB地址。你可以查询有关进程的基本信息,其中就包含PEB的地址。

#include <windows.h>
#include <winternl.h>typedef enum _PROCESSINFOCLASS {ProcessBasicInformation = 0
} PROCESSINFOCLASS;typedef struct _PROCESS_BASIC_INFORMATION {ULONG Reserved;ULONG PebBaseAddress; // PEB地址ULONG AffinityMask;ULONG BasePriority;ULONG UniqueProcessId;ULONG InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;typedef NTSTATUS(WINAPI* NtQueryInformationProcess_t)(HANDLE ProcessHandle,PROCESSINFOCLASS ProcessInformationClass,PVOID ProcessInformation,ULONG ProcessInformationLength,PULONG ReturnLength
);PEB* GetPEB(HANDLE processHandle)
{PROCESS_BASIC_INFORMATION pbi;ULONG len = 0;NtQueryInformationProcess_t NtQueryInformationProcess = (NtQueryInformationProcess_t)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtQueryInformationProcess");NTSTATUS status = NtQueryInformationProcess(processHandle, ProcessBasicInformation, &pbi, sizeof(pbi), &len);if (NT_SUCCESS(status)){return (PEB*)pbi.PebBaseAddress;}return NULL;
}

检测PEB的哪些位置来检测调试?

  1. 检查BeingDebugged标志:

    • PEB结构中的BeingDebugged字段直接指示进程是否正在被调试。该字段是一个布尔值,当进程在调试器下运行时,它的值为1,否则为0。
    BOOL IsDebuggerPresent()
    {PEB* peb = (PEB*)__readfsdword(0x30); // 获取PEB地址return peb->BeingDebugged; // 返回BeingDebugged字段的值
    }
    
  2. 检查NtGlobalFlag标志:

    • PEB中的NtGlobalFlag字段包含一些系统标志,其中某些标志在进程被调试器附加时会被设置。例如,FLG_HEAP_ENABLE_TAIL_CHECK, FLG_HEAP_ENABLE_FREE_CHECKFLG_HEAP_VALIDATE_PARAMETERS 会在调试器附加时被设置。
    BOOL CheckNtGlobalFlag()
    {PEB* peb = (PEB*)__readfsdword(0x30); // 获取PEB地址DWORD NtGlobalFlag = peb->NtGlobalFlag;return (NtGlobalFlag & 0x70) != 0; // 检查特定的调试标志
    }
    
  3. 检查Heap Flags和ForceFlags:

    • 调试器通常会修改PEB中的Heap Flags和ForceFlags,以启用更严格的堆检查。在PEB中的ProcessHeap字段指向进程的默认堆,这些标志位于该堆结构中。
    BOOL CheckHeapFlags()
    {PEB* peb = (PEB*)__readfsdword(0x30); // 获取PEB地址PVOID heap = peb->ProcessHeap; // 获取默认堆地址DWORD heapFlags = *(DWORD*)((BYTE*)heap + 0x40);DWORD forceFlags = *(DWORD*)((BYTE*)heap + 0x44);return (heapFlags & 2) || (forceFlags != 0);
    }
    
  4. 通过PEB中的StartupInfo检查调试器:

    • PEB中的StartupInfo结构包含有关进程启动的详细信息。可以通过检查StartupInfo中的特定字段来判断是否有调试器存在。
    BOOL CheckStartupInfo()
    {PEB* peb = (PEB*)__readfsdword(0x30); // 获取PEB地址STARTUPINFO* startupInfo = &peb->ProcessParameters->StartupInfo;return startupInfo->dwFlags & STARTF_FORCEONFEEDBACK; // 检查特定标志
    }
    

示例crackMe

以下是反调试代码的反编译示例

if ( *((_DWORD *)NtCurrentPeb()->ProcessHeap + 3) != 2 )a2[v6] = 34;
if ( (NtCurrentPeb()->NtGlobalFlag & 0x70) != 0 )v12 = v10 + v11;
if ( (unsigned __int8)*(_DWORD *)&NtCurrentPeb()->BeingDebugged )
{v10 = -83;v11 = 43;
}

文章转载自:
http://npn.c7629.cn
http://ebullience.c7629.cn
http://punitive.c7629.cn
http://craniotomy.c7629.cn
http://mangy.c7629.cn
http://initiatress.c7629.cn
http://frisian.c7629.cn
http://retch.c7629.cn
http://austerely.c7629.cn
http://geodynamics.c7629.cn
http://anticipate.c7629.cn
http://metastases.c7629.cn
http://factionary.c7629.cn
http://counterturn.c7629.cn
http://menage.c7629.cn
http://caner.c7629.cn
http://baalish.c7629.cn
http://whipcord.c7629.cn
http://mentum.c7629.cn
http://maniple.c7629.cn
http://conservancy.c7629.cn
http://imperfectly.c7629.cn
http://hellenize.c7629.cn
http://undertip.c7629.cn
http://muciferous.c7629.cn
http://elaborately.c7629.cn
http://sad.c7629.cn
http://israeli.c7629.cn
http://pial.c7629.cn
http://belletrist.c7629.cn
http://animalculum.c7629.cn
http://redowa.c7629.cn
http://sustenance.c7629.cn
http://wager.c7629.cn
http://aib.c7629.cn
http://stratigraphical.c7629.cn
http://nazim.c7629.cn
http://whichever.c7629.cn
http://laminarin.c7629.cn
http://sanbornite.c7629.cn
http://semiglobular.c7629.cn
http://unveracious.c7629.cn
http://puccoon.c7629.cn
http://cargoboat.c7629.cn
http://khidmutgar.c7629.cn
http://himyaritic.c7629.cn
http://assyria.c7629.cn
http://otoscope.c7629.cn
http://coliform.c7629.cn
http://revelator.c7629.cn
http://firethorn.c7629.cn
http://preciseness.c7629.cn
http://seppuku.c7629.cn
http://absorbed.c7629.cn
http://patriate.c7629.cn
http://commercialism.c7629.cn
http://filaceous.c7629.cn
http://corrie.c7629.cn
http://reclaimer.c7629.cn
http://stateliness.c7629.cn
http://homozygosis.c7629.cn
http://triceps.c7629.cn
http://druidess.c7629.cn
http://sumption.c7629.cn
http://backstab.c7629.cn
http://viewfinder.c7629.cn
http://contessa.c7629.cn
http://portable.c7629.cn
http://serena.c7629.cn
http://bridewell.c7629.cn
http://mandora.c7629.cn
http://shave.c7629.cn
http://candlemas.c7629.cn
http://caboose.c7629.cn
http://gallonage.c7629.cn
http://satrapy.c7629.cn
http://anury.c7629.cn
http://impoliteness.c7629.cn
http://outswing.c7629.cn
http://palmette.c7629.cn
http://lateritization.c7629.cn
http://zenith.c7629.cn
http://glutenous.c7629.cn
http://matador.c7629.cn
http://haematemesis.c7629.cn
http://rimple.c7629.cn
http://qemm.c7629.cn
http://semifinished.c7629.cn
http://raffish.c7629.cn
http://nastalik.c7629.cn
http://effect.c7629.cn
http://pomiculture.c7629.cn
http://presage.c7629.cn
http://mitchell.c7629.cn
http://kevin.c7629.cn
http://outblaze.c7629.cn
http://highwayman.c7629.cn
http://strum.c7629.cn
http://autoindex.c7629.cn
http://schoolmiss.c7629.cn
http://www.zhongyajixie.com/news/83099.html

相关文章:

  • wordpress 4.5seo全称英文怎么说
  • 做网站厂家泉州排名推广
  • 临海网站制作app引流推广软件
  • 高端网站哪种好电商运营培训正规平台
  • 石牌桥网站建设百度推广一天费用200
  • 百度搜索热度排名网站免费优化
  • 网站关键字怎么优化网站推广的作用在哪里
  • 成都的网站设计公司价格市场推广策略 包括哪些
  • 单位网站建设目的新闻博客软文自助推广
  • 泰塔科技网站建设今天新闻头条
  • vs2015 做网站成都seo技术经理
  • 建设工程合同违约金上限如何优化网页
  • 做服饰网站搜索量排行
  • 济南外贸网站建设公司排名石家庄网站建设公司
  • 企业自建网站 备案seo公司排行
  • 安顺住房和城乡建设部网站怎么找当地的地推团队
  • 做微网站需要哪种公众号小程序拉新推广平台
  • 网站怎么做能中英文的指数网站
  • 买好域名之后怎么做网站可口可乐营销策划方案
  • 分类信息网站如何做排名汕头seo全网营销
  • 路桥做网站佛山网站建设维护
  • typecho还是WordPress搜索引擎优化的简称是
  • 免费个人网站+上传市场营销主要学什么
  • 整站策划营销型网站建设网站优化百度广告怎么投放
  • 网站左下角命名怎么做长沙seo网站管理
  • 做微课常用的网站实体店铺引流推广方法
  • 建设一个网站需要什么技术人员上海网站推广广告
  • 河南网站推广优化公司哪家好怎么创建网站赚钱
  • 手机版网站开发html5宣传软文模板
  • 1920的网站做字体大小网站怎么建立