Delphi 枚举所有进程】的更多相关文章

通过进程快照枚举所有进程,关于进程快照,在Delphi5开发人员指南中有说明,当然也可以百度一下用法. 使用进程快照CreateToolhelp32Snapshot,必须uses TlHelp32单元. 从快照中得到的进程ID,可以获得进程的很多信息,这里不多说,网上有很多资料,具体需要什么可以百度查一下. 以这里记录一下,方便以后查找 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graph…
要编写一个类似于 Windows 任务管理器的软件,首先遇到的问题是如何实现枚举所有进程.暂且不考虑进入核心态去查隐藏进程一类的,下面提供几种方法.请注意每种方法的使用局限,比如使用这些 API 所需要的操作系统是什么(尤其是是否能在 Windows Mobile 下使用). 本文参考用户态枚举进程的几种方法,原文对于每一种方法都给出了完整的代码,被我照抄下来.还有一篇:如何用 Win32 APIs 枚举应用程序窗口和进程.基于我现学现卖的本质,对我演绎的部分请抱着批判的眼光来看,另外代码也没有…
添加一个Command1.一个List1,代码: Private Type PROCESS_HANDLE_TABLE_ENTRY_INFO HandleValue As Long HandleCount As Long PointerCount As Long GrantedAccess As Long ObjectTypeIndex As Long HandleAttributes As Long Reserved As Long End Type Private Type PROCESS_H…
在windows系统下如果想要枚举指定进程的窗体,我们可以通过EnumWindows加上自己实现的回调函数进行实现,那么在linux下该如何做呢? 其实也很简单,在linux下,我们可以通过xlib中提供的API进行实现,关于xlib后面会专门写一篇文章讲解. 一.实现思路 从root窗体开始逐层遍历每一个窗体,将这些窗体所属进程与给定进程比较从而进行筛选. 二.实现代码 #include <X11/Xlib.h> #include <X11/Xatom.h> #include &…
本文主要跟大家介绍Delphi中获取其它进程的窗口句柄,在Delphi中获取其它进程的窗口句柄,绝大部分人首先想到的会使用:FindWindow或者用GetWindow来遍历查找,如: handle := FindWindow(nil,PChar('窗口的标题')); 或者: procedure TForm1.Button1Click(Sender: TObject); var hCurrentWindow: HWnd; WndText:String; begin hCurrentWindow…
procedure KillProcess(ExeName: string); const PROCESS_TERMINATE = $0001; //进程的PROCESS_TERMINATE访问权限 var ContinueLoop: Boolean; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin //获取系统所有进程快照 FSnapshotHandle := CreateToolhelp32Snapshot(…
一个常见的编程任务是枚举所有运行的"应用程序".Windows 任务管理器就是一个很好的例子.它用两种方式列出"应用程序".任务管理器的第一个选项卡列出桌面上的所有"应用程序窗口".第二个选项卡列出系统中的所有"进程".本文提供了如何执行这些任务的详细信息. 枚举顶层窗口如果将枚举进程与枚举桌面上的顶层窗口进行比较,那么枚举顶层窗口可能更容易一些.要枚举顶层窗口,请使用 EnumWindows() 函数.不要使用 GetWin…
只知道进程ID,获取主窗口句柄的方法如下: 通过EnumWindows枚举所有窗口 使用GetWindowThreadProcessID,通过窗口句柄获取进程ID 比便获取的进程ID与当前已知的进程ID,判断是否为需要的窗口 代码如下: function GetHwndFromProcess(const hPID: THandle): THandle; type PEnumInfo = ^TEnumInfo; TEnumInfo = record ProcessID: DWORD; HWND:…
枚举类型定义了一系列有序值的集合.枚举变量就是从这个既定的集合中取某个值.集合中的有序值可以称为元素,元素一般从0开始索引(也就是元素的顺序号). 定义一个枚举类型,采用以下的格式: type typeName = (val1, ..., valn) 其中typeName和每一个val都必须是有效的标识符. { type中定义枚举类型} type TSize = (Small = 5, Medium = 10, BeforLarge, Large = Small + Medium); { TSi…
简述 Ring3用户态下查看进程信息的基本方法 代码样例 #include <cstdio> #include <iostream> #include <cstdlib> #include <tchar.h> #include <Windows.h> #include <TlHelp32.h> //Windows.h头文件必须包含在TlHelp32.h之前 using namespace std; int main(void) { L…
type  TProcessCpuUsage = record  private    FLastUsed, FLastTime: Int64;    FCpuCount:Integer;  public    class function Create: TProcessCpuUsage; static;    function Current: Single;  end;   var  ProcessCpuUsage: TProcessCpuUsage = (FLastUsed: 0; FL…
type  TMainWindow = packed record    ProcessID: THandle;    MainWindow: THandle;  end;  PMainWindow =^ TMainWindow; function IsMainWindow(AHandle: THandle): Boolean; begin   Result :=(GetWindow(AHandle, GW_OWNER) = 0) and (IsWindowVisible(AHandle));…
本博客的Delphi代码使用的版本均为DelphiXE10.x 1.1 .枚举进程 通过进程名称获取指定的进程ID,代码很详细,不再赘述 unit Uuitls; interface uses TlHelp32, Winapi.Windows; function GetPidByProName(proname: string): DWORD; implementation function GetPidByProName(proname: string): DWORD; var hwd: THa…
delphi枚举类型长度默认为2个字节(单字),而在C中枚举为4个字节(双字),如果需要跨这两个平台编程,传输结构时会由于数据长度不一造成灾难. 经过查找资料,原来delphi可以通过{$Z+} {$Z-} {$Z1} {$Z4} 等宏设置枚举类型的长度,小至1个字节,大至4个字节. 官方说明如下: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/comp…
使用PSAPI (Process StatusAPI)函数 这是一种Windows NT/2000下的方法.核心是使用EnumProcesses函数.它的原型如下: BOOL EnumProcesses( __out  DWORD *lpidProcess, // 用于保存所有进程的PID的数组 __in   DWORD cb, // 上述数组的大小 __out  DWORD *cbNeeded // PID数组中实际返回的(有效)字节数 ); 当获得系统中所有进程的PID后,我们就可以使用Op…
{*******************************************************} { } { Delphi公用函数单元 } { } { 版权所有 (C) 2008 勇者工作室 } { } {*******************************************************} unit UMyPubFuncFroc; interface uses ComCtrls, Forms, Windows, Classes, SysUtils,…
{*******************************************************} { } { Delphi公用函数单元 } { } { 版权所有 (C) 2008 } { } {*******************************************************} unit YzDelphiFunc; interface uses ComCtrls, Forms, Windows, Classes, SysUtils, ComObj,…
 多线程程序设计 我们知道,win95或winNT都是“多线程”的操作系统,在DELPHI .中,我们可以充分利用这一特性,编写出“多线程”的应用程序. 对以往在DOS或16位windows下写程序的人来说,“多线程”仍然是陌生的,但如同以前我们从DOS下的单任务过渡到windows3.下的多任务,如今我们又必须过渡到“多线程”领域,毕竟计算机时代是在不断发展的.不过,幸运的是,在DELPHI2.下进行多线程程序设计并不需要我们去学习庞大的WIN32API函数,我们可以利用DELPHI下标准的多…
从WINDOWS VISITA开始以后,windows已经开始支持随机基址的关系,也就是说以前我们的进程基址都是从0x40000开始的,如果一个变量在我们第一次运行的时候地址为0x50000,那么以后也都会在这个位置 而VS2008后开始提供随机基址的功能,在WINDOWS VISITA后的版本也都支持这个功能,这样进程的基址将不会再固定从一个地方开始,变量的地址也会随着基址的不同而不同,加大了我们对一个进程修改的难度,我们每次修改一个变量不能再将变量写死,而是要根据基址+数据偏移量来算出数据的…
1.finish()方法 finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:调用finish()方法会执行Activity.onDestroy()方法,结束Activity生命周期 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果. 2. Dalvik V…
前阵子读到一篇关于<HOOK API入门之Hook自己程序的MessageBoxW>的博客,博客地址:http://blog.csdn.net/friendan/article/details/12222651,感觉写的很好但这篇博客主要讲的是本进程(本程序)的API HOOK那么如何将DLL注入到远程进程并进行API HOOK呢,好了废话不多说直接动手实践. 创建DLL动态库(我是在vs2008上实现的) 新建项目 创建一个名为MyDLL(名字随便)win32项目(我创建的是win32  D…
很多浏览器有这种功能,实现原理都是一样.发声源基本都来自Flash,比如Flash游戏啦,视频播放器啦等等 而Flash的发声都是通过winmm.dll::waveOutWrite函数来完成,所以,我们只要能“接管”这个函数就行了 下面的代码是以前写的一个模块,针对Flash的静音,代码写的比较粗糙 ^_^ 注意,下面的代码仅仅针对Flash模块进行IAT Hook XP测试通过 unit FlashMute; interface uses Windows, SysUtils, Classes,…
如果不改编译选项Delphi的Record默认也是4字节对齐的. 可以用编译开关指定 {$A4+}就是4字节对齐.同理{$A2+}.{$A1+}等.{$A1+}等同于Packed Record 主要容易被忽略的是Delphi的枚举. C,C++的枚举默认等同于整数.也就是4字节的. Delphi枚举默认是最小对齐.也就是除非指定枚举值,如果枚举小于255个就一个字节.大于255小于65535就两个字节等. 可以用{$Z4+}这个编译开关把枚举强制按4字节对齐. 在结构体中,成员数据对齐满足以下规…
1.         进程是执行文件的运行时形态.包括两部分:内核数据(对应内核对象).地址空间(包括执行文件代码和栈堆等动态内存). 2.         把VC的“系统-子系统”值删除掉,即不指定控制台或GUI,则编译器会根据代码中存在main或者WinMain来自动选择子系统(这里不谈Unicode了),很方便. 3.         启动程序:根据子系统执行mainCRTStartup/WinMainCRTStartup,在该函数中干几件事(1)准备命令行和环境变量(用于char *ar…
[toc] 一丶简介 整理一下windows内核中.常用的代码.这里只整理下进程的相关代码. 二丶 windows内核之遍历进程 内核中记录进程的结构体是EPROCESS结构.所以只需要遍历这个结构即可.标准方法可以使用ZwQuerySystemInformation函数.使用SystemProcessInformation功能号. 另外也有很多种枚举进程的方法比如找到EPROCESS结构进行枚举的.(CPU结构体 KPCR)等等.不过兼容性都是不太好.另一种方法是枚举句柄表 PspCidTab…
如果将shellcode注入到具有特定权限的进程中,我们就可以获得与该进程相同的权限,此方法可以用于提权与降权操作,注入有多种方式,最简单的是直接将metasploit生成的有效载荷直接注入到目标进程中,并通过创建远程线程启动,还可以自己实现一个注入器,这里我们自己来实现一个提权器,可提权也可降权. PE工具下载与使用: https://www.cnblogs.com/LyShark/p/12960816.html 枚举系统进程,与进程权限令牌等. #include <stdio.h> #in…
在内核里操作进程 在内核里操作进程,相信是很多对 WINDOWS 内核编程感兴趣的朋友第一个学习的知识点.但在这里,我要让大家失望了,在内核里操作进程没什么特别的,就标准方法而言,还是调用那几个和进程相关的 NATIVE API 而已(当然了,本文所说的进程操作,还包括对线程和 DLL 模块的操作).本文包括 10 个部分:分别是:枚举进程.暂停进程.恢复进程.结束进程.枚举线程.暂停线程.恢复线程.结束线程.枚举 DLL 模块.卸载 DLL 模块. 1.枚举进程.进程就是活动起来的程序.每一个…
多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码后,我们可以很容易的将内存镜像导出,从而更好的对样本进行分析,当然某些加密壳可能无效但绝大多数情况下是可以被转存的. 在上一篇文章<驱动开发:内核R3与R0内存映射拷贝>介绍了一种方式SafeCopyMemory_R3_to_R0可以将应用层进程的内存空间映射到内核中,要实现内存转储功能我们还是需要使用这个映射函数,只是需要在此…
在上一篇博文中我主要介绍了如何获取以及设置系统的默认打印机,本文将介绍如何对打印机状态进行实时监控,记录下所打印的文档.打印的份数以及打印时间等打印信息. 1.打印机虚脱机技术 在正式介绍如何对打印机状态进行实时监控之前,我们有必要先了解一下打印机虚脱机技术. 独占设备是指在一个程序(作业.用户)的整个运行期间独占设备,直到该程序(作业.用户)完成.系统的独占设备是有限的(比如,一台计算机只能够连接一台打印机),往往不能够满足多进程的要求,会引起大量进程由于等待某些独占设备而阻塞.另一方面,申请…
1.相关声明函数,SendMessage可定义两种格式. [DllImport("User32.DLL", CharSet = CharSet.Auto)]public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); [DllImport("User32.dll")]private sta…