qq瀏覽器遠程調試
在做測試qq瀏覽器的時候,需要用到apk的遠程調試,這裡記錄下怎麼要過qq瀏覽器的保護,遠程調試qq瀏覽器
下載qq瀏覽器,用apktool反編譯,打開AndroidManifest看debuggable="false",也就是不允許進行調試
修改為true,利用apktool重新打包,使用Auto-sign重新簽名安裝
發現再次安裝後打開qq瀏覽器,會彈出一個頁面說這個qq瀏覽器是被修改過的,從而調出手機中的內置瀏覽器,無法進行qq瀏覽器的調試中
繞過檢測
在jeb中查找檢測url的字元串,定位檢查代碼,
.method public a(Lcom/tencent/mtt/MainActivity;)Vn .locals 3nn # invoke-virtual {p0, p1}, Lcom/tencent/mtt/boot/browser/g;->e(Landroid/app/Activity;)Vnn iget-object v0, p0, Lcom/tencent/mtt/boot/browser/g;->b:Lcom/tencent/mtt/boot/browser/g$a;n
注釋掉g函數,改函數會在app啟動時後檢查,注釋掉,不要他去檢查,重新打包安裝,打開,調用的是qq瀏覽器的內核了
看他的邏輯是,如果簽名不同的話,回調用setclassname強制啟動內置瀏覽器,並將qq瀏覽器的進程結束掉
遠程調試
採用的android studio調試smali代碼
首先使用apktool獲取apk的smali文件,手機安裝app,android studio安裝smalidea-0.03插件,點擊File->Settings->plugins->instal plugins from disk,選擇下載的zip包就行,不要解壓。安裝完成後,AS提示重啟生效,重啟即可
AS導入工程,選擇上一步的smali目錄,一路next
配置AS調試配置,Run->Edit configurations,點擊+號,新建remote類型調試器,設置Name, 修改埠號,可以選擇被佔用的任意埠,本次設置為8800
後面幾個命令:
adb shell am start -D -n com.xxx.xxx/.MainActivitynnadb shell ps | grep xxx #獲取運行的進程號nnadb forward tcp:8800 jdwp:idn
設置埠轉發,這條命令的含義可以認為是在本地8800埠與手機28881進程之間建立一條通道,當開始調試時,AS連接本地的8800埠,通過這條通道控制程序的運行
後面就是下斷點,運行調試
推薦閱讀:
※2A移動電源充手機會傷害手機嗎?
※安卓系統上有哪些好用的日曆App?
※自學安卓開發,如何找到第一份工作?
※對Android App來說,功能重要還是性能重要?
※Android 的 USB 共享網路功能是否是個雞肋功能?