吾愛破解 - LCG - LSG |安卓破解|病毒分析|huihengkj.com

 找回密碼
 注冊[Register]

QQ登錄

500彩票邀请码只需一步,快速開始

搜索
查看: 3461|回復: 65

[原創] 給Charles添加URL Decode的擴展功能

  [復制鏈接]
樓主
h080294 發表于 2020-7-17 15:37 回帖獎勵

前言

Charles是抓包工具中經常用到的工具,但是某些特定的場景下,還是有一些不便。本文就是自己根據需要,通過逆向修改代碼,實現了charles功能的增強。

1、問題場景描述

工作中經常使用charles,在抓包時一些參數會被轉碼顯示,雖然Charles提供類似Base 64 Decode和默認的URL encode/decode,但是展示的時候可能仍然是轉碼狀態。

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

500彩票邀请码又因為這個在實際中太常用了,每次要查看信息都要拷貝出來,利用在線網站去解碼,忒麻煩了。就想著能不能改造一下,增加一個URL Decode的擴展功能出來。

2、調研

網上搜尋了大量的資料,都未找到類似的功能擴展插件,所有的內容都是關于使用和破解的。看來只能自己造輪子了。

查看一下應用目錄,順便結合網上一些破解的資料,了解到核心的功能和ui實現等都在charles.jar這個包中。

3、逆向

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

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

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

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

3.1、定位代碼

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

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

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

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

觀察actionPerformed方法,可以看到這里就是實現Base64這個菜單選項功能的地方。

往上查找調用,可以在一個popMenu的類中找到創建的地方。

3.2、添加擴展功能

500彩票邀请码我們的需求很簡單,只是在右鍵中添加一個類似的功能選項,因此沒有必要動它的一些基類方法。

按照原版的功能實現一個抽象的CharlesUrlDecode類,并繼承AbstractAction。里面定義一下actionPerformed方法,即添加URL decode解碼。

500彩票邀请码然后分別創建CharlesUrlDecodeTextComponent、CharlesUrlDecodeText兩個類并實現一下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、替換掉原來的字符串
500彩票邀请码 2、新pop一個窗口展示

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

當然,為了更加方便的查找結果,有必要增加一個查詢功能。簡單修改下,增加一個鍵盤的監聽事件。因為只有只在mac上辦公,所以設置了command + F的快捷方式作為入口。

在實現查找功能的時候,可以考慮增加上循環查找、區分大小寫,高亮內容等等。網上有很多代碼,這里就不啰嗦展示了。

3.4、替換&&編譯文件

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

4、實踐

替換到原版的jar包后,就可以開始實踐了。首先查看右鍵菜單,發現成功添加了URL decode一項。

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

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

總結

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

500彩票邀请码整個過程相對來說比較順利,一是java代碼反編譯較為容易,二是需求明確且比較簡單。經過需求制定,到逆向分析,再到功能實現,中間也踩了一些小坑,不過都順利的解決了。有了這個功能,就不必在網頁工具和charles中來回切換了,大大地提高了工作效率。

500彩票邀请码從此次經歷中還看到一些安全方面的問題,即在搜索資料的過程中,發現網絡上充斥著大量破解相關的內容。誰也不知道在這些破解的文件中,是否包含了惡意的代碼在其中。

因此強烈建議從官方網站下載安裝文件

免費評分

參與人數 27吾愛幣 +28 熱心值 +24 收起 理由
hkbayer04 + 1 鼓勵轉貼優秀軟件安全工具和文檔!
icodex + 1 + 1 熱心回復!
oyfj + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
zsq + 1 + 1 謝謝@Thanks!
gaosld + 1 + 1 熱心回復!
Polar!S + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
Mr_zhaohy + 1 謝謝@Thanks!
羅科帷幕 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
lz3329178 + 1 + 1 熱心回復!
紅燒排骨 + 1 我很贊同!
ghosts1 + 1 + 1 我很贊同!
smilerYang + 1 謝謝@Thanks!
sunsyw + 1 + 1 熱心回復!
墨等風也你 + 1 謝謝@Thanks!
songyiisong + 1 + 1 我很贊同!
asq56747277 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
海云帆 + 1 + 1 謝謝@Thanks!
largemonster + 1 + 1 熱心回復!
廬陵酒徒 + 1 熱心回復!
sym945 + 1 + 1 熱心回復!
Time丨Brand + 3 + 1 熱心回復!
TinyBad + 2 + 1 用心討論,共獲提升!
solly + 2 + 1 鼓勵轉貼優秀軟件安全工具和文檔!
poiuyhn + 1 謝謝@Thanks!
wkxq + 2 + 1 謝謝@Thanks!
笙若 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
Cyntec + 2 + 1 也有過這個想法,不過一直沒實踐,給作者點個贊

查看全部評分

發帖前要善用論壇搜索功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

推薦
solly 發表于 2020-7-21 17:35
Loopher 發表于 2020-7-21 09:24
很少逆向java的,原來可以用jar uf 將一個class文件寫入到jar里邊

用一般壓縮軟件(winrar,winzip,7z等)都可以,反正jar的格式就是 zip格式。
推薦
邁克爾詹姆斯 發表于 2020-8-3 19:49
自己動手,豐衣足食,謝謝大佬分享教程。我也正在研究客戶端的開發,從IOS,到安卓,到windows。。看到您的文章,思路清晰,干凈明了,真心點贊!!
4#
不苦小和尚 發表于 2020-7-17 15:55
5#
Tyki 發表于 2020-7-17 22:18
收藏了學習一下。
6#
不苦小和尚 發表于 2020-7-17 22:53
最好有成品,希望樓主能發一下,高亮的
7#
failsray 發表于 2020-7-18 14:19
不錯 謝謝老師
8#
poiuyhn 發表于 2020-7-18 23:03
好文章,收藏了
9#
bingbingbd 發表于 2020-7-19 17:11
非常的喜歡,實驗一下
10#
Loopher 發表于 2020-7-21 09:24
很少逆向java的,原來可以用jar uf 將一個class文件寫入到jar里邊
11#
znew 發表于 2020-7-21 15:33
看完感覺并不難,思路很重要!學習了
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:本版塊禁止灌水或回復與主題無關內容,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|處罰記錄|聯系我們|吾愛破解 - LCG - LSG ( )

GMT+8, 2020-8-7 04:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表

500彩票邀請碼-彩經網