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

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

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

    GalaxyPilot —— D.S


            生命不熄,戰斗不止
    數據加載中……

    JProfiler 4.2 注冊分析

    JProfiler?4.2?注冊分析

    作者:舵手
    申明:如轉載請保證文章的完整性以及出處

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

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

    ????public?boolean?H()
    ????{
    ????????E?e1?=?com.jprofiler.frontend.E.H.A3().A2();
    ??//由于代碼經過了混淆,以E命名的類有n多,所以千萬要找正確,否則會浪費你的保寶貴時間
    ??//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,那問題就解決了。如果想暴破可以從這個方法入手,我們這里的任務是追出注冊算法:)
    ????首先我們跟進com.jprofiler.frontend.E.H.A3().A2();這兩個方法,發現只是對類做一些初始化,我們略過。

    ????跟進e1.A(null,?this),它又調用了重載方法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;?//在該類初始化時已經給F4給了值,如果注冊文件存在,該值為注冊碼
    ????????if(flag?&&?!s.startsWith("FLOAT:")?&&?!s.startsWith("S-"))
    ????????????com.A.A.E.C.A(s,?_pa);//跟進這里,發現是網絡驗證,由于我訪問不了IP?228.7.6.9?所以沒有詳細分析,
    ??????//有時間了再補上。如果你那里通不過網絡驗證,把com.A.A.E.C$_B(C的內部類)里的IP改一下應該就沒問題
    ??????//可別問我怎么改,十六進制編輯器就可以了:)
    ????????return?S(s);?//我們再看這個方法
    ????}

    ????public?int?S(String?s)
    ????{
    ????????if(s?==?null)
    ????????????s?=?F4;//在該類初始化時已經給F4給了值,如果注冊文件存在,該值為注冊碼
    ????????if(s.startsWith("FLOAT:"))?//不知道這代表什么,直覺上不是好東西,先不進入,直接到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)直接調用下面方法
    ????public?static?int?G(String?s)
    ????{//s為注冊碼
    ????????if(s?==?null)
    ????????????return?-3;
    ????????s?=?s.trim();
    ????????if(s.length()?<?3?||?s.charAt(1)?!=?'-'?||?s.indexOf('#')?==?-1)//長度大于3,第二位字符必須為-,必段有#
    ????????????return?-3;
    ????????switch(s.charAt(0))//取注冊碼中的第一個字符
    ????????{
    ????????case?69:?//?'E'??試用版
    ????????????int?i?=?A(s);//查檢當前日期是否過了試用期
    ????????????if(!F(s))
    ????????????????return?-3;
    ????????????else
    ????????????????return?i;

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

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

    ????private?static?boolean?F(String?s)
    ????{
    ????????A?a?=?new?A(s);//傳入注冊碼,進行截取處理
    ????????if(!a.E())
    ????????????return?false;
    ????????String?s1?=?a.A();//返回注冊碼中第二個“-”后的所有字符
    ????????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);//重點所在
    ????}

    ????protected?static?boolean?A(String?s,?String?s1,?int?i,?int?j,?int?k)
    ????{
    ????????char?ac[]?=?s1.toCharArray();“#”前的串轉換為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,結果相加,結果要和“#”后的那部分相等
    ????????return?s.equals(s2);
    ????}

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

    ????下面給寫出它的注冊機
    import?java.util.*;
    /**
    ?*?<p>Title:?JProfiler4.2?注冊機</p>
    ?*?<p>Description:?每執行一次得到一個注冊碼</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);
    ??}
    }
    ????通過上面的分析,我們可以用正則表達式表示出注冊碼[A|L|S]-.-[a-zA-Z0-9]#[0-9],第二個“-”后的字符到“#”字符前的字符串的長度并沒有限制,當然,不能為0,我只測試了長度為1和12,計算的注冊碼都沒有問題,有興趣的可以多試幾個:)“.”這個位置可以插入任意長度的任意字符。
    ????從注冊算法上說,這個程序的保護很簡單,但如果加上混淆和錯綜復雜的方法調用,會讓你頭痛好一陣子。這里我只列出了和計算注冊碼有關的一些方法,而在實際跟蹤中,牽扯到的類和方法數量是很大的,這就需要耐心。我一直以來都認為這樣的文章對那些想要從這里學到東西的人沒有什么用處,因為這種文章充其量只能算是授人以魚而不是授人以漁。對那些正在分析這個軟件的注冊算法的人來說,也許有那么一點點用處:)
    ????分析這個軟件的注冊只是個人愛好,由于水平有限,錯誤疏漏在所難免,歡迎大家提出寶貴意見!

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

    評論

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

    非常抱歉,已經覆蓋bin\windows下相應的dll啦,但是還是出錯,幫忙看看是什么原因,信息如下:
    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.
    請按任意鍵繼續. . .
    JProfiler> Disconnected.
    2006-11-01 15:25 | ellie

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

    感謝LZ的分析。哈哈!

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   



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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

    龍簇的朋友?

    可以現在好像不能訪問了

    我在國外的一個網站上找到一個注冊機

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

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

    # re: JProfiler 4.2 注冊分析  回復  更多評論   

    版本不同了,估計注冊算法變了
    2008-10-22 23:27 | galaxyp

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 黑人大战亚洲人精品一区| 国产三级电影免费观看| 国产亚洲综合久久系列| 日韩电影免费在线观看网址| 免费A级毛片无码久久版| 黄页网站在线观看免费| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲三区在线观看无套内射| 中文字幕免费在线看| 亚洲精品午夜国产VA久久成人| AAAAA级少妇高潮大片免费看 | 久久精品国产亚洲AV无码娇色| 久久伊人免费视频| 亚洲欧洲日本天天堂在线观看| 国产精品成人观看视频免费| 亚洲AV色吊丝无码| 在线精品免费视频无码的| 亚洲AV无码AV吞精久久| 亚洲午夜福利精品无码| 亚欧免费一级毛片| 国产精品亚洲自在线播放页码| 女人18毛片a级毛片免费| 日本激情猛烈在线看免费观看| 狠狠色伊人亚洲综合成人| 57pao国产成视频免费播放| 亚洲首页国产精品丝袜| 免费人成网站7777视频| 国产成人免费AV在线播放| 亚洲国产av美女网站| 国产在线不卡免费播放| 99久久免费国产精品热| 亚洲人成电影在线观看青青| 国产免费牲交视频| 最好免费观看高清在线| 亚洲一区二区无码偷拍| 久久激情亚洲精品无码?V| 美女视频黄的全免费视频| jizz免费在线影视观看网站| 亚洲的天堂av无码| 日产国产精品亚洲系列| 114级毛片免费观看|