Php 代码混淆和运行时行为更改

Php 代码混淆和运行时行为更改,php,encryption,polymorphism,obfuscation,scripting-language,Php,Encryption,Polymorphism,Obfuscation,Scripting Language,你有没有办法用你的代码创建一个由三个部分组成的拼图,你可以得到一个加密的字符串,一个专门为该字符串构建的函数,并且只针对该字符串(解密形式的字符串实际上是要执行的代码/指令)。第三点也是最重要的一点,最后一点是使函数的执行成为可能的上下文,环境状态必须是不可伪造的。因此,要在匹配字符串上执行的函数只有一次,只有一个环境状态,然后过期。它必须是一个完美的时钟机制,即使只有一个部分缺失,也会使它“不……不可滴答”(当然,不能滴答,如“to function”,因为每个部分都是至关重要的) 我在这里讲

你有没有办法用你的代码创建一个由三个部分组成的拼图,你可以得到一个加密的字符串,一个专门为该字符串构建的函数,并且只针对该字符串(解密形式的字符串实际上是要执行的代码/指令)。第三点也是最重要的一点,最后一点是使函数的执行成为可能的上下文,环境状态必须是不可伪造的。因此,要在匹配字符串上执行的函数只有一次,只有一个环境状态,然后过期。它必须是一个完美的时钟机制,即使只有一个部分缺失,也会使它“不……不可滴答”(当然,不能滴答,如“to function”,因为每个部分都是至关重要的)

我在这里讲的是脚本语言,其中存在类似eval的东西,但它可以作为一种通用技术应用

使用基于各种内存状态和变量(随机或非随机)的某种“多米诺”效应,您可以创建类似于“泄漏效应”的东西,让代码的某些部分处于结构化(但隐藏)的位置,以便最终使用一种奇怪的工具作为“代码漏斗”,将所有内容安排在执行流中

由于我不知道这样的事情,我的话是虚构的,以便能够给当时任何一种可读性和可理解的形式

我的问题就是关于这个。。。可能吗?我能得到什么帮助吗?有什么想法吗?因为我现在找不到任何能保持这种效果的东西

当然,你可能会发现我没有理由要求这样的事情,因为你可能会说没有人对我的代码感兴趣,或者我患有妄想症。但仍然认为这可能是一个原因。不,这肯定是我想知道这件事的原因


请不要沉默,不要急于下结论,比如“很明显,这不是一个讨论论坛”,因为这是我面临的一个急需解决的问题。由于我对很多事情几乎没有经验,包括严肃的数学和扎实的算法思维,我迫切需要帮助。因此,我感谢那些愿意考虑此事的人。

您只需使用密码对代码进行加密即可。使用随机密钥对其进行加密,将该密钥存储在计算机上,然后在加密代码中包含一个部分,该部分在代码运行时从内存中删除该密钥。当然,在删除密钥之前复制密钥并在以后将其恢复到内存中相对容易,但您可以将其放在一个模糊的地方,我认为无论您做什么,有人都可以将计算机恢复到早期状态(使用软件)。

您可以简单地使用密码对代码进行加密。使用随机密钥对其进行加密,将该密钥存储在计算机上,然后在加密代码中包含一个部分,该部分在代码运行时从内存中删除该密钥。当然,对某人来说,在删除密钥之前复制密钥并在以后将其恢复到内存是相对容易的,但是你可以把它放在一个模糊的地方,我认为无论你做什么,有人都可以将计算机恢复到早期状态(使用软件)。

从根本上说,这是不可能的

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

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

您可以对代码进行加密,使任意程序无法检查代码,然后重新获得控制权。但是打算执行代码的程序仍然需要检查它,因此您必须以某种方式获得解密代码所需的信息

但现在您又回到了原来的问题:您需要一些信息(解密密钥),这些信息是您希望为用户提供的一种特定用途(仅在指定的情况下解密和运行代码),而不是其他用途

更有趣的是,您可以改为使用从要检查的环境部分派生的哈希值来加密代码(如果不知道要检查什么,就不可能知道如何派生密钥)。然后,如果用户(或代表他们执行代码的程序)想要检查代码,那么它必须遵循从环境中派生哈希值的相同过程,并拥有正确的环境。但是用户可以安排从该环境收集哈希值并保存它,允许他们随时检查代码

另外,我不知道你可以检查什么来保证正确的环境。如果在解密程序本身的秘密部分并运行之前,程序应该检查它是否正确运行(没有修改以监视代码),那么间谍可以很容易地从(未加密的)检查代码中取出加密的内容,计算出检查环境的计算,然后根据“正确”的环境而不是实际存在的环境进行自己的计算

最后,你所能做的就是让恢复绝密密码的过程变得更加烦人,这样就不会让人感到烦恼。大多数人无论如何都不会去看你的代码;他们就是不在乎。剩下的大多数人会在最轻微的阻力下放弃(尽管这可能会让他们推迟使用你的软件)。那些在那之后仍在努力的人。。。总有一种可能性(如果你的密码真的那么有价值/有趣),那就是无论你做什么,都会有足够的积极性的人(联合国)