如何检测桌面应用程序是否已被修改?

时间:2011-11-14 07:59:59

标签: c++ windows macos qt cross-platform

如何检测桌面应用程序是否已被修改?

应用程序与Web服务进行通信,因此我们可以对桌面进行哈希处理,然后检查校验和是否匹配或类似的内容?或者你的建议是什么?

3 个答案:

答案 0 :(得分:6)

不要让应用程序做任何你不允许修改应用程序的人做的事情。然后,应用程序是否被修改无关紧要。

您建议的解决方案就像是一家银行试图设计一支不能用于编写不良支票的笔,然后试图确保客户始终使用该笔来编写支票。更不用担心笔客户用来写支票的情况,只是拒绝任何超出客户余额的支票。

或者,换句话说:

1)如果应用程序要求您的Web服务执行您不希望它执行的操作,那么在修改应用程序时它会有什么不同?

2)如果应用程序要求您的Web服务执行您希望它执行的操作,那么在修改应用程序时它会有什么不同?

总之,它没有任何区别。

答案 1 :(得分:2)

虽然David's answer是我对您的问题的看法的一个很好的总结(比我自己能说的更好),但我确实认识到某些环境确实想要达到您所要求的目标:某种方式来证明您正在运行的远程系统正是您所说的软件。

IBM's TrouSers是软件堆栈的一部分,旨在使remote attestation成为现实。整个堆栈依赖于某些商品主板内置的TPM芯片,执行启动加载程序加密校验和的可靠BIOS,执行操作系统内核和重要系统实用程序的加密校验和的可信引导加载程序,以及可以管理TPM并验证相关软件的操作系统支持(TrouSers)。

值得注意的是,TPM芯片设计用于FIPS 140式篡改保护。即使使用完全可操作的远程证明堆栈,硬件所有者也可以或多或少地按照自己的意愿执行操作。因此,对硬件进行良好的物理安全控制以防止不受信任的人员篡改设备至关重要。

答案 2 :(得分:0)

最好的方法是计算可执行文件的校验和并将其存储在安全的地方。您可以随时重新计算校验和并验证存储的校验和。如果值不匹配,则可执行文件已更改。这是对互联网上大多数下载所做的工作。发布者发布校验和以及下载。此下载可以镜像。从镜像站点下载的用户应与下载的校验和与已发布的chekcsum匹配,以确保下载不被篡改。