Easy to Find Hided PID Code

本文提供了一个C++程序示例,该程序能够枚举系统中所有进程,并检查隐藏的进程ID (PID)。通过使用Windows API函数,如EnumProcesses和OpenProcess,程序能够获取并打印每个进程的信息,包括那些试图隐藏其PID的进程。
// Easy to Find Hided PID Code
// Author: Finback Jun.6,2006
// NOTE:this code needn't any driver supported



#include "stdafx.h"
#include <windows.h>
#include "psapi.h"

#pragma comment(lib,"psapi.lib")

int main(int argc, char* argv[])
{



   printf("/nEasy to Find Hided PID Code /n");
   printf("Author: Finback Jun.6,2006 <Finbackcpp@hotmail.com> /n");
   printf("NOTE:this code needn't any driver supported /n");
   printf(" /n");


       DWORD aProcesses[1024], cbNeeded;

   if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
       return 0;
   DWORD cProcesses = cbNeeded / sizeof(DWORD);

   DWORD PidFor;
   for ( PidFor = 0x0c; PidFor < 0xFFFF; PidFor +=4 )
   {
       HANDLE hProcess = OpenProcess(  PROCESS_QUERY_INFORMATION |
           PROCESS_VM_READ,
           FALSE, PidFor );

       if (hProcess)
       {
           BOOL sHide = false;
           unsigned int i;
           char szName[MAX_PATH]="<Unknown>";
           HMODULE hModule;

           for ( i = 1; i <= cProcesses; i++ )
           {
               if (PidFor == aProcesses[i])
               {
                   sHide = true;
                   break;
               }
                   
           }

           if(EnumProcessModules(hProcess,&hModule,sizeof(hModule),&cbNeeded))
               {
                   GetModuleFileNameEx(hProcess,hModule,szName,sizeof(szName));
                   printf("%-5d - %16s  %s/n", PidFor, szName, (sHide) ? "" : "--[Hidden]--");
               }
           else
               {
                   GetProcessImageFileName(hProcess,szName,sizeof(szName));
                   printf("%-5d - %16s  %s/n", PidFor, szName, "--[Zombie]--");
               }

       }
       
       CloseHandle( hProcess );
   }

   return 0;
public void setAppHideState(String packageName, int userId, boolean isHided) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_PACKAGE_NAME, packageName); values.put(COLUMN_USER_ID, userId); values.put(COLUMN_IS_HIDED, isHided ? 1 : 0); // Update or insert database int rowsAffected = db.update(TABLE_APP_HIDE, values, COLUMN_PACKAGE_NAME + "=? AND " + COLUMN_USER_ID + "=?", new String[]{packageName, String.valueOf(userId)}); if (rowsAffected == 0) { db.insert(TABLE_APP_HIDE, null, values); } db.close(); // Search for all packagenames with is_ided=true SQLiteDatabase readDb = this.getReadableDatabase(); Cursor cursor = readDb.query(TABLE_APP_HIDE, new String[]{COLUMN_PACKAGE_NAME, COLUMN_USER_ID}, COLUMN_IS_HIDED + "=?", new String[]{"1"}, null, null, null); Log.d(TAG, "Packages with is_hided = true:"); if (cursor != null) { if (cursor.getCount() == 0) { Log.d(TAG, "No packages are hidden."); } else { while (cursor.moveToNext()) { String pkgName = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_PACKAGE_NAME)); int uId = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_USER_ID)); Log.d(TAG, "Hidden Package: " + pkgName + ", UserId: " + uId); } } cursor.close(); } else { Log.d(TAG, "Cursor is null, failed to query hidden packages."); } readDb.close(); // Schedule delayed broadcast mHandler.removeCallbacks(mSendBroadcastRunnable); mHandler.postDelayed(mSendBroadcastRunnable, DELAY_MILLIS); Log.d(TAG, "Updated state: " + packageName + ", userId=" + userId + ", isHided=" + isHided + " (broadcast sent immediately)"); } 帮忙分析一下这段代码有什么缺陷
06-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值