這篇文章主要為大家展示了“如何實(shí)現(xiàn)Java程序的反加密”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何實(shí)現(xiàn)Java程序的反加密”這篇文章吧。
創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供山南企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為山南眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。首先我們來(lái)看看Java程序的反加密,也就是通常所說(shuō)的Crack過(guò)程,只有明白了這個(gè)過(guò)程,我們才能有效的對(duì)我們的程序進(jìn)行加密。
通常我們得到的Java程序的Crack包有兩種,一種屬于KeyGen(注冊(cè)碼生成器)、一種屬于替換修改;
我們先看第一種,當(dāng)我們找到一個(gè)應(yīng)用程序的KeyGen的時(shí)候我們總是很佩服那個(gè)做出KeyGen的人,覺(jué)得他很厲害,但是你仔細(xì)分析一下,為什么他能做出KeyGen呢?只有
他對(duì)這個(gè)Java程序的加密算法了解的非常清楚;這種人有哪些呢?一個(gè)是那個(gè)公司里面的人,那不可能,除非內(nèi)訌,還又呢,就是猜想,反推,這個(gè)可能嗎?呵呵,更不可能,那這個(gè)算法從哪里來(lái)呢?呵呵,往往泄漏秘密的就是秘密本身……回過(guò)頭來(lái)想想,Java應(yīng)用程序怎么知道你輸入的注冊(cè)碼是否正確呢?呵呵,那你就該從應(yīng)用程序入手……
得到的它的加密算法,自然KeyGen就不在話(huà)下了……(但是這也有列外,如果它是用的公鑰秘鑰對(duì)加密的,就沒(méi)有辦法嘍,只能用第二種方法。)
這種辦法只適合對(duì)付只要一個(gè)注冊(cè)號(hào),別的什么都不要的情況,經(jīng)典代表Borland JBuilder & Optimizeit Suite
再看第二種,為什么要用替換修改?我們是修改了那部分呢?不用想,肯定是License驗(yàn)證的部分,為什么我們不像上面的方法那樣找加密算法呢?原因有兩種:(1)使用上面的辦法搞不定;(2)Java程序不僅要Key,還有其他的License配置;遇到這種情況,我們只要找到用于License驗(yàn)證的類(lèi),進(jìn)行修改替換就行了。
這種辦法使用于任何情況,經(jīng)典代表BEA WebLogic
經(jīng)過(guò)上面的分析,我們的問(wèn)題就集中了,關(guān)鍵就是怎么找到用于License驗(yàn)證的部分或加密算法的部分,我們需要3個(gè)工具:一個(gè)是Sun公司提供的標(biāo)準(zhǔn)JVM:),一個(gè)是你
的耐心和細(xì)心:),一個(gè)是Jad(經(jīng)典Java反編譯工具)。
第一步是定位,這也是最關(guān)鍵的一步,我們這里以Together For JBuilder Edition為例,啟動(dòng)Together,先看看長(zhǎng)什么樣子?喔,上來(lái)就問(wèn)我要License;Ok,
每關(guān)系,退出;找到Together的啟動(dòng)Bat文件,找到它的啟動(dòng)命令:java .....,OK,在Java啟動(dòng)的時(shí)候給一個(gè)參數(shù):“ -Xrunhprof:cpu=times”,保存,在啟動(dòng),還是要
License,退出,這個(gè)時(shí)候,我們可以發(fā)現(xiàn),在這個(gè)目錄下多了一個(gè)“java.hprof.txt”文件,打開(kāi)一看,就是我要的JVM的Dump文件,好多內(nèi)容啊,沒(méi)關(guān)系,慢慢看來(lái)。
我們可以看見(jiàn)這個(gè)文件里面有好多熟悉的東西?。簀ava.*/com.sun.*/javax.*等等,但這個(gè)不是我們關(guān)心的,我們要的是 com.togethersoft.*或者是一些沒(méi)有包名的zd.d等等。(這里插一句,幾乎所有的Java應(yīng)用程序都會(huì)混淆的,其實(shí)混淆的原理也很簡(jiǎn)單,我們后面再說(shuō)。)先找找有沒(méi)有License有關(guān)的,Serach一下,嘿嘿,果然,474行: com.togethersoft.together.impl.ide.license.LicenseSetup.execute([DashoPro-V2-050200]:Unknown line),Ok上那堆classpath中的Jar包里面找一下吧(推薦用WinRAR),找到了之后用Jad反編譯,一看,這個(gè)沒(méi)有混淆,但是用了一個(gè)zae的類(lèi),這個(gè)看名字就知道混淆過(guò)了,先不理它,再看看下面一句IdeLicenseAccess.setLicense(zae1),Ok接著找到 IdeLicenseAccess,哈哈,就這點(diǎn)名堂,所有的License驗(yàn)證都是走的這個(gè)類(lèi),面向?qū)ο蟮乃枷氩诲e(cuò),呵呵:)
定位定完了,接下來(lái)的事情就是按猜想的方法修改這兩個(gè)類(lèi),屏蔽掉LicenseSetup里面execute方法的實(shí)際內(nèi)容,修改 IdeLicenseAccess,讓多有的驗(yàn)證都返回true,然后編譯,替換;不要高興太早,這還沒(méi)有完呢,要有責(zé)任心!!啟動(dòng)Together,果然,這下不要License了,有啟動(dòng)畫(huà)面,進(jìn)去了,但是一片灰色,怎么回事,一看控制臺(tái),一堆錯(cuò),沒(méi)關(guān)系,就怕不出錯(cuò),查找根源,還有一個(gè) IdeLicenseUtil類(lèi)出了問(wèn)題,再反編譯,修改,替換;這下搞定了。再啟動(dòng),測(cè)試一下,OK。
就這樣,一個(gè)Java應(yīng)用程序搞定了??纯雌鋵?shí)也很簡(jiǎn)單。
再來(lái)說(shuō)說(shuō)混淆,大家可能都知道沒(méi)有經(jīng)過(guò)混淆的Java的Class反編譯回來(lái)連方法和變量的名字都不會(huì)變,這是什么原因呢?這就要追述到Class文件的結(jié)構(gòu)了,簡(jiǎn)單來(lái)說(shuō),Class文件種包含又一個(gè)常數(shù)池(constant pool)這個(gè)里面就存放了變量和方法的名稱(chēng)等一下和Class相關(guān)的東西,我們通常所說(shuō)的混淆就是用一種工具把這個(gè)常數(shù)池里面的東東弄的胡涂一點(diǎn),這樣就能騙過(guò)反編譯器和你,呵呵:)這就是為什么有時(shí)候反編譯回來(lái)的東西編譯不過(guò)去的原因。
以上是“如何實(shí)現(xiàn)Java程序的反加密”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
網(wǎng)站欄目:如何實(shí)現(xiàn)Java程序的反加密-創(chuàng)新互聯(lián)
新聞來(lái)源:http://www.rwnh.cn/article34/ccgppe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站排名、Google、微信公眾號(hào)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容