亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 10071 | 回復(fù): 14
打印 上一主題 下一主題

perl程序加密,參考哪些書? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-08-23 16:10 |只看該作者 |倒序瀏覽
對perl程序加密參考那些書比較好啊

論壇徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大;照
日期:2013-04-17 11:46:39
2 [報告]
發(fā)表于 2012-08-23 16:53 |只看該作者
呵呵,我也想知道...

論壇徽章:
0
3 [報告]
發(fā)表于 2012-08-24 11:35 |只看該作者
輕易南村 發(fā)表于 2012-08-23 16:10
對perl程序加密參考那些書比較好啊


perl其實不太適合搞成加密的,加密了也能破解。
考慮下c java這些,甚至PHP也能加密(zend optimizer)。

論壇徽章:
1
獅子座
日期:2013-12-16 16:09:24
4 [報告]
發(fā)表于 2012-08-24 22:00 |只看該作者
回復(fù) 3# 蘭花仙子


    eyedrops 可以破解么?

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
5 [報告]
發(fā)表于 2012-08-24 22:20 |只看該作者
ttcn_cu 發(fā)表于 2012-08-24 22:00
回復(fù) 3# 蘭花仙子


是那個 Acme::EyeDrops 嗎? perl -MO=Deparse 下就出來了,這個級別也太弱了

論壇徽章:
1
獅子座
日期:2013-12-16 16:09:24
6 [報告]
發(fā)表于 2012-08-25 02:09 |只看該作者
回復(fù) 5# zhlong8


     Acme::Bleach 這個能頂住perl -MO=Deparse了吧,如何破解?

論壇徽章:
1
獅子座
日期:2013-12-16 16:09:24
7 [報告]
發(fā)表于 2012-08-25 20:44 |只看該作者
回復(fù) 5# zhlong8


研究了下Acme:oubleHelix  Acme::Bleach, 發(fā)現(xiàn)他們的算法都是固定的,只要修改模塊,就可以把執(zhí)行改成輸出源代碼了。
加密的原理是使用自己的算法,又不能讓其他人看到你的算法,那么似乎只有自己用C寫了,搜了下,發(fā)現(xiàn)下面的文章解釋的很清楚了。。。不知@zhlong8 是否同意。





http://72891.cn/thread-805076-1-1.html

http://www.linuxforum.net/forum/ ... osts&Main=43938
   


一次用C語言寫source filter的成功嘗試


    目前互聯(lián)網(wǎng)企業(yè)大量的Web開發(fā)還是用CGI來實現(xiàn)的,而做CGI的最佳語言首推Perl。
但是用Perl做CGI有一個問題,就是程序以源碼形式保存,很容易被別人獲得。尤其在
做外包的工程時,如果對代碼完全不加保護,首先是使別人輕易得到你研究了很長時間
的技術(shù),想想看,如果買家直接把你的代碼賣給別人,你的感覺會如何?更嚴重的是當(dāng)
你做外包工程的有些代碼也是你自己站點正在使用的代碼時,如果讓別人得到代碼并加
以研究,對于自己網(wǎng)站會造成巨大的安全威脅。


    解決這個問題的辦法就是把代碼隱藏起來。隱藏代碼的方法有很多種,但必須保證
隱藏的代碼仍是可執(zhí)行的。最直接的方法是使用一個Perl編譯器,把代碼編譯成二進制
文件。目前可以獲得的Perl編譯器有兩種:


商業(yè)版的Perl2Exe
http://www.indigostar.com/perl2exe.htm
Perl2Exe有多種平臺的版本,包括Linux平臺,各種平臺都有Demo版可以下載。問題是
使用Demo版的Perl2Exe編譯過的Perl程序執(zhí)行后要顯示一段版權(quán)信息,并延遲幾秒后才
退出,因此不能滿足我們對程序性能的要求。


Perl標(biāo)準(zhǔn)發(fā)布(5.005以上版本)中帶的Perl編譯器perlcc
目前大部分的Linux發(fā)布中的Perl都是Perl 5.005,而不是最新的Perl 5.6/5.7,5.005
版中的Perl編譯器還很不成熟,編譯簡單的程序還可以,復(fù)雜一點的程序編譯就會出錯,
哪怕程序的語法完全正確。而且關(guān)于perlcc的文檔非常少,出了錯也不容易解決。




    所以,使用Perl編譯器目前還有很多實施上的困難。第二種隱藏代碼方法是寫
source filter(源碼過濾器)。source filter的工作過程很象C語言的預(yù)編譯器,它把讀
到的源碼加以某種處理后再送給Perl解析器。這樣你就可以把源碼加密,然后通過一個
source filter解密源碼并執(zhí)行。其實設(shè)計source filter起初的目的就是為了加密源碼,
不過它還能做很多其它的事情,可以說是神通廣大。


    OK,下面進入正式的議題:怎樣寫一個source filter?


首先,要到CPAN上下載一個叫做filter的模塊,目前最新的版本是1.19版。然后
tar zxvf filter-1.19.tar.gz
cd filter-1.19
perl Makefile.PL
make
make test
make install


其中decrypt目錄下是用C語言寫source filter的一個例子。有兩個程序:
encrypt:用Perl語言寫的加密程序
decrypt.xs:用C語言(更確切地說是用Perl語言和C語言的接口----XS語言)寫的
source filter。
這兩個程序就是我們的起點了。


可以試試這個source filter,先隨便編輯一個諸如打印“hello,world”的程序,取名叫
test.pl,然后
perl encrypt test.pl
現(xiàn)在再看看這個程序
vi test.pl
是不是有些不同了,它已經(jīng)被加密過了!
執(zhí)行這個加密過的程序
perl test.pl
是不是打印出了“hello,world”?


    如果上面一切順利,先別急著hack源碼,你還需要一些學(xué)習(xí),先仔細看看filter帶的
文檔
perldoc perlfilter.pod
也可以將其轉(zhuǎn)為html格式
pod2html --outfile perlfilter.html perlfilter.pod


看了這個文檔,你可以知道寫source filter有三種方法:
1、用C語言寫source filter。
2、用獨立的可執(zhí)行文件做source filter。
3、用Perl語言寫source filter。


    并且知道怎樣用Perl語言寫source filter,如果真想用Perl寫source filter,還可
以看看Call目錄下的Call.pm中帶的文檔
perldoc Call.pm


    看了Call.pm中的文檔,你會知道用Perl寫source filter其實是一件非常容易的事。
不過我認為最安全的還是用C語言來寫source filter。想想看,當(dāng)做外包的工程時,如果
用Perl寫source filter,source filter本身總不能加密吧?


    不過,用C語言寫source filter可就不太容易了,你至少要看過perlguts、perlxs的
文檔,會用C語言寫Perl extension,還要懂得source filter hooks。有一大堆的概念需
要理解。


    那么,現(xiàn)在該做些什么呢?可以立刻找這些文檔來看,看過了再繼續(xù)下面的步驟。也
可以先跟著我走,把howto里的步驟都做完,不過以后可別忘了看perlguts、perlxs、
perlXStut的文檔。這些文檔都可以在Perl標(biāo)準(zhǔn)發(fā)布里找到。雖然不太容易看懂,但相信我
,你所付出的汗水必將得到回報。


    如果你已經(jīng)有了perlguts和perlxs的知識,現(xiàn)在可以返回來再看看那個用C(XS)語言寫
的source filter。老實說,就算我看完了perlguts、perlxs和filter模塊帶的文檔,我還
是不太清楚怎樣完全從頭用C語言寫一個source filter。好在decrypt下的程序就是為了給
想用C語言寫source filter的人當(dāng)作一個模板來用的。我們所要做的只是把encrypt和
decrypt.xs中過于簡單的加密/解密算法換成另外一個穩(wěn)妥的算法。下面就是我這幾天嘗試
的經(jīng)過:


    看看decrypt下decrypt.pm中的文檔,我知道了要想最大限度確保加密過的程序不被解
密,需要做到六件事:


1、將Perl二進制文件(就是perl)中的所有符號剝掉(strip)。(好象就是用一個叫做strip
的程序)。
2、將source filter與perl靜態(tài)鏈接,因為如果source filter為動態(tài)鏈接庫(*.so),別人
可以將其鏈接到一個經(jīng)過修改的perl而得到解密后的源碼。但是這樣你就必須自己編譯
perl(可參考Perl源碼中帶的Install文件),而且如果使用靜態(tài)鏈接的perl,安裝新的模塊
可能也會有問題,是不是每加一個新模塊都要重新編譯一次perl呢?
(關(guān)于編譯perl使用靜態(tài)鏈接,以及靜態(tài)鏈接的perl怎樣安裝新模塊,我沒有什么經(jīng)驗,希
望各位網(wǎng)友指教。)
3、編譯Perl源碼時不要使用-DDEBUGGING編譯選項,如果使用了這個編譯選項,別人可以
使用-Dp命令行選項調(diào)用perl而得到解密過的程序。
4、編譯Perl源碼時不要使用編譯器的調(diào)試選項。(比如gcc -g ...)
5、不要將source filter實現(xiàn)為一個子進程。也就是不要用第二種方法寫source filter。
如果source filter為一單獨的進程,它與perl進程間通信采用管道方式,別人可以寫一個
程序偷窺(peek)管道中的信息,從而得到解密過的源碼。
6、不要就這樣使用這個程序,因為這個程序只是當(dāng)作一個模板來用的,其中的算法太簡單
了。


    知道了這些,我現(xiàn)在要做的就是找一個好的加密算法。我在網(wǎng)上找了半天,終于找到
了一個叫做IDEA算法的源碼。可以從這里下載:
http://pcwinner.heha.net/source/download/algo/idea.V1.1.tar.gz


看了一本關(guān)于網(wǎng)絡(luò)安全的書上的介紹,這個IDEA算法有以下的優(yōu)點:
1、IDEA正在得到全世界的廣泛接受,而且認為是比DES更好的選擇。
2、加密速率很高,可以在177MB/s的芯片上實現(xiàn)加密。
3、算法可以公開得到,并且容易實現(xiàn)。它已經(jīng)被注冊,以作為電子商務(wù)的合適選擇。
4、它可以在全世界范圍內(nèi)出口與使用。


作者還說:“到本文寫作時(1997年)為止,還沒有人能夠成功地攻擊IDEA。蠻力攻擊也試
過了,但是由于密鑰長度已經(jīng)擴展到了128位,據(jù)估計即使每秒試10億個密鑰,實驗10億
年也無法找到密鑰。因此,蠻力攻擊對IDEA并不構(gòu)成威脅。”(蠻力攻擊是可以攻破DES的)


并且我還知道,目前廣泛使用的加密軟件----PGP中對于數(shù)據(jù)本身使用的加密算法正是IDEA。
好了,既然這么牛,那就用它吧。


    有了源碼,先試試能不能用,我成功地編譯了源碼(將Makefile中的CC定義為gcc,然
后make),然后加密和解密了幾個文件,一切都很正常。


    現(xiàn)在我們先要做一個加密程序,這個很容易,把idea.c和idea_cmd.c合二為一,稍加
改動,加密程序就寫好了。


    然后再寫一個source filter。這可以通過把加密程序(加密程序就是解密程序,只是
選項不同而已)的源碼拷到decrypt.xs中然后換掉decrypt.xs中的算法來實現(xiàn),不過必須解
決兩個問題:
1、由于原來的加密程序的輸入/輸出都是對文件操作,而source filter的輸入/輸出都是
緩沖區(qū),并且建立臨時文件也不安全。所以加密程序的源碼加入decrypt.xs前先要改成輸
入/輸出都是對緩沖區(qū)操作。
2、原來decrypt.xs中的算法由于解密的數(shù)據(jù)和原數(shù)據(jù)等長,所以它每次從原數(shù)據(jù)中讀一塊
數(shù)據(jù),解密后輸出,然后再讀下一塊數(shù)據(jù)。而IDEA是不等長加密算法,所以必須一次把要
解密的數(shù)據(jù)全部讀到,作為整體解密后一次輸出。這樣做可能速度較快,但是需要建立很
大的緩沖區(qū),以便能夠容納加密過的Perl程序的所有數(shù)據(jù)。(加密過的Perl程序會比加密前
長很多)


    經(jīng)過一番努力,我成功地解決了以上兩個問題。只對decrypt.xs的源碼做了最低限度
的修改(因為很多代碼我還沒有完全看懂),實現(xiàn)了我所想要的source filter。


    用新的decrypt.xs換掉filter模塊中的decrypt.xs,然后重新安裝filter模塊,以使
新的source filter生效。


    我寫好的加密程序和source filter的源碼帖在另一個帖子里。


用法:./encrypt infile outfile
例如:./encrypt test.pl testnew.pl
如果source filter已經(jīng)安裝好,執(zhí)行加密過的程序
perl testnew.pl


    如果一切順利,那你就放心用吧,IDEA是足夠堅固的。你所需要做的只是修改源程序中
的加密選項和密鑰,建議采用128位(16字節(jié))的密鑰。算法及其選項的含義請看idea源碼
帶的文檔idea_cmd.txt。


that's all


歡迎各位網(wǎng)友指教
請發(fā)至我的郵箱:unruly_wind@163.net


祝各位工作愉快!

論壇徽章:
46
15-16賽季CBA聯(lián)賽之四川
日期:2018-03-27 11:59:132015年亞洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49雙魚座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亞冠之布里斯班獅吼
日期:2015-07-13 10:44:56
8 [報告]
發(fā)表于 2012-08-25 21:54 |只看該作者
ttcn_cu 發(fā)表于 2012-08-25 20:44
回復(fù) 5# zhlong8


source filter 本身只不過是讀取代碼時加了一層,解釋器還是要看到最終源代碼的,所以作者試圖堵住所有執(zhí)行自己的 XS 擴展的機會,這方面我懂的不多不知道他堵全了沒,但只要知道當(dāng)前解釋器的地址或者函數(shù)的地址即使用純 Perl(用 unpack)也可以 deparse 出來

論壇徽章:
1
獅子座
日期:2013-12-16 16:09:24
9 [報告]
發(fā)表于 2012-08-25 22:48 |只看該作者
回復(fù) 8# zhlong8


    大體了解了。。。結(jié)合你的解釋,我有這么一個思路


核心算法用C實現(xiàn),寫成XS
perl控制些流程,預(yù)處理文本
最后 staticperl + filter 加密的perl腳本 + XS link在一塊。

論壇徽章:
2
CU大;照
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
10 [報告]
發(fā)表于 2012-08-25 23:19 |只看該作者
防止perl源碼泄露,不知道有哪些招數(shù)?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP