dll 在进程中怎么区分的
平时一直没想过这个问题,今天在测试输入法注入的时候才发现windows下dll在进程中是以名字区分的,即使是完全一模一样的DLL。
具体详情,容我慢禀 :
需求是这样的,只能含有一个a.DLL,这个a.DLL既是空壳输入法a.ime,又是注入器,还是被注入的a.DLL。
1,输入法
一个DLL只要实现微软定义的一些输入法接口,即可被注册为一个输入法,然后通过ImmInstallIME函数即可被安装到系统中。(注:需要改名为a.ime放置到system32目录下)
2,注入器
a.ime 可以在用户按键或者收到WM_INPUTLANGCHANGEREQUEST消息时自动被系统加载到目标进程,此时a.ime可以加载自身(a.dll),这里不知道是不是因为必须有输入框,系统才会加载输入法a.ime,所以这里再加个加载自身(a.dll)。
3,被注入DLL
这部分完成主要功能。
我在实验中发现a.ime与a.dll的共享段不一致,由此猜想两者对系统来说应该是完全不同的DLL,而因为他们的二进制完全相同,就是名字不同,因此猜想dll在进程中靠名字区分。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述