成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

通用加密php文件還原方法

crelaber / 1376人閱讀

摘要:前面一篇文章實(shí)戰(zhàn)還原加密文件說(shuō)到我發(fā)現(xiàn)了加密文件方式的不足,所以才有了這篇文章。加密分為兩種方式執(zhí)行一種是有擴(kuò)展。第二種代表的有和松哥的。來(lái)個(gè)例子這次咱們拿松哥的來(lái)下手。松哥的代碼寫(xiě)得非常漂亮,知道解密耗費(fèi)時(shí)間還寫(xiě)了個(gè)。

只是技術(shù)交流,并沒(méi)有惡意,請(qǐng)不要濫用此技術(shù)。如果有疑問(wèn)歡迎跟我交流。

前面一篇文章 實(shí)戰(zhàn)還原PHP加密文件 說(shuō)到我發(fā)現(xiàn)了PHP加密文件方式的不足,所以才有了這篇文章。

背景分析

眾所周知 PHP 是一種腳本語(yǔ)言,腳本語(yǔ)言主要是使用解釋運(yùn)行而非編譯運(yùn)行。所以相對(duì)于編譯型語(yǔ)言(C、C#、C++),它沒(méi)有直接生成exedll的能力。所以傳統(tǒng)型的加密方式加殼它使用不上。

所以PHP的加密方式一般有兩種:混淆和加密。

混淆這種嚴(yán)格意義上不算加密,這種代碼就像用拼音縮寫(xiě)命名變量的代碼,只是你看起來(lái)費(fèi)勁了點(diǎn)。這種不在我們討論范圍。

加密分為兩種方式執(zhí)行:一種是有擴(kuò)展(Loader)。 另外一種是無(wú)擴(kuò)展。

首先講講無(wú)擴(kuò)展的加密方式。這種加密方式非常的無(wú)腦,因?yàn)樗慕饷苓^(guò)程是公開(kāi)的,而且得利用已知的PHP函數(shù)。加密之后的代碼一般類(lèi)似下面:


即使看起來(lái)非常復(fù)雜的:

也不過(guò)是上面的變式而已。像這種解密形式公開(kāi)的非常好破解,只要找到 eval 改成 echo 就行

另外一種有擴(kuò)展方式就比較復(fù)雜了。擴(kuò)展在這里的作用主要是解密跟執(zhí)行代碼,相比無(wú)擴(kuò)展的形式他將解密跟執(zhí)行的代碼隱藏在擴(kuò)展里,所以破解較為復(fù)雜。

這里的擴(kuò)展一般分為兩種類(lèi)型的:1、提供解密執(zhí)行函數(shù)的。2、直接覆蓋 zend_compile_file 實(shí)現(xiàn)解析自定義的php文件功能。

第一種最典型的例子就是我上篇文章提到的 zoeeyguard,主要使用了 zend_eval_string 這個(gè)函數(shù)來(lái)執(zhí)行php代碼。

第二種代表的有:Zend Guard 和 松哥的 php-beast 。

可以說(shuō)兩種破解思路都差不多??梢?xún)?yōu)先嘗試我上一篇文章里面的思路。

當(dāng)然如果我上一篇沒(méi)有解決的情況下怎么辦呢?

這個(gè)時(shí)候就需要奉上大殺器了。

你會(huì)發(fā)現(xiàn)我在前文一直說(shuō)到兩個(gè)的函數(shù) zend_compile_file 和 zend_eval_string,有些聰明的phper已經(jīng)想到了,對(duì)!思路還是 只要找到 eval 改成 echo 就行

實(shí)戰(zhàn)例子

咱們不能光打嘴炮,光說(shuō)不做。來(lái)個(gè)例子:

這次咱們拿松哥的 php-beast 來(lái)下手。松哥的代碼寫(xiě)得非常漂亮,知道 AES DES 解密耗費(fèi)時(shí)間還寫(xiě)了個(gè) Cache 。

1.下載 linux 的 php 源碼包(版本最好在5.6跟5.5之間選擇一個(gè),7不支持,BTW:7的改動(dòng)還是挺大的,很多東西都沒(méi)兼容,Zend Guard 也不支持7。這里我走了彎路。)

2.找到文件 Zendzend_language_scanner.c 中的函數(shù):zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC) 大概在500多行的樣子,將如下的代碼加在前面(代碼寫(xiě)得爛,切勿吐槽):

ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC)
{
    zend_lex_state original_lex_state;
    zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
    zend_op_array *original_active_op_array = CG(active_op_array);
    zend_op_array *retval=NULL;
    int compiler_result;
    zend_bool compilation_successful=0;
    znode retval_znode;
    zend_bool original_in_compilation = CG(in_compilation);

    /** BEGIN **/
    //加在這里的含義就是每次php編譯php源碼的時(shí)候都把這份源碼打印一份
    char *buf;
    size_t size;
    zend_stream_fixup(file_handle, &buf, &size);
    printf("
#######
FILE TYPE: %d  FILE NAME: %s CONTENT: %s
#######
", (*file_handle).type, (*file_handle).filename, buf);
    /** END **/

在php文件夾下執(zhí)行:

//節(jié)省點(diǎn)時(shí)間
./configure --disable-ipv6 --disable-all
make
make install

4.如果順利的話PHP已經(jīng)安裝成功了。

5.我們寫(xiě)兩個(gè)測(cè)試文件:
作用是: test.php 執(zhí)行它去加密 before.php 生成 after.php。

//test.php

//before.php

7.執(zhí)行以下 php test.php 接著在執(zhí)行 php after.php。

下面就看截圖吧:

總結(jié)

1、沒(méi)有破不了的密碼。我們能做的只是增加破解時(shí)間。如果這個(gè)破解時(shí)間大于一個(gè)人的壽命,那么這個(gè)加密方式肯定是成功的。
2、對(duì)于加密的程序,就像破解者需要了解、猜測(cè)編寫(xiě)者的思路一樣,編寫(xiě)者也需要去了解破解者的方法、手段。這樣才能寫(xiě)出破解難度更高的程序。
3、相比加密我覺(jué)得混淆更適合php源代碼的“加密”。
4、如果你的php代碼想要加密發(fā)布出去,最好的方式還是提高收費(fèi)然后直接源碼提供。

廣告

如果您覺(jué)得寫(xiě)的好,隨便支持一點(diǎn)吧!

http://wx-app.com.cn 是一個(gè)微信小程序的資訊站點(diǎn)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30508.html

相關(guān)文章

  • 實(shí)戰(zhàn)還原PHP加密文件

    摘要:先說(shuō)環(huán)境實(shí)戰(zhàn)過(guò)程手頭上有一個(gè)加密過(guò)的項(xiàng)目和一個(gè)擴(kuò)展的動(dòng)態(tài)連接庫(kù)。根據(jù)數(shù)據(jù)更改里面的文件。主要的時(shí)間是在試探加密參數(shù)上,很幸運(yùn)的是文件也沒(méi)有加殼。在破解的過(guò)程中也了解了加密的缺陷性,所以才有了下一篇文章通用加密文件還原方法。 先說(shuō)環(huán)境: Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-52-generic x86_64) PHP 5.5.9-1u...

    yibinnn 評(píng)論0 收藏0
  • 齊博CMS HMAC+Cookie注入漏洞分析

    摘要:前言首先聲明這不是,具體齊博版本就不說(shuō)了,后面應(yīng)該有人也發(fā)現(xiàn)這個(gè)漏洞并且發(fā)出來(lái)了。那時(shí)候?qū)Ξ?dāng)時(shí)的齊博系列進(jìn)行完整的分析和代碼審計(jì),漏洞不少,挑幾個(gè)有意思的發(fā)出來(lái)。任意長(zhǎng)度最終密文則為由于網(wǎng)絡(luò)傳輸字符關(guān)系,齊博這里對(duì)進(jìn)行了一次操作。 前言 首先聲明這不是0day,具體齊博版本就不說(shuō)了,后面應(yīng)該有人也發(fā)現(xiàn)這個(gè)漏洞并且發(fā)出來(lái)了。 本文為篤行日常工作記錄,文章是大概14年國(guó)慶節(jié)寫(xiě)的,一直未公開(kāi)...

    DangoSky 評(píng)論0 收藏0
  • 聊聊加密那點(diǎn)事——PHP加密最佳實(shí)踐

    摘要:所謂對(duì)稱(chēng)加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點(diǎn)之一。非對(duì)稱(chēng)加密算法由于對(duì)稱(chēng)加密在通信加密領(lǐng)域的缺陷,年和提出了非對(duì)稱(chēng)加密的概念。非對(duì)稱(chēng)加密,其主要缺點(diǎn)之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個(gè)動(dòng)作或者過(guò)程,其目的就是將一段明文信息(人類(lèi)或機(jī)器可以直接讀懂的信息)變?yōu)橐欢慰瓷先](méi)有任何意義的字符,必須通過(guò)事先約定的解密規(guī)則才能將...

    lcodecorex 評(píng)論0 收藏0
  • 聊聊加密那點(diǎn)事——PHP加密最佳實(shí)踐

    摘要:所謂對(duì)稱(chēng)加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點(diǎn)之一。非對(duì)稱(chēng)加密算法由于對(duì)稱(chēng)加密在通信加密領(lǐng)域的缺陷,年和提出了非對(duì)稱(chēng)加密的概念。非對(duì)稱(chēng)加密,其主要缺點(diǎn)之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個(gè)動(dòng)作或者過(guò)程,其目的就是將一段明文信息(人類(lèi)或機(jī)器可以直接讀懂的信息)變?yōu)橐欢慰瓷先](méi)有任何意義的字符,必須通過(guò)事先約定的解密規(guī)則才能將...

    Mr_zhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<