1. 程式人生 > >charles抓包中 有趣的斷點,Rewrite,Map Local功能

charles抓包中 有趣的斷點,Rewrite,Map Local功能

今天閒來無事 給大家介紹一下charles中一些有趣的功能。

事情起因是這樣的,在2018年的某某一天,小編的同學,給小編髮了一個截圖,如下。

小編看到這個截圖之後,發現跟真實的相差無幾,應該不是P圖,所以小編就覺得他應該是利用抓包工具修改了響應返回的引數,然後在對Q幣的餘額進行了修改,最後在靜態介面,截圖下來。

於是小編教大家如何修改靜態的返回響應,這個小編這裡介紹一下使用charles修改(其實fiddler也可以)

一、利用charles修改返回的響應。

1.首先,你需要確保你安裝的charles能夠抓取手機裝置的https協議(這個不是本文的重點,自行百度,很簡單的,不過ios裝置,需要及的關於手機哪裡,信任一下頒發的ca證書)

2.確定是在那個介面修改,我們看下圖可以知道,當我們從圖1到圖2的過程,這個Q幣顯示了出來,所以小編覺得,Q幣數量返回的介面,一定是在這裡產生的,也就是我們點選圖片1,圈記那個餘額的操作。

3.確定了介面是那個操作產生的之後,我們這個時候,將charles裡面,多餘的資料清除(點選那個掃帚即可),然後在點選圖片1中圈記的那個餘額(介面會從圖片1到圖片2)

4.這個時候我們在返回charles上面檢視,果然,發現了有個類似於扣幣的返回資料,當然,小編這裡是“131452070,”

5.我們知道了這個資料是那個請求之後,之後我們就開始設定斷點了,滑鼠左鍵點選這個請求,然後選擇“BreakPoints”(點選一次就行了,點選多次會移除) ,如果是已經好了的,顯示是一個“√”的狀態

6.之後我們點選“proxy”-->"BreakPoints Setting",我們就能看到我們剛才新增的這個請求

7.雙擊點選這個請求,在query這個輸入框中,輸入“*”(意思 是不管引數是啥,都會進行斷點,這裡不能填成跟實際的一樣,因為有些實際的引數有時間戳類似的 ,時間過了就會變,所以不建議那樣寫死),當然因為我們只是修改Q幣的返回值,所以我們只需要勾選,Respone就可以了,之後點選Ok儲存即可

8.這個時候我們的手機再次從圖片1,也就是圖片1圈記的那個餘額,這個時候,我們看到手機的介面圖片2已經出現,但是Q幣餘額一直沒有顯示出來,而charles中,我們點選那個Edit Respone

9.如果你第八步沒有超時的話(因為客戶端接受你返回的響應有個時間範圍,如果你超過了,就算你將攔著的響應再次釋放傳送給客戶端,他也不會接受,所以我們需要在最短的時間內,修改我們需要的東西,然後在點選“execute”釋放這個響應,讓客戶端得到資料),這個時候 ,你的手機中 圖片2應該是這個樣子的。

好了 這個時候 修改響應的任務成功了。於是小編也發了一個圖片給我同學。

二、相對於第一種方式,小編在想,有沒有可能,讓他這個程式,自動幫我修改 替換我的Q幣值呢?就不要每次自己攔截下來自己手動進行修改了,而且如果可以做成這樣,就算我拿手機給我同學看,他每次點進去檢視我的Q幣,也是經過charles代理後替換的值,這樣他肯定沒話說  豈不是更加真實?哈哈哈,說著說著,小編研究了一下,實際上我們charles確實有這個功能,也就是Rewrite

1.首先,確定我們需要改變的介面,將他的地址  以及響應  儲存到一個地方

2.Tools->Rewrite,記得勾選,在點選apple

a.location中,填寫我們剛才儲存的請求介面資訊,http還是https。以及host,以及path路徑,另外query最好填*

b.Rewrtie中,type填寫body,另外我們只需要勾選Respone,需要替換的值“16370”(這裡是伺服器返回的正確值),下面那個填,你需要修改成多少。。。

3.點選儲存之後,接下來,你每次點選檢視自己的Q幣,都是顯示成你修改的那麼多,這樣是不是特別真實??當然你如果關掉charles代理或者使用自己的網路資料訪問的話,返回的資料就不會發生改變了,這裡只是charles自動幫你把響應中的引數進行了替換。不過這個時候,拿去給同學看的時候,他們自己點選檢視到的Q幣就是那麼多,所以小編覺得他們百分之八十的人,應該都會信了,畢竟你是實時訪問,實時就是你修改後的Q幣值。

 

三、另外一個就是將響應儲存到本地,然後稍微修改一下,之後charles就不會訪問伺服器,而是採用你本地的響應進行返回給客戶端,也就是我們說的Map Local

這裡就不做太多的詳細介紹了,直接舉例子吧,比如這個微信流水。

 

 

點選這個請求,右鍵,選擇save Respone 儲存的檔名稱為微信流水,之後我們點開這個流水,檢視到,發現格式有點亂,沒關係,我們百度搜索json線上格式化,將文件中的內容copy下來,放到,進行格式化,我們可以看到下面的內容,知道了支出跟收入是那些欄位之後,我們通通修改,加2個0(可以直接在文件中,找到對應位置,修改即可),在這裡我只是修改下支付跟收入,其他的流水筆數什麼的,我就沒做細細的修改了。

 

之後我們將修改完的微信流水文件儲存,之後在charles中,點選剛才那個流水的介面,之後右鍵有個Map Local,點選她之後彈框出來了。同樣的這裡講Query輸入框中修改成"*",之後那個local path選擇我們剛才的那個微信流水文件,之後點選儲存

 

最後,我們訪問微信流水,就是我們統一修改後的引數了,是不是很有趣?流水秒變幾十萬,由於每次他都會取本地的返回響應,所以別說是截圖  就算你錄製視訊都沒啥問題。當然,小編這裡只修改了支出和收入 ,你自己需要修改下流水筆數,以及下方,資料需要對應上才可以

 

最後,以後發現了更多好玩的跟大家一起分析,今天這個教程到此結束,有不懂的可以聯絡微信17673231234