windows ALPC简单研究

本文简要探讨了ALPC(Advanced/Asynchronous Local Procedure Call),它是微软替代LPC的本地RPC技术。ALPC通过Port连接进行C/S通信,广泛应用于Windows系统。内容包括ALPC的基本架构、使用流程、数据结构以及调试工具,强调了其在进程间通信中的重要性。
摘要由CSDN通过智能技术生成

0x00

本文是对ALPC的简单研究,由于时间有限,还有很多细节没有搞清楚,还有很多疏漏。希望能起到抛砖引玉的作用,能找到高手讨论学习。
ALPC(Advanced/Asynchronous Local Procedure Call),是微软发展出来替代LPC,用于本机RPC的一种C/S模型技术。但是对用户来说,能看到只有RPC概念,很少能看到ALPC。
我们看一个典型的ALPC同步调用堆栈:
在这里插入图片描述
从名字上就能看出RPCRT4.dll是rpc的runtime库,我个人感觉在C端如果要使用RPC的话主要是和这个库打交道。
从堆栈的函数调用可以看出来,RPC先进入LRPC再进入ALPC。Windows中将RPC分为LRPC(本机远程过程调用)与多机RPC。
实质上分为两种RPC其实也是很好理解,对本机来说,IPC的通讯方法多样,整体环境简单;而不同终端的IPC主要使用的tcp/ip协议,网络环境的异常处理比较复杂。
LRPC是通过ALPC实现的。
在现代的Windows环境中,ALPC的使用的频繁程度可能远远超过大部分人的想象。可能很熟悉的API内部都是通过ALPC委托为其他的应用程序(主要是各类svchost)实现的。按照 Alex Ionescu在 syscan2014上的发言,即使最简单的windows程序都会有ALPC连接。
可以打开 procexp.exe查看每个进程的ALPC Port的名字。

0x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值