2009-06-19 77 views
1

我写了一个程序,它是一种非官方的,独立的应用程序插件。它允许客户获得一种服务,该服务是供应商拥有的低价服务。我的程序对于任何类型的TOS都不是非法的,并且当然不是病毒,广告软件或任何类似的东西。这就是说,供应商当然不满意我参加他的比赛,并试图阻止我的应用程序运行。程序如何被检测为正在运行?

他已经尝试了一些策略来阻止人们在他的应用程序旁边运行我的应用程序。他这样做,如果它被发现,他的应用程序会抛出一个虚假的错误。

首先,他通过查找带有正确标题的开放窗口来检查我的程序是否正在运行。我在启动时通过随机化节目名称来反驳这一点。

接下来,他寻找正在运行的进程名称。我通过在应用程序以[random string] .exe启动并自动运行时将其自身复制来对抗这一点。

不管怎么说,我的问题是这样的:他还能做些什么来检测我的程序是否正在运行?我知道你可以阅读窗口文本(即状态栏,标签)。我准备通过用图像替换标签来对付这个问题(呃,其他方式?)。

但是还有什么?你能检测到一个程序加载了什么.dll吗?如果是这样,可以通过在加载它们之前随机化dll名称来解决这个问题吗?

我知道有可能在内存中获得程序签名并以此方式进行跟踪(如病毒扫描程序),但是他这样做的机会可能不是很好,因为这听起来很先进。

即使这是他有点蹩脚的做,它的乐趣。这就像一个书呆子的拳头战斗。

编辑: 当我说这是一个插件,这是我使用的只是(不正确)项。这是一个独立的EXE。我的程序和另一个程序之间的“API”只是将数据输入到控件(如文本框等)中。

回答

2

我觉得有点脏回答这个问题,但它是晚,我在等待一个驱动器复制完成这样....

他可以使用校验和来确定你的可执行文件/ DLL。这绕过了重命名的技巧。

你可以通过在开始时随机修改程序中的位(例如,更改资源,使用嵌入版本等等)来解决此问题。

如果我是他,我也会开始寻找网络流量模式;例如,如果您将客户引导至竞争对手,那么您会从某个地方查看该信息,因此如果插件访问位于黑名单上的网站,则会终止该流程并/或卸载该库。

如果您将猫捉老鼠游戏的时间足够远(例如,shell钩子会在被删除时重新创建可执行文件/库),您可能会被防病毒软件标记为病毒。

0

不管怎样,我的问题是这样的:他还能做些什么来检测我的程序是否正在运行?

  • 您的程序是EXE还是DLL?
  • 你称之为插件:插入什么?
  • 你的程序是如何启动/启动/运行的?
  • 你的程序做什么“插入”?
  • 你的程序和其他程序之间的API是什么?
+0

我用回答更新了原始文章。 – ryeguy 2009-06-19 14:20:22

-1

@ryeguy ...最好的防守是一个很好的进攻imho。尽可能在禁用你的过程之前禁用他的过程。

+3

然后用户将只删除插件 - 我不知道是否有用户喜欢每次搜索时都会崩溃主程序的“插件”。 – futureelite7 2009-06-19 02:32:30

2

不是很运动你的竞争对手。

将您的项目部署为未编译的加密源代码。编写一个解密和部署程序,可以随机化,重命名类,重新安排代码,以避免任何特定的签名检测。

然后使用CSharpCodeProvider编译客户端机器上的代码来编译您的代码。你可以使用完全随机的函数签名来生成随机程序集(我建议使用真正常用词汇的大型词典,而不是完全随机的,可以将它们连接在一起以获得更多乐趣,例如Live,Virtual,Space,Office,Network,实用程序,Space.Live.Network.dll,Utility.Virtual.Live.dll)。

每个客户端上的程序的每个版本都会有所不同。确保隐藏您的部署程序。也许它应该在安装您的定制版本后自行删除。

0

这不是您最终问题的答案,而是所描述的问题。

如何修复其他应用程序。 在标题中查找它正在查找的字符串,并在其中更改一些字母。

让客户知道问题出在哪里,方法是向他们提供修复程序而不是您自己的应用程序。

相关问题