我编写了一个程序,它是一种非官方的、独立的应用程序插件。它允许客户获得比供应商拥有的服务价格更低的替代服务。我的程序不违反任何 TOS,当然也不是病毒、广告软件或类似的东西。话虽如此,供应商当然不高兴我参加他的比赛,并试图阻止我的应用程序运行。
他已经尝试了一些策略来阻止人们和他一起运行我的应用程序。他这样做了,所以如果检测到它,他的应用程序会抛出一个假错误。
首先,他通过寻找具有正确标题的打开窗口来检查我的程序是否正在运行。我通过在启动时随机化程序标题来反驳这一点。
接下来,他查找正在运行的进程名称。我通过在应用程序以 [random string].exe 启动时复制自身然后运行它来反驳这一点。
无论如何,我的问题是:他还能做些什么来检测我的程序是否正在运行?我知道您可以阅读窗口文本(即状态栏、标签)。我准备通过用图像替换标签来解决这个问题(呃,还有其他方式吗?)。
但还有什么?你能检测出程序加载了哪些 .dll 文件吗?如果是这样,这可以通过在加载它们之前随机化 dll 名称来解决吗?
我知道可以在内存中获取程序的签名并以这种方式对其进行跟踪(如病毒扫描程序),但他这样做的机会可能并不好,因为这听起来很先进。
尽管他这样做有点蹩脚,但它很有趣。这就像一个书呆子的拳头战斗。
编辑: 当我说它是一个插件时,这只是我使用的(不正确的)术语。这是一个独立的EXE。我的程序和另一个程序之间的“API”只是将数据输入控件(如文本框等)。