PhpStorm配置less自動(dòng)編譯css
Less 是一門 CSS 預(yù)處理語言,它擴(kuò)展了 CSS 語言,增加了變量、Mixin、函數(shù)等特性,使 CSS 更易維護(hù)和擴(kuò)展。作為 CSS 的一種擴(kuò)展,Less 不僅完全兼容 CSS 語法,而且連新增的特性也是使用 CSS 語法。這樣的設(shè)計(jì)使得學(xué)習(xí) Less 很輕松,而且你可以在任何時(shí)候回退到 CSS...
less中文網(wǎng):less中文網(wǎng)
nodejs下載:nodejs
less使用可作為參考;
phpstorm配置支持less需要使用npm命令;
需要安裝nodejs
本文在windows和mac下進(jìn)行測(cè)試;
點(diǎn)此nodejs下載,找到自己對(duì)應(yīng)的版本;
點(diǎn)擊下載;
按照提示一步一步安裝即可;
在終端運(yùn)行:
ps:以上命令操作你都可以在less中文網(wǎng)中找得到
然后重啟編輯器;
如果不能正常運(yùn)行以下步驟,那就重啟電腦;
windows打開設(shè)置【setting】
mac找到首選項(xiàng)【Preferences】
打開之后,在左上角搜索框輸入:file Watchers
new watcher對(duì)話框
之后會(huì)彈出new watcher對(duì)話框
點(diǎn)擊ok
再點(diǎn)ok,把對(duì)話框全點(diǎn)沒了;
然后你就可以新建文件index.less進(jìn)行測(cè)試
如果新建文件上部彈出提示消息;
那就點(diǎn)擊Add watcher添加監(jiān)聽;
每次書寫,ctrl+s保存會(huì)自動(dòng)編譯css
【本文來自 武斌博客 http://www.wubin.pro,為超人原創(chuàng)文章,想獲取更好的頁面瀏覽效果或者有任何問題請(qǐng)進(jìn)入博客,同時(shí)也可在博主評(píng)論區(qū)進(jìn)行留言,讓博主為大家答疑解惑~】
果你說PHP編程用基礎(chǔ)的文本編輯軟件就可以了,比如用記事本。是的,這對(duì)于業(yè)余愛好者來說絕對(duì)可以。但選擇一款功能豐富而完整的開發(fā)軟件還是要好一些,尤其是專業(yè)開發(fā)者更有必要。這些軟件如:NetBeans, PHPStorm, VIM, Zend Studio, Cloud9或Atom。
好的開發(fā)工具富有特點(diǎn)而且能夠幫助開發(fā)者快速高效地編輯程序,它是開發(fā)者的基本需求,磨刀不誤砍柴工,提前花點(diǎn)時(shí)間選擇一款適合的開發(fā)軟件是為上策。
那選擇哪一款呢, 這個(gè)問題要看你的需求、偏好和預(yù)算。 選定一款之前試用幾個(gè)也不錯(cuò)。
大量PHP開發(fā)軟件支持跨平臺(tái)系統(tǒng),能用于Windows,Linux和Mac,而且提供免費(fèi)下載。 對(duì)于初學(xué)者,我的建議是,你可以隨意選擇一款免費(fèi)的,可用就行。 比如:NetBeans,VIM,Atom或Eclipse PDT。
企業(yè)和專業(yè)開發(fā)者可以用這些免費(fèi)的開發(fā)軟件完成程序編輯,但同時(shí)也有很多收費(fèi)的平臺(tái)因?yàn)檎狭撕芏嘧钚潞透M(jìn)步的功能特性而備受企業(yè)開發(fā)者的青睞。隨便舉幾個(gè),比如:PHPStorm, Sublime Text, Zend Studio, Nusphere, PHPED, PHP Designer和 Cloud 9等。
假如你只是想用PHP做簡(jiǎn)單的應(yīng)用而非構(gòu)架一整個(gè)系統(tǒng),那么你也可以試一試那些線上的PHP開發(fā)工具,比如說PHPfiddle.com。 更簡(jiǎn)單的你可以選用witephponline.com和ideone.com。
好了,那讓我們來看一下被全世界開發(fā)者們公認(rèn)的10個(gè)優(yōu)秀的開發(fā)工具吧。它們功能豐富,廣為流傳,最為先進(jìn)而且備受喜愛。
1. NetBeans - 最好的PHP IDE (免費(fèi)版本)
NetBeans是供普通大眾使用的PHP IDE,它功能豐富、免費(fèi)并且支持多國(guó)語言,其中包括英語、日語、俄語、巴西葡萄牙語以及簡(jiǎn)體中文。NetBeans的免費(fèi)版本的發(fā)布日期要回溯到2010年,Sun Microsystems開始將其作為開源項(xiàng)目發(fā)展,后來Sun Microsystems成為了Oracle的子公司。
自發(fā)布以來,NetBeans的下載次數(shù)已超過1800萬次,同時(shí)擁有一個(gè)最大的致力于開源集成開發(fā)環(huán)境的開發(fā)者社區(qū)。
過去,NetBeans的用途很少,只能進(jìn)行Java開發(fā),但現(xiàn)在,這樣的日子一去不復(fù)返了,NetBeans目前的穩(wěn)定版是輕量級(jí)的、速度更快并且全面支持PHP。對(duì)于像Zend、Doctrine、 Smarty和Symfony2一類的流行PHP框架以及像Yii、CakePHP、 FuelPHP和Wordpress CMS一類的其它框架提供了開箱即用的支持,也通過laravel-ide-helper提供了對(duì)Laravel框架的開箱即用支持。
讓NetBeans位居榜首的關(guān)鍵特性是擁有很多代碼生成工具,像getter setter生成、代碼模板、智能代碼補(bǔ)全、提示、快速修復(fù)和重構(gòu)等。另外還支持一些基本特性,包括代碼折疊和格式化、try/catch代碼補(bǔ)全以及矩形選區(qū)等。
當(dāng)進(jìn)入調(diào)試階段時(shí),你可以在本地或者遠(yuǎn)程使用命令行或者xDebug。NetBeans PHP編輯器對(duì)包括 javascript、HTML和CSS等web開發(fā)都提供了開箱即用的支持。所有這些特性輕而易舉地使得NetBeans成為最好的開源PHP IDE。
閱讀更多有關(guān)NetBeans的內(nèi)容請(qǐng)?jiān)L問官方網(wǎng)站netbeans.org。
2. PHPStorm- 最好的PHP IDE (商業(yè)版本)
PHPStorm 是全功能的PHP IDE,其擁有最現(xiàn)代化的功能集可以快速便捷的進(jìn)行網(wǎng)頁開發(fā)。它由名叫JetBrains的公司開發(fā)并銷售。 在過去的15年中,在開發(fā)工具的市場(chǎng)中JetBrains是最受人喜愛的公司,它使得編寫代碼更加的輕松和愉快。
PHPStorm 很好的支持主要的框架比如Symfony, Zend Framework, Yii, CakePHP, Laravel以及主要的CMS系統(tǒng)如Drupal, Magento 和Wordpress。
不是所有的Web開發(fā)項(xiàng)目都沒有前端技術(shù),這也正是PHPStorm耀眼之處, 它幾乎提供了所有前端技術(shù)的實(shí)時(shí)編輯功能比如CSS, Sass, HTML5, CoffeeScript, TypeScript, JavaScript, Stylus, Less等等。同時(shí)還支持代碼重構(gòu),調(diào)試和單元測(cè)試。
從發(fā)工具方面來說,它提供了版本控制系統(tǒng),sql數(shù)據(jù)庫,composer, 遠(yuǎn)程部署,vagrant,其他的客戶端,命令行工具等諸如此類的功能。
從調(diào)試的角度來說,它支持Zend Debugger和Xdebug,也同時(shí)支持本地的或遠(yuǎn)程的。
PHPStorm是企業(yè)級(jí)IDE, 需要授權(quán)費(fèi)用,主要的目標(biāo)是專業(yè)的開發(fā)人員,但是它同時(shí)為教師,學(xué)生或開源的項(xiàng)目免費(fèi)提供。
PHPStorm的普及程度可以從一個(gè)事實(shí)來衡量,就是眾多的大公司如Expedia,Yahoo, Cisco, Salesforce 和wikipedia都曾有購買過PHPStorm IDE的授權(quán)。
你可以在以下地址下載PHPStorm試用版 (免費(fèi)30天) – Download PHPStorm trial version.
你想了解更多的PHPStom請(qǐng)登錄官網(wǎng) – jetbrains.com/phpstorm.
3. Sublime Text 3 / PHP IDE
Sublime Text 3 是我最喜歡的一個(gè),也是候選的最強(qiáng)文本編輯器。它輕量級(jí),擁有豐富的特性,還支持在Windows,OSX 和 Linux 上運(yùn)行。 Sublime text 編輯器變得強(qiáng)大是通過插件和包來實(shí)現(xiàn)的。
有許多 PHP 的外部包可以使用,這些包可以幫助這個(gè)優(yōu)雅的編輯器變成一個(gè)優(yōu)雅的 Sublime PHP IDE。為了實(shí)現(xiàn)這個(gè)目的需要一些有用的包和一些著名的包——package control,Sublime PHP companion, xDebug client——CodeBug, PHPCS, CodIntel, Simple PHPUnit 和 PHPDoc。
一旦你安裝 sublime text 3 作為 PHP IDE ,它會(huì)幫助你添加包,你獲得的 sublime text 是優(yōu)雅的,在這里它讓你的 PHP 變得強(qiáng)有力,它對(duì)于 PHP 開發(fā)絕對(duì)好用。
關(guān)于 Sublime Text,你可以在這里(sublimetext.com)讀到更多。
4. Eclipse PDT
Eclipse PDT (PHP Development Tools)是另一款無需任何花費(fèi)的開源選擇。 Eclipse擁有一個(gè)龐大的開發(fā)者社區(qū)致力于開發(fā)各種各樣的插件,使Eclipse能夠具備任何一款如Storms PHP, NetBeans和Zend studio等頂級(jí)的開發(fā)IDE一樣功能。
相比較與商業(yè)的IDE,剛開始時(shí)需要多做一些工作,但相較于你省下的錢一切都是值得的。與PHPStorm和Zend Studio相較,Eclipse PDT節(jié)省授權(quán)費(fèi)是一個(gè)很大的優(yōu)勢(shì)。如果你是傳統(tǒng)的Eclipse愛好者,使用Eclipse PDT會(huì)使你感覺很自在。
有的人會(huì)說Eclipse會(huì)很慢,說實(shí)話如果你的系統(tǒng)配置很爛,商業(yè)化的產(chǎn)品相較于Eclipse會(huì)表現(xiàn)得更好。然而,現(xiàn)在基本的筆記本配置已經(jīng)能夠讓Eclipse足夠快的運(yùn)行而不拖你的后腿。
一些關(guān)鍵的特性包括: 語法高亮(syntax highlighting), 代碼補(bǔ)齊(code assist), 代碼格式化(code formatter), 重構(gòu)(refactoring), 代碼模版(code templates), 代碼導(dǎo)航(code navigation), php調(diào)試(php debugging), 語法檢查(syntax validation) 并且擁有一個(gè)龐大的社區(qū)的eclipse生態(tài)系統(tǒng)來支持它。
開始使用時(shí),你可以下載專用于PHP開發(fā)的Eclipse包,它包含了PHP語言支持,XML編輯器,Git客戶端和 Mylyn。
軟件能夠在Mac OS X, Windows 和 Linux系統(tǒng)下下載并使用。你可以了解更多關(guān)于Eclipse PDT盡在- eclipse.org/pdt/。
5. VIM
VIM 是在GPL授權(quán)下,可以免費(fèi)下載并使用的開源文本編輯器。它是最先進(jìn)的文本編輯器之一并且在開發(fā)社區(qū)內(nèi)非常的流行。Facebook的工程師在使用自己的Hack語言之前,一直都是使用VIM來編寫他們的PHP代碼。
我們知道VIM作為一款優(yōu)秀文本編輯器具有眾多的特性,但當(dāng)你仔細(xì)的配置完成后,它提供了不亞于完全成熟的 PHP 開發(fā)環(huán)境以適用于你的PHP開發(fā)。
如果你是只喜歡用鍵盤來工作的開發(fā)者, VIM就很適合你,它模塊化,輕量并且快速。
要找一款 Linux下的PHP IDE,VIM 就是你要找的并且它的理念與Sublime Text 3相似, VIM也需要插件來轉(zhuǎn)化成像 PHPStorm 或Netbeans一樣的IDE, 最開始你需要花費(fèi)大量的工作來配置大量的插件,但在最后成功后你會(huì)發(fā)現(xiàn)一切都是值得的。
VIM顯然應(yīng)該被算做是一款免費(fèi)的PHP IDE。 你可以在 vim.org上了解更多!
6. Zend Studio
Zend Studio是另一款一流的由Zend公司開發(fā)的商用PHP IDE,其目標(biāo)是成為專業(yè)的web開發(fā)工具。
Zend公司提供了對(duì)PHP的全方位支持,其中任何一件產(chǎn)品都有助于使PHP開發(fā)變得輕而易舉,該公司擁有的客戶數(shù)量超過40000。其中一些重要客戶包括敦豪速遞公司、瑞士信貸、法國(guó)巴黎銀行和安捷倫科技公司。
Windows、 OS X和Linux均提供了對(duì)Zend Studio的支持,并且兼容包括PHP7在內(nèi)的最新PHP版本。Zend Studio的用戶界面很直觀,并且提供了大量的現(xiàn)代化功能和工具,通常有助于加速PHP和web的開發(fā)進(jìn)程。其中一些關(guān)鍵功能包括-
Zend提供了一個(gè)有趣而且強(qiáng)大的功能,即支持在現(xiàn)有的PHP應(yīng)用程序和服務(wù)器端進(jìn)行移動(dòng)app開發(fā)。當(dāng)要對(duì)已有的網(wǎng)站和web app、mobile app進(jìn)行補(bǔ)充開發(fā)時(shí),這個(gè)功能就很有用。
要閱讀更多有關(guān)Zend Studio的內(nèi)容可訪問- Zend Studio for PHP。
7. Atom
Atom是由GitHub人員建立在MIT授權(quán)下的免費(fèi)的現(xiàn)代化的文本編輯器。Atom在其巨大的社區(qū)內(nèi)形成了自己的生態(tài)系統(tǒng),并且擁有眾多可用的插件和包來擴(kuò)展和定義它。
Atom是真正可定制的,也就是說用它的可擴(kuò)展性和高定制性你可以把它變成你夢(mèng)想的編輯器。此外,它也是真正的跨平臺(tái)下的很好選擇,它同時(shí)支持Windows, OS X, Debian Linux (Ubuntu), Red Hat Linux and Fedora 22+。
如何讓Atom變成免費(fèi)的PHP IDE?
當(dāng)涉及到PHP時(shí),有很多的可用包可以把Atom編輯器變成全功能的PHP IDE,它不僅僅是免費(fèi),更是一款不亞于很多的商業(yè)性的PHP IDE。
把a(bǔ)tom編輯器變成一款全功能的免費(fèi)的PHP IDE所涉及到的包有:hyperclick-php, php-cs-fixer, php-integrator-base, linter-php, atom-autocomplete-php等等。這里僅舉幾個(gè)例子。你可以在Github上查看全部的所需清單 -> https://atom.io/packages/search?q=php
想要了解更多請(qǐng)查看atom.io。
8. NuSphere
NuSphere是另一款致力于PHP開發(fā)工具的公司,它側(cè)重于網(wǎng)頁開發(fā)的體驗(yàn),PHPED是他們提供的IDE產(chǎn)品。
這家公司位于美國(guó)內(nèi)達(dá)華州里諾市,它的第一個(gè)PHPED的版本發(fā)布于PHP剛發(fā)展起來的2001年。
而它的最新的版本IDE產(chǎn)品則支持PHP 7以及眾多的PHP框架,包括 Laravel, Yii, Symfony等。同時(shí)還支持內(nèi)容管理系統(tǒng)(Content management systems)中的Joomla 和 Wordpress。其最新版增加的功能還有支持遠(yuǎn)行本地和遠(yuǎn)程項(xiàng)目的測(cè)試單元。
總的來說,NuSphere的PHPED是一款全功能的網(wǎng)站開發(fā)工具,并包含了JavaScript調(diào)試, 帶有LESS的CSS預(yù)處理, HTML5,當(dāng)然還有與PHP相關(guān)的所有內(nèi)容。
即便如此,我還是認(rèn)為在商業(yè)領(lǐng)域Zend和PHPStorm比NuSphere更加的優(yōu)雅,擁有更好的客戶支持,更好的文檔以及發(fā)布管理。
要了解更多關(guān)于NuSphere請(qǐng)參考 - nusphere.com.
CodeLobster
有另一款物美價(jià)廉的產(chǎn)品叫做CodeLobster與NuSphere可以說是勢(shì)均力敵。在最近的更新中, CodeLobster走的很激進(jìn), 目前它幾乎支持了所有的PHP產(chǎn)品包括Twig templates, Drupal, Joomla, wordpress, Yii, Symfony, Laravel, AngularJs, jQuery, Phalcon, smarty, CodeIgniter, CakePHP 以及nodejs。
要了解更多關(guān)于NuSphere請(qǐng)參考 - codelobster.com.
9.PHP Designer
PHP Designer是另一個(gè)好用的IDE,它能幫助我們加快web開發(fā)的工作流程,并提供了對(duì)PHP、JavaScript、CSS和HTML的內(nèi)置支持。該P(yáng)HP IDE僅供Windows用戶使用,如果你使用的是Mac、Linux這類的操作系統(tǒng),就忽略它吧。
要閱讀更多有關(guān)PHP Designer的內(nèi)容可訪問PHP Designer。
10.Cloud9-最好的PHP云IDE
Cloud 9是一個(gè)支持幾乎所有編程語言的云IDE。在基于云的編程環(huán)境中,沒有任何一個(gè)云IDE能在功能和知名度方面和Cloud9相媲美。它提供了內(nèi)置的PHP調(diào)試器,可用來進(jìn)行實(shí)時(shí)的代碼檢查。
開始時(shí),你可以使用其免費(fèi)版本,在該版本中,你能獲得一個(gè)免費(fèi)的公共空間和免費(fèi)的私有空間,如要進(jìn)一步學(xué)習(xí),就要購買一個(gè)Cloud9的商業(yè)版。
要閱讀更過有關(guān)Cloud9的內(nèi)容可訪問cloud9。
結(jié) 論
PHP是web開發(fā)所使用的最流行、最全面的編程語言,從一開始就有很多PHP IDE可以使用,發(fā)展到今天,程序設(shè)計(jì)方法和PHP IDE都有了翻天覆地的變化。
本文中提到的大部分IDE都有各自不同的特點(diǎn),但共同的目標(biāo)是加快web開發(fā)的進(jìn)度,并使得代碼可管理和可擴(kuò)展。仔細(xì)看一看,文中列出了一些你的關(guān)鍵需求,你可以從中選擇最適合你的需求,肯定至少有一個(gè)優(yōu)秀的Linux系統(tǒng)下的PHP IDE、Mac系統(tǒng)下的PHP IDE和Windows系統(tǒng)下的PHP IDE。
通過你的評(píng)論,讓我們了解你在PHP編程中的體驗(yàn)和適合你的最佳PHP IDE。
http://www.phpjiami.com/
據(jù)說“加密效果同行最高”?
到 http://www.phpjiami.com/phpjiami.html 隨意上傳一個(gè) php 文件,然后下載加密后的文件,這就是我們要解密的文件。
先看看加密后的文件
可以看出這是一個(gè)正常的 php 文件,只不過所有的變量名都是亂碼,還真虧了 php 引擎支持任意字符集的變量名,這個(gè)加密后的文件變量名的字節(jié)部都在 ASCII 范圍以外,全是 0x80以上的字符。
我們看到中間有一個(gè) php 代碼段結(jié)束標(biāo)簽 ?>,而他的前面還有一個(gè) return $xxx;來結(jié)束腳本運(yùn)行,這說明結(jié)束標(biāo)簽后面的數(shù)據(jù)都不會(huì)被正常輸出,后面極可能是源文件加密后的數(shù)據(jù),而前面的 php 代碼只是用來解密的。
這里使用的 IDE 是 VSCode(最開始我使用的是 PHPStorm,后來我發(fā)現(xiàn) VSCode的效果更好)。首先,安裝 PHP Debug 插件。
然后,按照 https://xdebug.org/docs/install 的說明安裝 XDebug插件。
注意:運(yùn)行未知的 php 代碼還是很危險(xiǎn)的,最好能在虛擬機(jī)上運(yùn)行,真機(jī)上一定要保證你的 XDebug和 PHP Debug調(diào)試插件可以正常下斷點(diǎn)。斷開網(wǎng)絡(luò)。最好同時(shí)打開任務(wù)管理器,一旦發(fā)生未知現(xiàn)象(比如 CPU 占用率或磁盤占用率),或者調(diào)試斷點(diǎn)沒斷下來,或者出現(xiàn)某些問題,立刻結(jié)束 php 進(jìn)程。
代碼格式化
這個(gè)代碼太亂了,我們需要格式化一下代碼。
最開始我用的是 PHPStorm 自帶的代碼格式化,格式化之后數(shù)據(jù)變了,PHPStorm 對(duì)未知字符集的支持還是比較差的。
然后我就想對(duì) php 文件的 AST (Abstract Syntax Tree 抽象語法樹)進(jìn)行分析,看能不能順便把變量名都改成可顯示字符。后來想想似乎不行,因?yàn)檫@種代碼肯定是帶 eval 的,改了變量名之后,eval 的字符串中的變量名就對(duì)應(yīng)不上了。
我找到了這個(gè)工具:https://github.com/nikic/PHP-Parser
首先 composer require nikic/php-parser。
然后將下列代碼保存到一個(gè)文件中(比如 format.php),讀取下載下來的 1.php,把格式化之后的代碼寫入 2.php。
然后,執(zhí)行 php format.php。
使用這個(gè)方法格式化的 php 文件內(nèi)容并沒有被損壞,我們可以繼續(xù)分析了。
如果,還不行,那就只能用十六進(jìn)制編輯器查找 ; 和 } 手動(dòng)替換了,添加 \r\n 了。
最前面這兩行我們得先注釋掉,不然出了什么錯(cuò)誤的話會(huì)莫名其妙的。
error_reporting(0);
ini_set("display_errors", 0);
保存。然后完蛋了,代碼又亂了。
我們需要一個(gè)支持非可顯示字符的編輯器,或者...更改顯示編碼,選擇一個(gè)不是多字節(jié)的字符集,比如 Western (ISO 8859-1)
現(xiàn)在,開始我們的調(diào)試。
在第一行下斷點(diǎn)。執(zhí)行 php 2.php運(yùn)行程序。然后單步調(diào)試,一邊執(zhí)行,一邊注意變量的值,分析函數(shù)的執(zhí)行流程。
使用 VSCode的調(diào)試功能,我們可以方便的查看變量的具體內(nèi)容。
單步調(diào)試到這一行,似乎有些不對(duì)勁。
php_sapi_name()=='cli' ? die() : '';
我們用命令行運(yùn)行的,所以執(zhí)行完這一句,肯定程序就結(jié)束了。
那就讓他結(jié)束吧,我們把這一行注釋掉,在他下面下斷點(diǎn)。重新運(yùn)行程序。
下面這行是就是讀取當(dāng)前文件,這句話沒有什么問題。
$f=file_get_contents(constant('rnfzwpch'));
然后就又是驗(yàn)證運(yùn)行環(huán)境。
if(!isset($_SERVER['HTTP_HOST']) !isset($_SERVER['SERVER_ADDR']) && !isset($_SERVER['REMOTE_ADDR'])) {
die();
}
注釋掉,保存,重新運(yùn)行。
當(dāng)然,也可以通過調(diào)試控制臺(tái),執(zhí)行類似 $_SERVER['HTTP_HOST']='127.0.0.1'; 這類指令,來讓驗(yàn)證通過。
再看下面的代碼,我想到 exe 反調(diào)試了,不得不佩服想這個(gè)方法的人。防止下斷點(diǎn)調(diào)試的,如果下斷點(diǎn)調(diào)試,這里就超過 100 毫秒了。
$t=microtime(true) * 1000;eval("");if (microtime(true) * 1000 - $t > 100) {
die();
}
我們直接在這條語句之后下斷點(diǎn),讓他們一連串執(zhí)行完,這樣就不會(huì)超過 100 毫秒了。當(dāng)然,直接注釋掉是最粗暴的方法。
下面的 eval我們需要通過“單步進(jìn)入”來研究,不過結(jié)果是對(duì)我們的影響不大,當(dāng)然注釋掉也沒問題。
接下來這個(gè)就是校驗(yàn)數(shù)據(jù)完整性的了
!strpos(decode_func(substr($f, -45, -1)), md5(substr($f, 0, -46))) ? $undefined1() : $undefined2;
這里的$undefined1和 $undefined2都沒有定義。如果驗(yàn)證失敗,就會(huì)調(diào)用 $undefined1會(huì)直接 Error退出程序。而如果驗(yàn)證成功,雖然 $undefined2變量不存在,但是只是一個(gè) Warning,并沒有太大問題。decode_func就是文件中最后一個(gè)函數(shù),專門負(fù)責(zé)字符串解碼的。
這個(gè)驗(yàn)證方法就是把文件尾部分解密和前面的文件主體部分的 md5 對(duì)比,這次執(zhí)行肯定又不能通過。
退出程序,注釋掉,再重新運(yùn)行。
$decrypted=str_rot13(@gzuncompress(decode_func(substr($f, -2358, -46))));
我們找到了這個(gè)解碼的關(guān)鍵語句了,可以看到解密之后的代碼已經(jīng)出來了。
到了代碼的最后,終于要執(zhí)行腳本了。
$f_varname='_f_';$decrypted=check_and_decrypt(${$f_varname});
set_include_path(dirname(${$f_varname}));$base64_encoded_decrypted=base64_encode($decrypted);$eval_string='eval(base64_decode($base64_encoded_decrypted));';$result=eval($eval_string);
set_include_path(dirname(${$f_varname}));return $result;
折騰了半天,還是 eval語句。如何把內(nèi)容輸出呢。直接在 $decrypted后面加上一行 file_put_contents就可以了。
我們可以繼續(xù)分析一下他的解密算法
算法是固定的,只是其中內(nèi)聯(lián)了一個(gè)秘鑰,我們只要通過字符串函數(shù)截取出這個(gè)秘鑰就可以了。
這個(gè)程序可以解密此網(wǎng)站全部免費(fèi)加密的代碼。
使用方法:php decrypt.php 1.php
php 這種動(dòng)態(tài)解釋語言還想加密?做夢(mèng)去吧。不過混淆還是有可能的。
這個(gè)代碼中的暗樁挺有意思,算是學(xué)到了點(diǎn)知識(shí)。
php 這種東西為什么要加密?php 的開源社區(qū)多么龐大。
代碼賞析
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。