السَلام عَليكم ,
اليَوم قمت بكتابة فنكشن بسيط لمعرفة هل التطبيق قيد التنقيح أو تحت نوع من أنواع ال Debuggers ,
حيث يقوم بجلب ال ParentProcess و مقارنته مع ال explorer.exe , لان هذا الأخير هو المسؤول عن تشغيل التطبيقات و النوافذ أن كان تعريفي صحيحا ,
عند عدم نجاح المقارنة يعني أن التطبيق تحت التنقيح ,
كما أن دالة IsDebuggerPresent كما رأيت لا تشتغل مع مثل هاته المنقحات .
فيديو بَسيط ->
الفنكشن ->
يجب تضمين المكتبات :
#include <windows.h>
و
#include <TlHelp32.h>
أنتهى .
اليَوم قمت بكتابة فنكشن بسيط لمعرفة هل التطبيق قيد التنقيح أو تحت نوع من أنواع ال Debuggers ,
حيث يقوم بجلب ال ParentProcess و مقارنته مع ال explorer.exe , لان هذا الأخير هو المسؤول عن تشغيل التطبيقات و النوافذ أن كان تعريفي صحيحا ,
عند عدم نجاح المقارنة يعني أن التطبيق تحت التنقيح ,
كما أن دالة IsDebuggerPresent كما رأيت لا تشتغل مع مثل هاته المنقحات .
فيديو بَسيط ->
الفنكشن ->
C++:
int DSIB(){ char Sys[MAX_PATH]; GetSystemDirectoryA(Sys, MAX_PATH); string Syss = Sys; Syss.replace(11, 8, "explorer.exe"); char Path[MAX_PATH]; PROCESSENTRY32 PO; PO.dwSize = sizeof(PO); HANDLE Cr = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if (Process32First(Cr,&PO)){ do{ if (PO.th32ProcessID == GetCurrentProcessId()){ HANDLE OP = OpenProcess(PROCESS_ALL_ACCESS,FALSE,PO.th32ParentProcessID); GetModuleFileNameEx(OP, NULL, Path, MAX_PATH); if (strcmp(Syss.c_str(),Path) == 0){ return 0; } else { return 1; } } } while (Process32Next(Cr, &PO)); } return 2; }
#include <windows.h>
و
#include <TlHelp32.h>
أنتهى .