我创建了我自己的反adblock系统,它做一些类似于BlockAdblock之类的服务,除了我的系统以不同的方式进行阻滞剂检测(到目前为止还不能像BlockAdblock那样被绕过)。
如果您转到我的反阻断剂网页并生成一些反adblock代码示例,您会注意到这些代码都是模糊的(BlockAdblock也是这样做的),这是为了使过滤器和绕过方法更难开发。代码不能不被混淆或篡改/编辑(这样做会导致它不能工作)。
这个混淆的反adblock代码的每一代都是唯一的,但它们都执行相同的操作。
我可以看到,我的工具的一些潜在用户可能不信任它,因为他们无法确切地确定它是如何工作的--我是否能够向我的用户证明生成的代码不是恶意的,而不暴露实际的未混淆的源代码?(因为如果我要公开未混淆的源代码,那么它首先就会破坏混淆的整个目的)
发布于 2021-08-15 13:24:20
如何向用户证明我的模糊代码没有恶意而没有混淆?
很可能你做不到。
也许,如果受信任的人愿意审核您的代码(服从NDA等)并使用他们的PGP密钥签署静态版本,那么可能会有更多的人愿意安装您的脚本,并且相信它已经被那些知道他们正在谈论的内容的人审查了……
在这个世界上,一切都是建立在信任和声誉之上的。因此,我的建议是,如果你想从事编程的职业生涯,从现在开始,应该建立起这种信任,并建立起你的声誉。也可以考虑做一些开源代码,并在GitHub这样的平台上发布。我认为您实际上已经在GitHub上获得了一些回复,所以请不要犹豫地链接到您以前的工作。
如果人们能够看到你的历史,并评估你的编码实践的质量(尽管当你想到它的时候,这些都是游戏的规则……),他们可能更愿意信任你的代码。
也许有一天,你会在一家软件公司工作,或者创建一家软件公司,然后你会出售像这样的封闭源代码,编译后的代码。如果你的声誉足够好,如果你的产品足够好,稳定和价格正确,你的客户会接受它就像他们购买他们需要的其他软件产品,即使他们永远不会看到源代码。
只是好奇而已,但是您是否尝试过像这一个这样的在线清理器呢?经过这些工具之后,您的代码是否已经足够晦涩了?
您所取得的仍然是通过模糊的安全性,JavaScript代码也可以通过调试器进行跟踪。所以,一个有时间和足够经验的人可以弄清楚它是如何运作的。毕竟,这是客户端代码,甚至没有编译。
这不可能是地球上最困难的逆向工程任务。
在这一点上我不会太担心,我担心的是你的发明是时间敏感的,甚至可能会被未来版本的Firefox或Chrome等所淘汰。击败阻断剂是一个永无止境的竞赛,你在这个领域做的一切都是有限的。
发布于 2021-08-15 19:02:19
如果用户无法读取代码,就不可能证明代码不是恶意代码。你能期望的最好的是一个信任网络,第三方证明它不是恶意的,但这并没有转移信任问题--它只是创造了一个额外的问题。
从最终用户的角度来看,通过试图绕过我的安全安排,您询问的代码已经是恶意的。我不需要看代码就知道这一点,我已经避免了网站告诉我关闭它,因为他们已经表现出缺乏希望赢得我的习惯。
发布于 2021-08-15 10:32:30
可能不会。证明某些特定的黑匣子(您的代码)有一个特定的行为,只有这样的行为是不可能的,除非首先充分描述预期的行为-这基本上意味着提供某种形式的代码。
例如,仅仅提供一些示例输入并让用户生成示例输出是不够的,因为某些特定的“魔术”输入仍然会触发后门或类似的输入。
https://security.stackexchange.com/questions/254257
复制相似问题