有关系统的常用API(摘)

某病毒使用的API CreateDesktop 首先是这样的。。之前分析某个病毒的时候,一直搞不懂这个API CreateDesktop。。后来自己实践了会儿,大致就是可以把创建的进程运行在此桌面中,达到无法直接在本机桌面显示的效果。。代码如下:int _tmain(int argc, _TCHAR* argv[]) { if (argc < 2) { printf("Usage: runhidden \n"); return - 阅读详情
   1.窗口信息
    MS为我们提供了打开特定桌面和枚举桌面窗口的函数。
    hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);
    //打开我们默认的Default桌面;
    EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc,0);
    //枚举打开桌面上的所有窗口,由回调函数实现。
    BOOL __stdcall EnumWindowProc(HWND, LPARAM);
    //在回调函数中,我们可以获得窗口的标题和相关进程,线程信息;
    GetWindowText(hWnd,szWindowText,dwMaxCount);
    GetWindowThreadProcessId(hWnd,&dwPID);

    2.设备驱动器信息(服务和设备驱动器差不多,在此不做重复)
    设备驱动信息有服务控制管理器(SCM)来管理的,我要打开服务控制管理器,并枚举所有
的设备驱动器。
    OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    //以所有权限打开服务控制管理器;
    EnumServicesStatus(schManager,dwDeviceType,dwDeviceState,
    EnumStatus,dwBufSize,&dwBytesNeeded,
   &dwDevicesReturned,&dwResumeHandle))
    //枚举所有设备的当前状态;
    CloseServiceHandle(schManager);
    //记住,在结束访问后要关闭服务句柄;
    OpenService(schManager,szDeviceName,SERVICE_ALL_ACCESS);
    //打开特定的设备驱动器;
    QueryServiceConfig(schDevice,lpDeviceConfig,
     1024*8,&dwBytesNeeded);
    //查询驱动器的服务配置信息;
    QueryServiceStatus(schDevice,&DeviceStatus);
    //查询设备驱动器的当前状态;
    QueryServiceConfig2(schDevice,SERVICE_CONFIG_DESCRIPTION,
    (LPBYTE)lpDeviceDescription,8*1024,&dwBytesNeeded)
    //查询设备的描述信息;
    StartService(schDevice,0,NULL);
    //启动设备;
    ControlService(schDevice,SERVICE_CONTROL_STOP,&DeviceStatus);
    //停止设备;
    DeleteService(schDevice);
    //删除设备;

    3.磁盘信息
    我们希望获得系统所有磁盘的信息,包括软盘,硬盘,光盘等等;
    GetLogicalDriveStrings(dwBufferLength,lpBuffer);
    //获得逻辑设备的信息;
    GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer,
     dwVolumeNameSize,&dwVolumeSerialNumber,
     &dwMaximumComponentLength,&dwFileSystemFlags,
     lpFileSystemNameBuffer,dwFileSystemNameSize);
    //获得磁盘卷信息,包括卷名称和格式类型;
    GetDiskFreeSpaceEx(lpRootPathName,&FreeBytesAvailable,
     &TotalNumberOfBytes,&TotalNumberOfFreeBytes);
    //探测磁盘的空间使用情况;

    4.环境变量
    我们可以从注册表中获得环境块的信息:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlS
et/Control/Session Manager/Environment,当然要使用注册表的函数。
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,RegKey,0,KEY_QUERY_VALUE,&hKey);
    //打开注册表的键;
    RegEnumValue(hKey,dwIndex,EnvironVariable,
    &dwVariableLength,NULL,NULL,NULL,NULL);
    //查询我们需要的信息值;
    GetEnvironmentVariable(EnvironVariable,EnvironString,1024);
    //获得环境变量的字符串信息;
    
    5.事件记录信息
    OpenEventLog(NULL,szLog);
    //打开时间日志记录;
    GetOldestEventLogRecord(hEvent,&dwThisRecord);
    //获得最新的日志信息,以便继续查找;
    ReadEventLog(hEvent,EVENTLOG_FORWARDS_READ │ EVENTLOG_SEQUENTIAL_READ,
   0,pEventLogRecord,1024*32,&dwRead,&dwNeeded)
    //读去日志信息;
    LookupAccountSid(NULL,pSid,szName,&dwName,szDomain,&dwDomain,&SNU);
    //获取账户的SID,以便获得账户的用户名称;
    GetNumberOfEventLogRecords(hEvent,&dwTotal);
    //获得事件日志的总数;
    CloseEventLog(hEvent);
    //不要忘记关闭事件句柄;
    
    6.网络共享
    我们使用第二等级的网络共享搜索;
    NetShareEnum(NULL,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&entriesread,&t
otalentries,&resume);
    //列举所有的共享目录及相关信息;
    NetApiBufferFree(pBuf);
    //释放缓冲区;
    NetShareDel(NULL,(char *)lpShareNameW,0);
    //删除网络共享目录;
    
    7.网络适配器信息
    我们要探测NIC的信息和网络流量;
    GetAdaptersInfo(&AdapterInfo,&OutBufLen);
    //获取适配器信息;
    
    8.系统性能
    获取系统的存储器使用情况;
    GetPerformanceInfo(&PerfInfo,sizeof(PERFORMACE_INFORMATION))
    //获取系统性能信息;

    9.进程/线程/模块信息
    在此我们使用工具帮助函数(ToolHelp32)和系统
    OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY │ TOKEN_ADJUST_PRIVILEGES,&
hToken);
    //打开进程的令牌,提升权限;
    AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),
NULL,NULL);
    //将进程的权限提升到支持调试(Debug);
    CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    //创建进程的快照;
    Process32First(hProcessSnap,&ProcessEntry32);
    Process32First(hProcessSnap,&ProcessEntry32);
    //枚举所有进程;
    OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,ProcessEntry32.th32ProcessID);
    //打开特定进程,以查询进程相关信息;
    GetProcessTimes(hProcess,&CreateTime,&ExitTime,&KernelTime,&UserTime);
    //获取进程的时间信息; 
    GetProcessMemoryInfo(hProcess,&PMCounter,sizeof(PMCounter));
    //获取进程的存储区信息;
    GetPriorityClass(hProcess);
    //获取进程的优先权;
    GetProcessIoCounters(hProcess,&IoCounters);
    //获取进程的IO使用情况;
    CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID);
    //创建模块快照;
    Module32First(hModuleSnap, &ModuleEntry32);
    Module32Next(hModuleSnap, &ModuleEntry32);
    //枚举进程模块信息;
    CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
    //创建线程快照;
    Thread32First(hThreadSnap, &ThreadEntry32);
    Thread32Next(hThreadSnap, &ThreadEntry32);
    //枚举线程信息;
    OpenThread(THREAD_ALL_ACCESS,FALSE,ThreadEntry32.th32ThreadID);
    //打开线程,须自己获得此函数地址;
    TerminateProcess(hProcess,0);
    //终止进程;
    SuspendThread(hThread);
    //悬挂线程;
    ResumeThread(hThread);
    //激活线程;

    10.关机
    AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),
NULL,NULL);
    //调整进程令牌,使其支持关机;
    ExitWindowsEx(EWX_LOGOFF,0);
    //注销系统;
    LockWorkStation();
    //锁定系统;
    InitiateSystemShutdown(NULL,szMessage,dwTimeout,FALSE,bSig);
    //支持到记时和消息显示的关机/重启;
    SetSystemPowerState(bSig,FALSE);
    //系统休眠/冬眠;

    11.用户信息
    NetUserEnum(NULL,dwLevel,FILTER_NORMAL_ACCOUNT,(LPBYTE*)&pBuf,
                dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandle);
    //枚举系统用户信息;
    NetUserDel(NULL,lpUserNameW); 
    //删除指定用户;
  
    12.系统版本信息
    GetVersionEx((LPOSVERSIONINFO)&osviex);
    //获取操作系统的版本信息;
    我们也可以通过注册表(HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/Current
Version)获取相关信息:
    GetTickCount();
    //获取开机时间;
    GetComputerName(szInfo,&dwInfo);
    //获取计算机名称;
    GetUserName(szInfo,&dwInfo);
    //获取计算机用户名;
    GetWindowsDirectory(szInfo,MAX_PATH+1);
    //获取Windows目录;
    GetSystemDirectory(szInfo,MAX_PATH+1);
    //获取系统目录;
FFmpeg —— FFmpeg常用API函数介绍 目录 1.常用API 1.1 通用API 1.1.1 av_register_all()——弃用 1.1.2 内存的分配和释放(av_malloc()、av_free()等) 1.1.3 常见结构体的初始化和销毁(AVFormatContext、AVFrame) 1.1.4 avio_open2() 1.1.5 avcodec_find_encod... 阅读详情

相关推荐

Unity3D常用API

Unity3D常用API总结一. MonoBehaviour类及查询API MonoBehaviour是每个脚本的基类. MonoBehaviour常用方法及调用顺序 //最开始调用,做一些初始化工作。建议少用,此刻物体可能还没有实例化出来,会影响程序执行顺序。 void Awake(){} // 不是很紧急的初始化,一般放在Start里面来做。仅在Update函数第一次被

紫龙酱的博客 9133

(自用的)windows 任务管理器 API 调用

1.窗口信息     MS为我们提供了打开特定桌面和枚举桌面窗口的函数。     hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);     //打开我们默认的Default桌面;     EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc,0);     //枚举打开桌

hugSweat的博客 2840

Unity中常用的API及其详解

Unity是一个广泛使用的游戏开发引擎,它提供了大量的API(Application Programming Interface,应用程序编程接口)来帮助开发者创建游戏和交互式内容。Transform是Unity中每个游戏对象的核心组件,它包含了对象的位置(Position)、旋转(Rotation)和缩放(Scale)信息。这些只是Unity中常用API的一部分,实际上Unity提供了大量的API和功能来支持游戏开发的各种需求。

Umbella的博客 1861

信息发布平台系统H5开发

H5信息平台开发需采用Vue/React前端框架配合Node/Java后端,实现多端适配。核心功能包括JWT鉴权、OSS图片存储和RESTful API交互,通过懒加载、SSR和CDN优化性能。采用Flex布局和rem单位确保响应式设计,并需进行真机测试和HTTPS部署。开发中需注意GDPR合规与数据安全。

土土哥araolin的博客 235

HBase学习之路——HBase 常用API汇总

前言 今天刚刚过完HBase入门阶段,本来应该周内搞完的,但中途自己的电脑配置太低了以至于虚拟机开个IDEA都卡到爆...好在室友的电脑可用,比预期慢了三天左右完成入门,但学的还算扎实,现就一些常用的程序搞个总结以供以后参考使用。 HBase数据库常用代码与HBase API 一、IDEA连接HBase数据库 1. project配置:IDEA创建mavenproject,...

qq_38586378的博客 4360

常用API,记住这些就可以搞定一般的windows程序了

常用API,记住这些就可以搞定一般的windows程序了,WORD版的资料哦

【java中常用的API】

java中有很多常用的API,它们提供了便捷的使用方法和工具类,让我们来看一看java中常用的API吧。 1.math类: 它包含基本的数字运算方法,如对数、指数、平方根和三角函数等,一般数据类型为double(也有int型) 但是它没有构造方法,有static进行修饰(如果类的成员都是静态的则通过类名就可以直接调用。) math类中的常用方法: math类的常用方法 方法名 说明 public static int abs(int a) 返回参数的绝对值 public st

akisi的博客 7953

SAP FIORI静态磁贴从零到一:配置实战与权限打通

本文详细介绍了SAP FIORI静态磁贴的配置流程与权限管理,从准备工作到后台配置、目标映射、前台组织及权限分配,提供了实战技巧与常见问题解决方案。重点解析了静态磁贴的创建、目标映射配置及权限打通等关键步骤,帮助用户快速掌握FIORI静态磁贴的配置方法。

weixin_29266647的博客 248

十一、常用 API

本文主要讲解了 API 介绍和文档、包、String 和 ArrayLIst。其中还有几个案例大家可以自己尝试动手操作一下。

fengguu的博客 820

死区补偿---学习笔记

最近调试中发现,死区补偿对电流谐波和电流带宽影响挺大,于是对死区补偿产生浓厚兴趣,找来几篇文章粗读并做一下笔记。 传统做法 无非就是根据电流方向补偿,假如svpwm计算出的A相理论导通实践为T1,死区时间是Td,则实际导通时间T = T1-Td(when ia >0 ),于是在svpwm计算出的导通时间T1的基础上加上Td。这样经过PWM模块后,实际的导通时间即为T1. 但存在两个难点(个人总结): 1,受电流检测精度影响,尤其是在过零点检测困难。 2,真实的二极管导通需要一定电压,并非..

圆桌骑士的博客 2万+

Outlook日历同步全攻略:Win10+安卓+iOS三端无缝衔接(附常见问题解决)

本文提供了一份详尽的Outlook日历同步指南,帮助用户在Windows 10、安卓和iOS三端实现无缝衔接。文章深入解析了Exchange ActiveSync等核心同步原理,并给出了从账户创建到各设备(特别是华为手机)的具体配置步骤、进阶管理技巧以及针对同步失败、事件重复等常见问题的实战解决方案,旨在彻底解决跨平台日程管理的痛点。

l3m4n的博客 551

【成长纪实】ArkTS 常用 API 总结

ArkTS API├─ 基础层:UI 组件(Column, Text, Button...)├─ 能力层:系统服务(网络、存储、文件...)├─ 框架层:路由、状态管理、生命周期└─ 工具层:工具类、日志、定时器。

YingHuaBuRuTa的博客 1594

【目标跟踪】ECO算法论文阅读:ECO: Efficient Convolution Operators for Tracking

这里所指的训练集是指保存了每一帧的跟踪结果的训练集,也就是说,每一次进行model update的时候,要用在这一帧之前所有跟踪到的样本。那么随着视频越来越长,这个训练集就会越来越大。因为当目标被遮挡或者丢失的时候,比较新的这些样本本身就是错的,那么模型很容易有model drift,就是被背景或者错误的目标污染,导致跟踪结果出错。如下图所示,Baseline是传统的训练集,每更新一帧就加一个进来,那么连续的数帧后训练集里面的样本都是高度相似的,即容易遗忘前面的样本,且容易对最近的若干帧样本过拟合。

qq_43799400的博客 2610

HBase Java常用API

HBase Java常用API 常用API hbase类 功能 org.apache.hadoop.hbase.HBaseConfiguration HBase配置信息。默认的构造方法会尝试从hbase-default.xml和hbase-site.xml中读取配置。 org.apache.hadoop.hbase.client.HBaseAdmin 提供了一个接口来管理HBa...

池边的树的博客 315

ECC椭圆曲线加解密原理详解(配图)

椭圆曲线加解密原理详解 本文主要参照:ECC椭圆曲线详解(有具体实例)[1] 前言: 椭圆曲线(ECC)加密原理跟RSA加解密原理比起来,可真是晦涩难懂。拜读了大神Kalafinaian文章“ECC椭圆曲线详解(有具体实例)”,终于看到了参透的曙光。 由于原文中有微小的瑕疵,也为了便于阅读起来更加流畅,我重新整理了一下这篇文章。 为什么使用椭圆曲线加密算法? RSA的解决分解整数问题需要亚指数...

Mark的博客 7万+

VTK API 详解(115):vtkScalarBarActor - 显示颜色条

显示用于颜色映射的标量值范围。自动从vtkMapper中提取。可设置颜色条的位置、大小、字体、标签格式等。支持横向或纵向显示颜色条。是进行科学数据伪彩色可视化时非常重要的辅助工具,它能让用户直观地理解不同颜色代表的数值大小。通过灵活设置颜色表、标题、标签数量等,可以适配多种可视化需求。

yumeiguo的博客 488

Java中API介绍及常用API的总结

1.什么是API? 可以理解为Java自己提供的标准类库,开发人员可直接使用其方法,而不用进行源码实现。如常用的打印方法:System.out.println();,这是Java自己提供的东西。 官方解释:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访...

qq_41986648的博客 6577

Sigrity SPEED2000 General SI Simulation模式如何进行信号仿真分析操作指导-DDR

本例是几个简单的板载DDR颗粒的结构,本例中使用General SI Simulation模式仿真DDR信号,结构拓扑如下,Addcmd,clk,cke都是T拓扑。Sigrity SPEED2000 General SI Simulation模式可以对信号进行仿真分析,仿真将电源视为理想电源,以下图为例进行说明。DQS的接收端模型设置为DQS_34_ODT60_1333。模式如何进行信号仿真分析操作指导-DDR。附带驱动和接收端的IBIS模型。

weixin_54787054的博客 511

ROS入门之通信机制及常用API

ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在。ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等。基于发布/订阅的话题通信基于客户端/服务器的服务通信基于RPC的参数服务器,每个通信方式都有自己的特点。这里主要记录了通信架构的基础通信方式和相关概念、各种通信常用API以及其他常用API。在ROS通信协议中,数据载体是通信中的核心组成部分。ROS通过std_msgs库封装了一些原生的数据类型,如等。然而,这些数据类型一般只包含一个data字段,结构相对简单。

风间琉璃的博客 2124

AI 视觉宠物喂食器:智能识别 + 精准投喂,打造宠物喂养新体验

AI 视觉宠物喂食器将边缘 AI 计算与传统硬件结合,既解决了传统喂食器的核心痛点,又兼顾了 DIY 的易用性和扩展性。无论是宠物主人 DIY 使用,还是小型创客团队产品化,该方案都具备较高的实用价值和落地性,为宠物智能化喂养提供了轻量化的实现路径。

weixin_42300449的博客 416

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

GPIO子系统下的API函数

GPIO子系统下的API函数1、GPIO子系统下的API函数1.1、gpio_request 函数1.2、 gpio_free 函数1.3、 gpio_direction_input 函数1.4、 gpio_direction_output 函数1.5、 gpio_get_value 函数1.6、 gpio_set_value 函数 1、GPIO子系统下的API函数 对于驱动开发人员,设置好设备树以后就可以使用 gpio 子系统提供的 API 函数来操作指定的 GPIO, gpio 子系统向驱动开发人员屏蔽

一只青木呀 6473

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java常用API总结

包括基本数据类型的包装类、String类、Object类等。:包括List、Set、Map等。常用的有ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等。:包括字节流和字符流的API,常用的有InputStream、OutputStream、Reader、Writer等。:包括Socket和ServerSocket等。:包括多线程编程的API,如Thread、Runnable、Executor、Semaphore等。

岛森年的博客 1576

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Unity】常用API和功能

前言 持续更新中.. 目标阅读者:Unity新手项目程序员 简单的前置:编程习惯 Unity常用API 按键Input 旧版Input void Update() { if (Input.GetKey("up")) { print("up arrow key is held"); } if (Input.GetKeyDown("down")) { pr.

PA_的博客 1万+

对STM32中FATFS文件系统常用API函数的理解

首先,第一次在优快云上面开通博客,这也算是我的第一篇博文吧,写的不好的地方还请大家不吝赐教,笔者现大二在校学生,之所以会选择在这里使用博客,是在一位嵌入式大虾的渲染下,和小伙伴一起分享学习的话,我相信可以学的更多。 废话不多说,进入主题。 首先,FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计的,使用标准的C语言编写,具有很强的独立性,可以轻松的移植到8位

Mr.Wang的博客 2万+
下一篇: 人生十二个经典领悟(摘)
FBugFramework
博客等级 码龄23年 25粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值