Home > Article > Backend Development > phpjm.net的加密原理是什么?
如题 http://www.phpjm.net/encode.html 这种加密方式是什么?php文件都乱码了,而且只要改动文件中的注释,文件也会运行不了,原理是?
另外, http://zhaoyuanma.com/phpjm.php 这玩意也能破解上面的加密,原理又是?
题外话,这...难道是传说中的...产业链?
如题 http://www.phpjm.net/encode.html 这种加密方式是什么?php文件都乱码了,而且只要改动文件中的注释,文件也会运行不了,原理是?
另外, http://zhaoyuanma.com/phpjm.php 这玩意也能破解上面的加密,原理又是?
题外话,这...难道是传说中的...产业链?
乱码部分:
https://segmentfault.com/q/1010000004145305/a-1020000004424387
关于改动文件后无法正常运行的问题是:
代码里执行后,用 get_file_contents(__FILE__) 检测了头部字符串。
另外,这样的代码加密有两个巨大的性能问题:
get_file_contents 至少多了一次系统 I/O ,性能损耗巨大
eval
看上去只是改了编码(把变量名搞成乱码神马的……
base64加密啥的
猜测PHPJM_神马神马的应该是特殊的key……
反正不是真正意义上的加密,坐等大牛有更详细的介绍验证一下我的猜测
代碼加密嚴格地講只是一種編碼,因爲運行時並不需要額外的信息。所謂的「加密」只是對試圖偷窺源代碼的人而言。
因此,運行時,一切代碼均會顯露原形(可能會有一點變化,但等價。),這是破解一切代碼「加密」的通用方法。
至於實現,分爲兩種,一種僅讓代碼難以閱讀,一種讓代碼無法閱讀。
前者更多地稱作混淆,即刪去寫作時產生的額外信息,只留下必要的,這種變化不可逆(花指令混淆則是相反,添加額外字符,信息量可能不變)。
後者將代碼保存在其他地方,主程序替換爲一段獲取源代碼的程序。
保存在哪呢?a. 語言原生的數據,比如字符串、數組。 b. 註釋 c. 單獨文件。
對於 php 這類代碼與非代碼混雜的語言,保存在文件中非 ?>
之間的內容也歸在 c。
由此,第一個問題結束。
第二個問題,通用的話可用前面的思路,運行時解密。還可以針對流行的「加密」方案進行破解。
只要研究一下「加密後」的文件,大多數人都能寫出針對性的解密腳本,這並非難事。
第三個問題,交由行內人討論,行外無從判斷。
我只是猜測一下,這兩個網站彼此可能並無關聯,畢竟用到的技術也沒什麼新鮮的。
都是病毒木馬殺毒軟件玩剩下的。
不知道它这个加密是不是和ZEND那个加密类似。
应该是可以破解的。因为PHP本身的运行机制决定了它不能像.net或java一样加密和混淆。
在PHP转为中间码的时候,应该就是解密之后吧。