2011-09-07 26 views
1

是否有您可以创建三块与代码中的难题,你可以让你有一个加密的字符串,专为字符串,并只为一个内置功能的任何方式,(串以其解密形式实际上是要执行的代码/指令)。第三个也是最重要的,最后一部分将是使功能执行成为可能的上下文,并且该环境状态必须是不可伪造的。所以要在匹配字符串上执行的函数只有一次,只有一个环境状态,并在此之后过期。它必须是一个完美的时钟机制,即使只有一个缺失,使它“不可...可打勾”(不能勾选,因为在“功能”,当然,因为每个部分都是至关重要的)。代码混淆和运行时行为更改

我在这里谈论的脚本语言,其中存在类似的eval,但它可作为一个通用的技术。

使用某种基于各种记忆状态和变量的“多米诺骨牌效应”,随机或不是,您可以创建类似于“泄漏效应”的东西,让您的代码在结构化(但隐藏)的地方,所以最后,使用一个奇怪的工具作为“代码漏斗”全部安排在执行流程中。

由于我不知道这样的事,我的话是制成品,以便能够给出那么任何形式的阅读和理解的形式。

我的问题是关于这个......是否有可能?我能得到什么帮助吗?作为任何想法的地方?因为我现在找不到任何可以产生这种效果的东西。

当然,你可能会发现没有任何理由让我问这样的事情,你可以说,没有人有兴趣在我的代码,或者我遭受偏执。但仍然认为这可能是一个理由。不,这肯定是我想知道这个的原因。

请不要嘘,并跳转到像“它明确规定,这是不是一个讨论论坛”,因为这是我与一个解决方案的一些迫切需要面临的一个问题的结论。由于我对很多事情很少有经验,包括严重的数学问题和坚实的算法思维,所以我正在呼救。所以我感谢那些会考虑这个问题的人。

回答

1

这基本上是不可能的,在一个非常基础的层面。

你想给某人一些信息(你的代码)。你希望他们能够在一个特定的状态下执行一次代码(你没有很好地定义)。但是您不希望他们能够检查该代码,或者在其他情况下执行该代码。不可能。

该人员机器上的程序(将执行代码)必须能够检查代码,以便能够执行代码。因此,该机器上的其他程序也将能够检查代码。

您可以对自己的代码,使任意程序不能检查它,你重新获得控制权。但是打算执行代码的程序仍然需要检查它,所以您必须以某种方式获取解密代码所需的信息。

但是现在你回到了原来的问题:你想给用户一个特定用途的某些信息(解密密钥)(仅在你指定的情况下解密和运行你的代码) ),而不是其他任何人。

更有意思的是,您可以使用从您想要检查的环境部分派生的散列值对您的代码进行加密(在不知道要检查的情况下如何得出密钥是不可能说的)。然后,如果用户(或代表他们执行您的代码的程序)想要检查代码,则它必须遵循从具有正确环境的环境派生散列值的相同过程。但用户可以安排从该环境收集散列值并保留它,以便他们随时检查您的代码。

另外,我不知道你可能检查实际上保证正确的环境。如果程序在解密自身的秘密部分并运行之前检查它是否正确运行(没有修改间谍代码),那么间谍可以轻松地提取加密的东西,从(未加密)检查代码执行什么计算来检查环境,然后根据“正确”环境而不是实际存在的环境进行自己的计算。

最后,你所能做的就是让恢复最高机密代码的过程变得更加烦人,从而消除烦恼。无论如何,大多数人永远都不会去看你的代码。他们只是不在乎。剩下的大多数人会放弃最轻微的阻力(尽管它可能会使用你的软件将它们关闭)。那些仍在努力追求的人......总有一个机会(如果你的秘密代码真的很有价值/有趣),那么就会有足够的动机来解决你所做的任何事情(除非你永远不会给任何人你的代码首先)。所以我的意图是只需要一点点简单的努力来掩盖你的密码,而不必担心达到完美的安全性,因为这是不可能的。

0

您可以简单地使用symmetric encryption加密代码。使用随机密钥对其进行加密,将该密钥存储在计算机上,然后在加密代码中包含一部分代码运行时从内存中删除该密钥的部分。当然,在被删除之前复制密钥并将其恢复到内存相对容易些,但是你可以把它放在一个不太明显的地方,我认为不管你做什么人都可以将计算机恢复到以前的状态(使用backup软件)。

+0

谢谢你的回答。到底你提到的是什么是我的问题。难道没有任何方法可以让情绪不稳定吗?或者是那些有自动执行的信息,而且它本身就是上下文,就像它结束时不能重新启动一样。 – khael

0

@本,有趣的介绍,我相信自从我明白可以做什么以及不能做什么的那一刻起,我就在想这件事。我想到你提到的每一种可能的情况,甚至更多,事实上似乎没有办法。也许我应该尽量限制自己,尽量让自己头疼。这不仅仅是一个超级秘密的代码,因为你命名它,但我有另一个隐藏它的意图,就是这样,请原谅我缺乏谦虚,它确实是一个有趣的代码,我真的想过滤这些代码来看看它,如果它需要一个天才从A到C而不经过B,那么它必须要另一个人来弄清楚如何。我虽然这是我缺乏经验,让我失望无法解决问题。但是,我总是置身于这种看似不可能的情况之前,而且我通常会提起地狱寻找解决办法,我管理得很好。但现在只是我不能投降。

我可能从一开始就知道答案,无论你尝试多少都不能做,当然很容易找出原因,因为它不正常或不正确,必须依靠你的知识和经验来限制你正在创造的东西。考虑到这一点,很明显,为什么一定有更好的方法,肯定会有人比你更好,胜过你。即使这样,至少在我的主观上来说,这是很麻烦的。那么,我想我会尽我所能减少那些知道我的超级密码的人。毕竟,上帝是伟大的谜题制造者。

无论如何,我非常感谢您的答案。

P.S.对不起,我迟到了,但因为我8个小时不能回答我的问题,所以我不得不等待,之后我找不到任何可行的时间。