給Charles添加URL Decode功能的擴展插件

前言

Charles是抓包工具中經常用到的工具,但是某些特定的場景下归苍,還是有一些不便用狱。

1、問題場景描述

比如抓包的一些參數(shù)被轉碼了拼弃,雖然Charles提供類似Base 64 Decode和默認的URL encode/decode夏伊,但是展示的時候可能仍然是轉碼狀態(tài)。

右鍵的菜單中吻氧,只能找到Base 64 Decode溺忧,并不是我們需要的URL Decode。

又因為這個在實際的工作中太常用了盯孙,每次要查看信息都要拷貝出來鲁森,利用在線網(wǎng)站去解碼,忒麻煩了振惰。就想著能不能改造一下歌溉,增加一個decode的擴展功能出來。

2骑晶、調研

網(wǎng)上搜尋了大量的資料痛垛,都未找到類似的功能擴展插件,所有的內容都是關于使用和破解的桶蛔〕淄罚看來只能自己造輪子了。

查看一下應用目錄仔雷,順便結合網(wǎng)上一些破解的資料蹂析,了解到核心的功能和ui實現(xiàn)等都在charles.jar這個包中舔示。

3、逆向

首先看一下百科詞條關于jar包的介紹电抚。

百度百科詞條:
在軟件領域惕稻,JAR文件(Java歸檔,英語:Java Archive)是一種歸檔文件喻频,以ZIP格式構建缩宜,以.jar為文件擴展名。
通常用于聚合大量的Java類文件甥温、相關的元數(shù)據(jù)和資源(文本锻煌、圖片等)文件到一個文件,以便開發(fā)Java平臺應用軟件或庫姻蚓。

那么Java層面的逆向相對來說還是比較容易的宋梧,市面上有各種各樣現(xiàn)成的工具。我們隨便使用一款JUI用具來隨機查看一下狰挡。

可以看到捂龄,項目經過了混淆,但整體上結構還是非常清晰工整加叁。這非常方便逆向工作的展開倦沧。

3.1、定位代碼

我們主要目的是在右鍵菜單中增加一個URL Decode的功能它匕。比貓畫虎展融,原版提供給我們一個Base 64 decode的功能,那么可以仿照它這個豫柬,額外添加一個擴展功能告希。

在項目中搜索“Base 64”關鍵字,可以查看到相關的引用烧给。

很快就能查找到一個叫base64DecodeAction地方的引用燕偶,跟進去查看。很明顯础嫡,這里類繼承了AbstractAction指么。

百度百科AbstractAction詞條
此類提供 JFC Action 接口的默認實現(xiàn)。它定義了一些標準行為榴鼎,比如 Action 對象屬性(icon涧尿、text 和 enabled)的 get 和 set 方法。開發(fā)人員只需為此抽象類創(chuàng)建子類并定義 actionPerformed 方法即可檬贰。

觀察actionPerformed方法,可以看到這里就是實現(xiàn)Base64這個菜單選項功能的地方缺亮。

往上查找調用翁涤,可以在一個popview的類中找到創(chuàng)建的地方桥言。

3.2、添加擴展功能

我們的需求很簡單葵礼,只是在右鍵中添加一個類似的功能選項号阿,因此沒有必要動它的一些基類方法。

按照原版的功能實現(xiàn)一個抽象的CharlesUrlDecode類鸳粉,并繼承AbstractAction扔涧。里面定義一下actionPerformed方法,即添加URL decode解碼届谈。

然后分別創(chuàng)建CharlesUrlDecodeTextComponent枯夜、CharlesUrlDecodeText兩個類并實現(xiàn)一下getBody方法。

#  CharlesUrlDecodeTextComponent類
public class CharlesUrlDecodeTextComponent extends CharlesUrlDecode{
    private final JTextComponent component;

    public CharlesUrlDecodeTextComponent(JTextComponent jTextComponent) {
        super(jTextComponent);
        this.component = jTextComponent;
    }

    public String getBody() {
        String selectedText = this.component.getSelectedText();
        return selectedText == null ? this.component.getText() : selectedText;
    }

}

#  CharlesUrlDecodeText類
public class CharlesUrlDecodeText extends CharlesUrlDecode{

    private final String text;

    public CharlesUrlDecodeText(String str) {
        super((Component) null);
        text = str;
    }

    public CharlesUrlDecodeText(String str, Component component) {
        super(component);
        text = str;
    }

    @Override
    public String getBody() {
        return this.text;
    }
}

3.3艰山、展示結果

轉碼完成后湖雹,我們有兩種方式展示:
1、替換掉原來的字符串
2曙搬、新pop一個窗口展示

為了避免影響原功能摔吏,所以新彈出一個窗口展示結果更為合適。查看完隨時關掉纵装,不影響源軟件的任何使用征讲。粗糙的寫一個簡陋的JFrame承載結果就好了。

當然橡娄,為了更加方便的查找結果诗箍,有必要增加一個查詢功能。簡單修改下瀑踢,增加一個鍵盤的監(jiān)聽事件扳还。因為只有只在mac上辦公,所以設置了command + F的快捷方式作為入口橱夭。

在實現(xiàn)查找功能的時候氨距,可以考慮增加上循環(huán)查找、區(qū)分大小寫棘劣,高亮內容等等俏让。網(wǎng)上有很多代碼,這里就不啰嗦展示了茬暇。

3.4首昔、替換&&編譯文件

編譯過程很簡單,在項目中build一下即可生成所需要的class文件糙俗,然后使用jar uf命令勒奇,就可以將文件更新到jar包中。

4巧骚、實踐

替換到原版的jar包后赊颠,就可以開始實踐了格二。首先查看右鍵菜單,發(fā)現(xiàn)成功添加了URL decode一項竣蹦。

點擊該選項后顶猜,會將轉碼的結果用一個新的pop彈窗來展示。

額外增加的查找功能痘括,順便高亮一下結果长窄,讓所搜更加便利。

總結

到這里纲菌,我們就達到了預期的效果 - 給Charles添加URL Decode的擴展功能挠日。

整個過程相對來說比較順利,一是java代碼反編譯較為容易驰后,二是需求明確且比較簡單肆资。經過需求制定,到逆向分析灶芝,再到功能實現(xiàn)郑原,中間也踩了一些小坑,不過都順利的解決了夜涕。有了這個功能犯犁,就不必在網(wǎng)頁工具和charles中來回切換了,大大地提高了工作效率女器。

從此次經歷中還看到一些安全方面的問題酸役,即在搜索資料的過程中,發(fā)現(xiàn)網(wǎng)絡上充斥著大量破解相關的內容驾胆。誰也不知道在這些破解的文件中涣澡,是否包含了惡意的代碼在其中。

因此強烈建議從官方網(wǎng)站下載安裝文件丧诺,并購買激活碼入桂。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驳阎,隨后出現(xiàn)的幾起案子抗愁,更是在濱河造成了極大的恐慌,老刑警劉巖呵晚,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜘腌,死亡現(xiàn)場離奇詭異,居然都是意外死亡饵隙,警方通過查閱死者的電腦和手機撮珠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來金矛,“玉大人芯急,你說我怎么就攤上這事倘潜。” “怎么了志于?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長废睦。 經常有香客問我伺绽,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮梅猿,結果婚禮上饥侵,老公的妹妹穿的比我還像新娘。我一直安慰自己荧止,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惩妇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筐乳。 梳的紋絲不亂的頭發(fā)上歌殃,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音蝙云,去河邊找鬼氓皱。 笑死,一個胖子當著我的面吹牛勃刨,可吹牛的內容都是我干的波材。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼身隐,長吁一口氣:“原來是場噩夢啊……” “哼廷区!你這毒婦竟也來了?” 一聲冷哼從身側響起抡医,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤躲因,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后忌傻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體大脉,經...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年水孩,在試婚紗的時候發(fā)現(xiàn)自己被綠了镰矿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡俘种,死狀恐怖秤标,靈堂內的尸體忽然破棺而出绝淡,到底是詐尸還是另有隱情,我是刑警寧澤苍姜,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布牢酵,位于F島的核電站,受9級特大地震影響衙猪,放射性物質發(fā)生泄漏馍乙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一垫释、第九天 我趴在偏房一處隱蔽的房頂上張望丝格。 院中可真熱鬧,春花似錦棵譬、人聲如沸显蝌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曼尊。三九已至,卻和暖如春算谈,著一層夾襖步出監(jiān)牢的瞬間涩禀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工然眼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艾船,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓高每,卻偏偏與公主長得像屿岂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鲸匿,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359