最近有很多朋友和同学跟我谈起 Lachesis Shield 设计上的一些问题。我想我需要总结一下我的设计策略,虽然这是个看起来简单得不能再简单的工具。
我面临的选择:
1 界面位置
显然,有很多位置可以摆放这么个不起眼的东西,比如说:
a 就放在桌面上做成悬浮窗口,用 layered window 做成半透明。
b systray。
c deskband。
2 权限调整
a 只有两种状态,受限和不受限。并且对被控制进程来说一旦创建就不可更改。
b 用驱动定义多种权限并可以自由转换。
3 界面
a 鼠标单击切换。
b 针对软件复杂的功能设计复杂的界面和配置系统。
ok,以上就是我可以做出的选择,当然一切技术上的问题都不是问题。以下就是我的选择和理由:
首先这个工具最好是随系统启动,这个不影响选择。
其次,为了hook api,我可以用注册表,常规钩子注入dll,remotethread等等,我甚至可以用驱动。
我注意到一个事实:大部分的程序其实都是用户操作运行起来的,而这第一道门就是explorer。那么其实我只要把explorer的口封上,对于我来说目的基本就达到了。
于是,deskband成了不二之选。为什么呢?
作为进程内COM组件,deskband会被explorer自动加载,自然就完成了随系统的启动(其实是登录了)而启动,而且explorer被关闭还会自动重新启动,免除了额外设计恢复机制的麻烦。
其次,既然是进程内COM,自然就免除了注入代码这个手续。注意一个事实:很多杀毒软件对CreateRemoteThread这个调用是敏感的。
最后,deskband毫无疑问就是用来做界面的。
剩下的问题就比较简单,我没有必要也不可能选择驱动,这样不仅仅是带来额外的复杂性的问题。用驱动来修改windows内核的安全子系统的内部数据结构我不是不会,问题是这已经属于rootkit,绝对会被杀软封杀。其次这属于在windows内核的安全子系统插入第三方代码并且加入了令牌权限调整功能接口,这本身就是一个安全悖论。最后,这种奇技淫巧在windows x64上行不通,除非我再强迫系统关闭PatchGuard,这又是另外一个安全悖论了,我不能为了自己这么一个工具在系统上开两个大大的口子。
至于复杂的配置,我考虑过黑白名单,但是短期内我并不想加上,如果这个黑白名单被篡改就得不偿失了。
当然具体实现上还有一些其它的问题,比如必须用themeapi自绘,没有采用微软的detrous等等。目前被gdi+和safer api限定也很不爽。还有就是deskband这个接口貌似只有微软用得很正常(WMP),第三方包括msdn的例子运行起来都有点小问题。

转载于:https://www.cnblogs.com/skogkatt/archive/2008/03/20/4163685.html

Lachesis Shield 设计上的抉择相关推荐

  1. android flux 与mvp,使用 MVP 时在设计上的考量

    在"FluxJava: 给 Java 使用的 Flux 库"这篇文章中提到,设计中使用 MVP 最大的问题,是会让不同的画面形成一组.一组的 Class,但各组之间是独立的.MVP ...

  2. 推理芯片的性能建立在优化的存储子系统设计上

    推理芯片的性能建立在优化的存储子系统设计上 Inference chip performance builds on optimized memory subsystem design 好的推断芯片可 ...

  3. 固态硬盘驱动器在设计上有个安全漏洞 易导致数据损毁

    近年来,出于对提升系统运行速度的渴求,传统机械硬盘(HDD)的市场正被更高速的固态硬盘驱动器(SSD)所蚕食.尽管很多用户仍在采用 SSD 系统盘 + HDD 仓库盘的组合,但后者被淘汰也只是时间问题 ...

  4. R语言ggplot2可视化指定保存到pdf的图像的具体尺寸、保证缩放的一致性:使得绘图元素(文本、点大小等)在设计上都具有相同的绝对大小、设置全局数据点大小、主题格式、设置图像保存的具体尺寸

    R语言ggplot2可视化指定保存到pdf的图像的具体尺寸.保证缩放的一致性:使得绘图元素(文本.点大小等)在设计上都具有相同的绝对大小.设置全局数据点大小.主题格式.设置图像保存的具体尺寸 目录

  5. let/var——事实上var的设计可以看成JavaScript语言设计上的错误. 但是这种错误多半不能修复和移除, 以为需要向后兼容.||将let看成更完美的var

    事实上var的设计可以看成JavaScript语言设计上的错误. 但是这种错误多半不能修复和移除, 以为需要向后兼容. 大概十年前, Brendan Eich就决定修复这个问题, 于是他添加了一个新的 ...

  6. 设计上如何避免EMC问题

    最近经常被问到EMC相关的问题,比如怎么设计才能避免EMC的问题,我想经常关注高速先生的同鞋们有机会肯定也会问到这个问题.首先这是一个系统 性的问题,不是那么好回答,尤其是对于聚焦在高速信号这个领域而 ...

  7. 一些设计上的基本常识(转载)

    原文地址:http://code.alibabatech.com/blog/experience_886/software_design_general_knowledge.html 最近给团队新人讲 ...

  8. 系统架构设计上需要注意的

    系统架构设计上需要注意的 快速阅读 如何保证系统的防重放和不可抵赖性. socket 长连接和短连接,tuxedo和webloigc的平台架构以及这两者之间如何进行通讯.nh结尾的文献资料用什么打开. ...

  9. GaussDB(for MySQL)如何在存储架构设计上做到高可靠、高可用

    摘要: GaussDB(for MySQL)通过ND算子下推解决存储节点和计算节点之间的传输速度,减少网络开销这个难题. 数据库作为高效稳定处理海量数据交易/分析的坚强数据底座,底层架构设计的重要性不 ...

最新文章

  1. RHEL/CentOS通用性能优化、安全配置参考
  2. 怎么用vc采集ni卡数据_SystemLink自学笔记(6):SystemLink架构和数据服务
  3. 【面向工业界】京东NLP落地应用实战
  4. 《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别
  5. Angular 服务器端渲染的一个错误消息 - No provider for InjectionToken REQUEST
  6. 各种各种的公共工具类
  7. 网络知识 | 《图解TCP/IP》读书笔记(下)
  8. NUMA - Non Uniform Memory Architecture 非统一内存架构
  9. Python图片文字识别——Windows下Tesseract-OCR的安装与使用
  10. 怎么使用水经注万能地图下载器制作百度个性化地图-人造区域篇
  11. 苹果MacBook iMac免光驱安装win7方法
  12. vue 调用移动录像_vue H5项目调用手机摄像头录像并上传
  13. 张一鸣卸任字节跳动CEO
  14. C语言数据结构与算法-------查找(二)哈希法
  15. 计算机毕业设计php+vue基于微信小程序的房屋租赁小程序
  16. Charles使用及常用功能介绍
  17. DIV display与visibility
  18. vb.net控件随窗口大小调整
  19. 音视频编解码学习详解
  20. android安卓最新版本,安卓X86最新版本发布,目前已支持大部分安卓程序

热门文章

  1. 如何以学习单片机为契机,逐步成为优秀的工程师
  2. 初识Android应用程序的五大基本组件
  3. 领域驱动设计 pdf_什么是领域驱动设计?
  4. macos安装低版本php,mac下安装多个版本PHP及切换
  5. 牛人主页(主页有很多论文代码)【真的好强大】
  6. (OS X) OpenCV架构x86_64的未定义符号:错误(OpenCV Undefined symbols for architecture x86_64: error)...
  7. 7-n!末尾有几个0
  8. js中如何删除json对象的某一个选项
  9. 49、剑指offer--把字符串转换成整数
  10. Centos7下安装netstat