我写了一个程序,它是一种非官方的,独立的应用程序插件。它允许客户获得一种服务,该服务是供应商拥有的低价服务。我的程序对于任何类型的TOS都不是非法的,并且当然不是病毒,广告软件或任何类似的东西。这就是说,供应商当然不满意我参加他的比赛,并试图阻止我的应用程序运行。程序如何被检测为正在运行?
他已经尝试了一些策略来阻止人们在他的应用程序旁边运行我的应用程序。他这样做,如果它被发现,他的应用程序会抛出一个虚假的错误。
首先,他通过查找带有正确标题的开放窗口来检查我的程序是否正在运行。我在启动时通过随机化节目名称来反驳这一点。
接下来,他寻找正在运行的进程名称。我通过在应用程序以[random string] .exe启动并自动运行时将其自身复制来对抗这一点。
不管怎么说,我的问题是这样的:他还能做些什么来检测我的程序是否正在运行?我知道你可以阅读窗口文本(即状态栏,标签)。我准备通过用图像替换标签来对付这个问题(呃,其他方式?)。
但是还有什么?你能检测到一个程序加载了什么.dll吗?如果是这样,可以通过在加载它们之前随机化dll名称来解决这个问题吗?
我知道有可能在内存中获得程序签名并以此方式进行跟踪(如病毒扫描程序),但是他这样做的机会可能不是很好,因为这听起来很先进。
即使这是他有点蹩脚的做,它的乐趣。这就像一个书呆子的拳头战斗。
编辑: 当我说这是一个插件,这是我使用的只是(不正确)项。这是一个独立的EXE。我的程序和另一个程序之间的“API”只是将数据输入到控件(如文本框等)中。
我用回答更新了原始文章。 – ryeguy 2009-06-19 14:20:22