search

Home  >  Q&A  >  body text

phpjm.net的加密原理是什么?

如题 http://www.phpjm.net/encode.html 这种加密方式是什么?php文件都乱码了,而且只要改动文件中的注释,文件也会运行不了,原理是?

另外, http://zhaoyuanma.com/phpjm.php 这玩意也能破解上面的加密,原理又是?

题外话,这...难道是传说中的...产业链?

黄舟黄舟2816 days ago640

reply all(4)I'll reply

  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:01:47

    乱码部分:

    https://segmentfault.com/q/1010000004145305/a-1020000004424387

    关于改动文件后无法正常运行的问题是:

    代码里执行后,用 get_file_contents(__FILE__) 检测了头部字符串。

    另外,这样的代码加密有两个巨大的性能问题:

    1. get_file_contents 至少多了一次系统 I/O ,性能损耗巨大

    2. eval

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:01:47

    看上去只是改了编码(把变量名搞成乱码神马的……
    base64加密啥的
    猜测PHPJM_神马神马的应该是特殊的key……
    反正不是真正意义上的加密,坐等大牛有更详细的介绍验证一下我的猜测

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:01:47

    代碼加密嚴格地講只是一種編碼,因爲運行時並不需要額外的信息。所謂的「加密」只是對試圖偷窺源代碼的人而言。

    因此,運行時,一切代碼均會顯露原形(可能會有一點變化,但等價。),這是破解一切代碼「加密」的通用方法。

    至於實現,分爲兩種,一種僅讓代碼難以閱讀,一種讓代碼無法閱讀。

    前者更多地稱作混淆,即刪去寫作時產生的額外信息,只留下必要的,這種變化不可逆(花指令混淆則是相反,添加額外字符,信息量可能不變)。

    後者將代碼保存在其他地方,主程序替換爲一段獲取源代碼的程序。

    保存在哪呢?a. 語言原生的數據,比如字符串、數組。 b. 註釋 c. 單獨文件。

    對於 php 這類代碼與非代碼混雜的語言,保存在文件中非 </php ?> 之間的內容也歸在 c。

    由此,第一個問題結束。

    第二個問題,通用的話可用前面的思路,運行時解密。還可以針對流行的「加密」方案進行破解。

    只要研究一下「加密後」的文件,大多數人都能寫出針對性的解密腳本,這並非難事。

    第三個問題,交由行內人討論,行外無從判斷。

    我只是猜測一下,這兩個網站彼此可能並無關聯,畢竟用到的技術也沒什麼新鮮的。

    都是病毒木馬殺毒軟件玩剩下的。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:01:47

    不知道它这个加密是不是和ZEND那个加密类似。
    应该是可以破解的。因为PHP本身的运行机制决定了它不能像.net或java一样加密和混淆。
    在PHP转为中间码的时候,应该就是解密之后吧。

    reply
    0
  • Cancelreply