整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          PhpStorm配置less自動(dòng)編譯css

          PhpStorm配置less自動(dòng)編譯css

          PhpStorm配置less自動(dòng)編譯css



          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è)試;

          第一步:安裝nodejs

          點(diǎn)此nodejs下載,找到自己對(duì)應(yīng)的版本;

          點(diǎn)擊下載;

          按照提示一步一步安裝即可;

          第二步:npm安裝less

          在終端運(yùn)行:

          ps:以上命令操作你都可以在less中文網(wǎng)中找得到

          然后重啟編輯器;

          如果不能正常運(yùn)行以下步驟,那就重啟電腦;

          第三步:修改phpstorm配置

          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)鍵功能包括-

          • 在驗(yàn)證、索引和搜索PHP code方面性能更好。
          • 使用Zend Debugger、Xdebug和內(nèi)置的Z-Ray工具進(jìn)行調(diào)試。
          • 支持Eclipse插件生態(tài)系統(tǒng)。
          • 支持Docker和Git流。
          • 支持PHP、Javascript,、CSS和HTML的智能代碼編輯。
          • 部署支持,包括提供了對(duì)Microsoft Azure和Amazon AWS的云支持。
          • 集成了Zend server,有助于PHP7的快速遷移和無縫連接。

          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。

          驗(yàn)樣本


          http://www.phpjiami.com/

          據(jù)說“加密效果同行最高”?

          到 http://www.phpjiami.com/phpjiami.html 隨意上傳一個(gè) php 文件,然后下載加密后的文件,這就是我們要解密的文件。

          簡(jiǎn)單分析一下


          先看看加密后的文件

          可以看出這是一個(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 代碼只是用來解密的。

          調(diào)試之前的準(zhǔn)備


          這里使用的 IDE 是 VSCode(最開始我使用的是 PHPStorm,后來我發(fā)現(xiàn) VSCode的效果更好)。首先,安裝 PHP Debug 插件。

          然后,按照 https://xdebug.org/docs/install 的說明安裝 XDebug插件。

          注意:運(yùn)行未知的 php 代碼還是很危險(xiǎn)的,最好能在虛擬機(jī)上運(yùn)行,真機(jī)上一定要保證你的 XDebugPHP Debug調(diào)試插件可以正常下斷點(diǎn)。斷開網(wǎng)絡(luò)。最好同時(shí)打開任務(wù)管理器,一旦發(fā)生未知現(xiàn)象(比如 CPU 占用率或磁盤占用率),或者調(diào)試斷點(diǎn)沒斷下來,或者出現(xiàn)某些問題,立刻結(jié)束 php 進(jìn)程。

          開始調(diào)試


          代碼格式化

          這個(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 了。

          調(diào)試


          最前面這兩行我們得先注釋掉,不然出了什么錯(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

          總結(jié)

          • php 這種動(dòng)態(tài)解釋語言還想加密?做夢(mèng)去吧。不過混淆還是有可能的。

          • 這個(gè)代碼中的暗樁挺有意思,算是學(xué)到了點(diǎn)知識(shí)。

          • php 這種東西為什么要加密?php 的開源社區(qū)多么龐大。

          附錄

          代碼賞析


          主站蜘蛛池模板: 91一区二区视频| 国产一区二区草草影院| 国产精品盗摄一区二区在线| 日韩一区二区三区电影在线观看 | 国产亚洲综合一区二区三区| 福利一区国产原创多挂探花| 国精产品一区二区三区糖心 | 波多野结衣AV一区二区三区中文| 午夜在线视频一区二区三区 | 一本一道波多野结衣一区| 国产伦精品一区二区三区在线观看| 一区二区三区在线| 亚洲av成人一区二区三区观看在线| 影院无码人妻精品一区二区| 亚洲一区二区三区国产精华液| 国产精品成人国产乱一区| AV天堂午夜精品一区二区三区| 无码精品人妻一区二区三区中 | 欧亚精品一区三区免费| 亚洲一区二区久久| 日本免费电影一区二区| 激情内射亚州一区二区三区爱妻| 性盈盈影院免费视频观看在线一区| 色老头在线一区二区三区| 日韩有码一区二区| 国产在线精品一区二区| 日韩一区二区a片免费观看| 精品国产伦一区二区三区在线观看| 农村人乱弄一区二区| 人妻免费一区二区三区最新| 亚洲AV无码一区二三区| 亚洲AV无码一区二三区| 无码AV一区二区三区无码| 国产一区二区在线观看麻豆| 精品国产一区二区三区久 | 中文字幕人妻无码一区二区三区| 亚洲人AV永久一区二区三区久久| 国产人妖视频一区在线观看| 日韩精品一区二区三区中文3d | 在线精品自拍亚洲第一区| 亚洲AV网一区二区三区|