如何检测桌面应用程序是否被修改
How to detect if desktop application has been modified?
如何检测桌面应用程序是否被修改?
应用程序与web服务通信,所以我们可以对桌面进行散列,然后检查校验和是否匹配或诸如此类的事情?或者你有什么建议?
就是不要让应用程序做任何你不允许修改应用程序的人做的事情。那么,应用程序是否被修改就无关紧要了。
你提出的解决方案就像银行试图设计一种不能用来写空头支票的笔,然后试图确保客户总是用这支笔写支票。不要再担心客户用什么笔写支票,直接拒绝任何超过客户余额的支票,这要明智得多。
或者,换句话说:
1)如果应用程序要求您的web服务做一些您不希望它做的事情,那么应用程序是否被修改又有什么区别呢?
2)如果应用程序要求你的web服务做一些你想让它做的事情,如果应用程序被修改或不修改有什么区别?
虽然David的回答很好地总结了我对您的问题的看法(比我自己说的还要好),但我确实认识到有些环境确实想要完成您所要求的:用某种方式来证明远程系统确实正在运行您所说的软件。
IBM的TrouSers是一个致力于使远程认证成为现实的软件栈的一部分。整个堆栈依赖于内置在一些商品主板中的TPM芯片,一个执行引导加载程序加密校验和的可信BIOS,一个执行操作系统内核和重要系统实用程序加密校验和的可信引导加载程序,以及可以管理TPM和验证相关软件的操作系统支持(TrouSers)。
重要的是要注意TPM芯片不是为FIPS 140式篡改保护而设计的。即使使用完全可操作的远程认证堆栈,硬件所有者也可以或多或少地按照自己的意愿行事。因此,对硬件进行良好的物理安全控制以防止不受信任的人篡改设备是至关重要的。最好的方法是计算可执行文件的校验和并将其存储在安全的地方。您可以随时根据需要重新计算校验和并根据存储的校验和进行验证。如果值不匹配,则可执行文件已被更改。这是对互联网上大多数可用下载所做的。发布者与下载一起发布校验和。这个下载可以被镜像。从镜像站点下载的用户需要将下载的校验和与发布的校验和相匹配,以确保下载不被篡改。
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 如何使用C++确定应用程序是否已在窗口中启动?
- 如何查询以确定我的 MacOS/X 应用程序是否处于应用程序午睡模式?
- 确定C++应用程序是否作为具有旧版支持的 UWP 应用运行
- Windows 和 Android 应用程序是否需要 SSL?
- 根据应用程序是否已自动化显示不同的 QML 文件
- 如何检查应用程序是否安装了 jni?
- 使用 IPC 共享内存的应用程序是否可以访问彼此的代码?
- 在 64 位 Windows 上运行的 32 位应用程序是否仍然需要使用 SAFESEH 进行编译
- 如何检查应用程序是否在OpenOnload下运行
- 如何检测我的Windows应用程序是否已经结束
- Windows开发:如何确定我的应用程序是否正在泄漏内存
- 以 Windows 服务身份运行应用程序是否需要管理员权限
- 检查Qt c ++应用程序是否以sudo的形式运行
- 基于libpcap的应用程序是否会影响网络速度/性能
- C++:验证 Windows 应用程序是否已打开
- 监视C++OpenFrameworks应用程序是否冻结或内存泄漏,然后强制退出并重新启动
- 如何确定我的应用程序是否在SYSTEM帐户下运行
- C/C++应用程序是否可以使用 OpenCL
- GLEW 对于最新的 OpenGL 应用程序是否是强制性的