<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    GalaxyPilot —— D.S


            生命不熄,戰(zhàn)斗不止
    數(shù)據(jù)加載中……

    JProfiler 4.2 注冊(cè)分析

    JProfiler?4.2?注冊(cè)分析

    作者:舵手
    申明:如轉(zhuǎn)載請(qǐng)保證文章的完整性以及出處

    摘要:JProfiler是一款Java剖析器。JProfiler直觀的用戶界面能夠幫助你找到性能瓶頸,并指明你的內(nèi)存漏洞和解決線程問題。

    ????JProfiler是通過EXE來執(zhí)行,用十六進(jìn)制編輯器很容易找到程序的入口類:com.jprofiler.frontend.FrontendApplication?如果你要通過命令行運(yùn)行,得看看這個(gè)類的main方法,它需要兩個(gè)參數(shù)才能運(yùn)行。簡(jiǎn)單分析了一下該類,發(fā)現(xiàn)方法H完成了注冊(cè)碼的驗(yàn)證,讓我們順藤摸瓜找到計(jì)算注冊(cè)碼的位置。

    ????public?boolean?H()
    ????{
    ????????E?e1?=?com.jprofiler.frontend.E.H.A3().A2();
    ??//由于代碼經(jīng)過了混淆,以E命名的類有n多,所以千萬要找正確,否則會(huì)浪費(fèi)你的保寶貴時(shí)間
    ??//com.jprofiler.frontend.E.D.E——E的完整類路徑
    ????????int?i1?=?e1.A(null,?this);
    ????????switch(i1)
    ????????{
    ????????case?-2:?
    ????????????if(l())
    ????????????{
    ????????????????System.err.println("Your?license?key?has?expired.");
    ????????????????return?false;
    ????????????}
    ????????????int?j1?=?A(p,?"Your?license?key?has?expired.\nIf?you?were?not?able?to?evaluate?JProfiler,?
    please\nrequest?a?new?key?at?"?+?L(),?new?String[]?{
    ????????????????"Enter?new?key",?"Send?mail"
    ????????????},?0);
    ????????????if(j1?==?1)
    ????????????{
    ????????????????O();
    ????????????????return?false;
    ????????????}
    ????????????if(!A(((String)?(null)),?true))
    ????????????????return?false;
    ????????????break;

    ????????case?-1:?
    ????????????break;

    ????????case?-3:?
    ????????????if(!A("Your?license?key?is?invalid.?Please?check?your?key.",?true))
    ????????????????return?false;
    ????????????break;

    ????????case?-5:?
    ????????????if(!A("There?was?an?error?communicating?with?the?license?server.\n
    Please?check?your?license?key.",?true))
    ????????????????return?false;
    ????????????break;

    ????????case?-4:?
    ????????????if(!A("The?license?server?is?invalid.?\nPlease?check?your?license?key.",?true))
    ????????????????return?false;
    ????????????break;

    ????????case?-6:?
    ????????????A(com.jprofiler.frontend.E.D.C.B(),?false);
    ????????????return?false;

    ????????default:
    ????????????if(i1?<?0)
    ????????????????throw?new?RuntimeException("Unknown?license?status?"?+?i1);
    ????????????e1.A(i1);
    ????????????break;
    ????????}
    ????????e1.AA();
    ????????return?true;
    ????}
    ????如果讓e1.A(null,?this)返回-1,那問題就解決了。如果想暴破可以從這個(gè)方法入手,我們這里的任務(wù)是追出注冊(cè)算法:)
    ????首先我們跟進(jìn)com.jprofiler.frontend.E.H.A3().A2();這兩個(gè)方法,發(fā)現(xiàn)只是對(duì)類做一些初始化,我們略過。

    ????跟進(jìn)e1.A(null,?this),它又調(diào)用了重載方法A
    ????public?int?A(String?s,?C._A?_pa)
    ????{
    ????????return?A(s,?_pa,?true);
    ????}
    ????
    ????public?int?A(String?s,?C._A?_pa,?boolean?flag)
    ????{
    ????????if(s?==?null)
    ????????????s?=?F4;?//在該類初始化時(shí)已經(jīng)給F4給了值,如果注冊(cè)文件存在,該值為注冊(cè)碼
    ????????if(flag?&&?!s.startsWith("FLOAT:")?&&?!s.startsWith("S-"))
    ????????????com.A.A.E.C.A(s,?_pa);//跟進(jìn)這里,發(fā)現(xiàn)是網(wǎng)絡(luò)驗(yàn)證,由于我訪問不了IP?228.7.6.9?所以沒有詳細(xì)分析,
    ??????//有時(shí)間了再補(bǔ)上。如果你那里通不過網(wǎng)絡(luò)驗(yàn)證,把com.A.A.E.C$_B(C的內(nèi)部類)里的IP改一下應(yīng)該就沒問題
    ??????//可別問我怎么改,十六進(jìn)制編輯器就可以了:)
    ????????return?S(s);?//我們?cè)倏催@個(gè)方法
    ????}

    ????public?int?S(String?s)
    ????{
    ????????if(s?==?null)
    ????????????s?=?F4;//在該類初始化時(shí)已經(jīng)給F4給了值,如果注冊(cè)文件存在,該值為注冊(cè)碼
    ????????if(s.startsWith("FLOAT:"))?//不知道這代表什么,直覺上不是好東西,先不進(jìn)入,直接到else
    ????????{
    ????????????String?s1?=?s.substring("FLOAT:".length());
    ????????????int?i?=?-1;
    ????????????int?j?=?s1.lastIndexOf(':');
    ????????????if(j?>?-1)
    ????????????{
    ????????????????try
    ????????????????{
    ????????????????????i?=?Integer.parseInt(s1.substring(j?+?1));
    ????????????????}
    ????????????????catch(NumberFormatException?numberformatexception)?{?}
    ????????????????s1?=?s1.substring(0,?j);
    ????????????}
    ????????????int?k?=?C3();
    ????????????int?l?=?com.A.A.E.E.A(s1,?i,?k,?C7());
    ????????????FD?=?E.C();
    ????????????D(l?>?0?||?l?==?-1);
    ????????????return?l;
    ????????}?else
    ????????{
    ????????????return?Q(s);
    ????????}
    ????}

    ????Q(s)直接調(diào)用下面方法
    ????public?static?int?G(String?s)
    ????{//s為注冊(cè)碼
    ????????if(s?==?null)
    ????????????return?-3;
    ????????s?=?s.trim();
    ????????if(s.length()?<?3?||?s.charAt(1)?!=?'-'?||?s.indexOf('#')?==?-1)//長(zhǎng)度大于3,第二位字符必須為-,必段有#
    ????????????return?-3;
    ????????switch(s.charAt(0))//取注冊(cè)碼中的第一個(gè)字符
    ????????{
    ????????case?69:?//?'E'??試用版
    ????????????int?i?=?A(s);//查檢當(dāng)前日期是否過了試用期
    ????????????if(!F(s))
    ????????????????return?-3;
    ????????????else
    ????????????????return?i;

    ????????case?65:?//?'A'
    ????????case?76:?//?'L'//這三個(gè)有什么區(qū)別還沒有搞清
    ????????case?83:?//?'S'
    ????????????return?H(s);??//讓這里返回-1
    ????????}
    ????????return?-3;
    ????}

    ????private?static?int?H(String?s)
    ????{
    ????????if(B(s)?!=?2)//license串中的"-"必須等于兩個(gè),B函數(shù)的作用是計(jì)算串中的"-"字符的個(gè)數(shù)
    ????????????return?-3;
    ????????return?F(s)???-1?:?-3;//這里F必須反回true
    ????}

    ????private?static?boolean?F(String?s)
    ????{
    ????????A?a?=?new?A(s);//傳入注冊(cè)碼,進(jìn)行截取處理
    ????????if(!a.E())
    ????????????return?false;
    ????????String?s1?=?a.A();//返回注冊(cè)碼中第二個(gè)“-”后的所有字符
    ????????String?s2?=?E(s1);//把上面得到的字符串以“#”為界分開,“#”前的給s2
    ????????String?s3?=?D(s1);//“#”后的給s3
    ????????if(s3?==?null?||?s2?==?null)
    ????????????return?false;
    ????????else
    ????????????return?A(s3,?s2,?11,?7,?29);//重點(diǎn)所在
    ????}

    ????protected?static?boolean?A(String?s,?String?s1,?int?i,?int?j,?int?k)
    ????{
    ????????char?ac[]?=?s1.toCharArray();“#”前的串轉(zhuǎn)換為char
    ????????int?l?=?0;
    ????????char?ac1[]?=?ac;
    ????????int?i1?=?ac1.length;
    ????????for(int?j1?=?0;?j1?<?i1;?j1++)
    ????????{
    ????????????char?c?=?ac1[j1];
    ????????????l?+=?c;?//累加
    ????????}

    ????????String?s2?=?String.valueOf(l?%?i)?+?String.valueOf(l?%?j)?+?String.valueOf(l?%?k);
    ??//分別模11、7、29,結(jié)果相加,結(jié)果要和“#”后的那部分相等
    ????????return?s.equals(s2);
    ????}

    ????到這里我們已經(jīng)知道注冊(cè)的算法了,其實(shí)很簡(jiǎn)單:注冊(cè)碼必須以A、S、L其中一個(gè)字母開頭,第二個(gè)字符必須為“-”,“-”字符必須為兩個(gè),至少一個(gè)“#”字符,從目前的分析可以看出注冊(cè)碼長(zhǎng)度已以大于等于四了,程序代碼中<3時(shí)完蛋。接下來載取注冊(cè)碼中從第二個(gè)“-”字符位置加1開始到“#”前一個(gè)字符的子串,轉(zhuǎn)換為char后累加,再分別模11、7、29,把三次模運(yùn)算的結(jié)果相加,這個(gè)值等于注冊(cè)碼中“#”后面的所有字符。

    ????下面給寫出它的注冊(cè)機(jī)
    import?java.util.*;
    /**
    ?*?<p>Title:?JProfiler4.2?注冊(cè)機(jī)</p>
    ?*?<p>Description:?每執(zhí)行一次得到一個(gè)注冊(cè)碼</p>
    ?*?<p>Copyright:?Copyright?()?2006</p>
    ?*?@author?舵手
    ?*?@version?1.0
    ?*/
    public?class?jprofiler4_keygen??
    {
    ??public?static?void?main(String[]?args)?
    ??{
    ????String?s1?=?"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ????String?s2?=?"ALS";
    ????String?license?=?"";
    ????String?key?=?"";
    ????Random?rd?=?new?Random();
    ????int?j?=?rd.nextInt(3);
    ????license?+=?s2.substring(j,j+1)+"--";
    ????for?(int?i?=0?;?i?<?12?;?i++?)
    ????{
    ??????j?=?rd.nextInt(62);
    ??????license?+=?s1.substring(j,j+1);
    ??????key?+=?s1.substring(j,j+1);
    ????}
    ????license?+=?"#";
    ????char?ac[]?=?key.toCharArray();
    ????????int?l?=?0;
    ????????char?ac1[]?=?ac;
    ????????int?i1?=?ac1.length;
    ????????for(int?j1?=?0;?j1?<?i1;?j1++)
    ????????{
    ????????????char?c?=?ac1[j1];
    ????????????l?+=?c;
    ????????}
    ????????String?s3?=?String.valueOf(l?%?11)?+?String.valueOf(l?%?7)?+?String.valueOf(l?%?29);
    ????license?+=?s3;
    ????System.out.println(license);
    ??}
    }
    ????通過上面的分析,我們可以用正則表達(dá)式表示出注冊(cè)碼[A|L|S]-.-[a-zA-Z0-9]#[0-9],第二個(gè)“-”后的字符到“#”字符前的字符串的長(zhǎng)度并沒有限制,當(dāng)然,不能為0,我只測(cè)試了長(zhǎng)度為1和12,計(jì)算的注冊(cè)碼都沒有問題,有興趣的可以多試幾個(gè):)“.”這個(gè)位置可以插入任意長(zhǎng)度的任意字符。
    ????從注冊(cè)算法上說,這個(gè)程序的保護(hù)很簡(jiǎn)單,但如果加上混淆和錯(cuò)綜復(fù)雜的方法調(diào)用,會(huì)讓你頭痛好一陣子。這里我只列出了和計(jì)算注冊(cè)碼有關(guān)的一些方法,而在實(shí)際跟蹤中,牽扯到的類和方法數(shù)量是很大的,這就需要耐心。我一直以來都認(rèn)為這樣的文章對(duì)那些想要從這里學(xué)到東西的人沒有什么用處,因?yàn)檫@種文章充其量只能算是授人以魚而不是授人以漁。對(duì)那些正在分析這個(gè)軟件的注冊(cè)算法的人來說,也許有那么一點(diǎn)點(diǎn)用處:)
    ????分析這個(gè)軟件的注冊(cè)只是個(gè)人愛好,由于水平有限,錯(cuò)誤疏漏在所難免,歡迎大家提出寶貴意見!

    posted on 2006-10-12 15:07 舵手 閱讀(22876) 評(píng)論(11)  編輯  收藏

    評(píng)論

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    佩服樓主的精神,破解是一件比較累的事情,尤其是看那些混淆代碼。
    2006-10-12 18:29 | 布衣郎

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    實(shí)際使用該軟件時(shí)才發(fā)現(xiàn)上述的破解只完成了一部分,對(duì)注冊(cè)碼的另一部分校驗(yàn)在native 本地代碼中完成。本文的初衷是追出注冊(cè)算法,但試了多次都無法對(duì)該程序調(diào)用的dll進(jìn)行動(dòng)態(tài)跟蹤。進(jìn)行了靜態(tài)分析也沒得到結(jié)果,所以只好用暴力破解它,這違背了我的初衷,但也無可奈何!
    等有有空了再試試,如果找出完整算法,馬上公布。需要使用該軟件的朋友可以從http://www.tkk7.com/Files/galaxyp/jprofiler.rar下破我修改過的dll文件,覆蓋bin\windows下相應(yīng)的dll,再用上面給出的算法注冊(cè)就能完整的使用該軟件。
    2006-10-20 09:05 | 舵手 QQ:8117892

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    非常抱歉,已經(jīng)覆蓋bin\windows下相應(yīng)的dll啦,但是還是出錯(cuò),幫忙看看是什么原因,信息如下:
    JProfiler> Protocol version 22
    JProfiler> Using JVMTI
    JProfiler> 32-bit library
    JProfiler> Listening on port: 8849.
    JProfiler> Native library initialized
    JProfiler> Waiting for a connection from the JProfiler GUI ...
    JProfiler> Using dynamic instrumentation
    JProfiler> Time measurement: elapsed time
    JProfiler> CPU profiling enabled
    JProfiler> ERROR: Invalid license key. Aborting.
    請(qǐng)按任意鍵繼續(xù). . .
    JProfiler> Disconnected.
    2006-11-01 15:25 | ellie

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    可能和操作系統(tǒng)有關(guān),windows目下有兩個(gè)dll,可能會(huì)根據(jù)不同的操作系統(tǒng)裝載不同的dll,而我只破解了一下,我的win2000正常,另一個(gè)就沒處理。你可以試用我提供的dll把兩個(gè)原dll都替換了
    2006-11-02 10:13 | 舵手 QQ:8117892

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    感謝LZ的分析。哈哈!

    Name: License for You
    Lincese Code: A-G667#42616F-10kg1r134fq9m#2217
    2006-11-08 15:29 | qinqinxiatiao

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   



    A-G666#12226F-1kt7iz01b6zpgt#239
    2006-11-27 22:21 | sz

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    太牛了,希望以前以我們大破一些國(guó)外的好軟件
    2006-12-04 14:12 | ps

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    龍簇的朋友?

    可以現(xiàn)在好像不能訪問了

    我在國(guó)外的一個(gè)網(wǎng)站上找到一個(gè)注冊(cè)機(jī)

    可以直接使用喲
    2006-12-08 11:11 | arfa

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    大N啊
    2007-10-22 17:22 | zsg

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    大牛,你好,我最近也在使用jprofiler,在本機(jī)(windows)和linux服務(wù)器上都安裝了,但服務(wù)器老報(bào)異常:JProfiler> ERROR: Invalid license key. Aborting.
    但本機(jī)的key是可以用的(當(dāng)然是覆蓋了安裝文件下bin的windows,windows-x86),很奇怪這個(gè)異常,你能幫我解決下嗎?我用的都是5.1.2版本的
    email: zhanglidavid@gmail.com
    期待你的解答,謝謝
    2008-10-22 19:24 | 張力

    # re: JProfiler 4.2 注冊(cè)分析  回復(fù)  更多評(píng)論   

    版本不同了,估計(jì)注冊(cè)算法變了
    2008-10-22 23:27 | galaxyp

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费一级全黄少妇性色生活片 | 亚洲午夜久久久久久久久久| 色多多A级毛片免费看| 亚洲精品无码乱码成人| 91精品国产免费| 狠狠入ady亚洲精品| 婷婷亚洲久悠悠色悠在线播放| 青青草a免费线观a| 一级一看免费完整版毛片| 亚洲av丰满熟妇在线播放| 女人18毛片特级一级免费视频| xxxxx做受大片在线观看免费| 久久夜色精品国产噜噜亚洲AV| 好吊妞在线新免费视频| 国产日韩AV免费无码一区二区| 亚洲av日韩av无码av| 久久夜色精品国产亚洲av| 久久国产免费观看精品3| 青青草国产免费国产是公开| 亚洲视频网站在线观看| 亚洲综合最新无码专区| 日本阿v免费费视频完整版| 人体大胆做受免费视频| 亚洲avav天堂av在线网爱情| 亚洲熟女少妇一区二区| 在线精品免费视频无码的| 国产精品99精品久久免费| 青青青亚洲精品国产| 亚洲国产精品久久人人爱| 在线精品亚洲一区二区三区| 无码少妇一区二区浪潮免费| a级在线免费观看| 免费无码又爽又黄又刺激网站| 亚洲国产精品网站久久| 亚洲精品无码久久久久去q| 国产又大又粗又硬又长免费 | 免费在线观看污网站| 日本片免费观看一区二区| 三年片免费高清版| 老司机福利在线免费观看| 亚洲午夜理论片在线观看|