<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Crack App | 某 H5 App 反調(diào)試對抗

          共 5480字,需瀏覽 11分鐘

           ·

          2022-04-20 20:37

          點擊上方“咸魚學Python”,選擇“加為星標

          第一時間關注Python技術干貨!


          圖源:網(wǎng)絡

          吃透反爬蟲 & 逆向破解技術

          Android 提供多種向用戶呈現(xiàn)內(nèi)容的方式,要提供與平臺其他部分一致的用戶體驗,通常最好構建一個原生應用,并在其中融入框架提供的體驗,某些應用可能需要增強對界面的控制,在這種情況下,可以使用 WebView 顯示受信任的第一方內(nèi)容。

          以上內(nèi)容修改編輯自 Android 開發(fā)文檔:https://developer.android.com/guide/webapps

          通過以上的內(nèi)容可以知道 h5 app 可以通過 webview 控件向我們提供在線的網(wǎng)頁展示,今天我們搞的 App 就是這樣的

          如何判斷 app 的類型?

          這個網(wǎng)上的文章可太多了

          參考鏈接:

          1、https://blog.csdn.net/jackli11241201/article/details/91361692

          2、https://buhuibaidu.me/?s=%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%ADapp%E6%98%AF%E5%90%A6%E6%98%AF%20h5

          3、通過使用本地的 SDK/tools/bin/uiautomatorviewer 分辨加載頁面的組件是否是 webview 判斷

          H5 App 的分析流程

          按照上面的展示圖,大概淺顯的理解 H5 app 就是把網(wǎng)頁圖塞到了 app 里面展示出來的(其實沒這么簡單,大概理解個意思)

          H5 的 app 通常是界面里嵌入一個WebView控件,然后使用它來加載網(wǎng)頁

          正常的 APP 的分析流程一般是這樣的:

          關鍵參數(shù)的加密邏輯是在 Java 層或者 So 層,我們可以通過搜索關鍵詞或者 Frida 等調(diào)試工具動態(tài)調(diào)試定位

          然后的我們拿到的 APP 是 H5 的話,在分析這一步就有問題了

          H5 App 是將網(wǎng)頁的內(nèi)容套了一個 App 的殼然后給用戶使用,網(wǎng)頁上算法加密一般是用 Js 完成加密

          那么問題來了, 怎么調(diào)試定位 H5 App 里面的 Js 加密邏輯呢?

          通過百度可以得到以下答案

          1、在 H5 App 沒有反調(diào)試的情況下

          2、設備USB連接電腦,打開 PCChrome 訪問網(wǎng)址 chrome://inspect

          3、取消Discover network targets - 這一步是關閉網(wǎng)絡上的設備,防止干擾,不關閉也可以

          4、在Devices中可以看到對應的設備的WebView

          5、點擊 inspect

          小試牛刀

          既然這樣就拿一臺設備試一試

          果然可以看到我們的設備,打開設備的瀏覽器看看(自帶的 Google 怎么說也不會反調(diào)試吧)

          用手機的 Chrome 瀏覽器打開百度,然后 PC 重新訪問一下chrome://inspect頁面

          可以看到 PC 頁面更新成上面這樣了,我們試著調(diào)試一下手機百度的頁面

          點擊inspect,跳轉到下面的頁面,這個時候在下圖右側做的所有操作都同步到手機上了

          這就和在瀏覽器里調(diào)試不能說是完全相同,但也可以說是一模一樣了?!竟奉^】

          注意事項

          1、咸魚 PC 使用的 Chrome 版本 100.0.4896.60(正式版本),環(huán)境一模一樣保平安,其他版本我也沒測試過

          2、打開手機頁面的時候,可能或出現(xiàn)白屏或者 404 的情況,導致這個現(xiàn)象的原因可能是因為你沒有使用魔法上網(wǎng),在打開這個頁面的時候會下載文件,沒有魔法上網(wǎng)的話就出錯了

          建議在第一次打開的時候將魔法上網(wǎng)切換到全局模式保證可以一步到位

          H5 App 的反調(diào)試對抗

          這個 App 比較上古,已經(jīng)不提供服務了,本來想用大黃鳥抓包,但是沒抓到需要的登陸包

          應該是服務器都掛逼了

          不過不影響我們進行今天的內(nèi)容  >> 關于 H5 應用的反調(diào)試對抗

          我們按照剛剛的步驟發(fā)現(xiàn),Chrome 里并沒有顯示inspect,猜測是 App 反調(diào)試了

          先百度了解一下h5 app 的反調(diào)試

          參考鏈接:https://its401.com/article/freak_csh/95585148

          也就是說當WebView.setWebContentsDebuggingEnabled(false);的時候就沒辦法調(diào)試了

          那我們把目標 app 拖到 Jadx 里以setWebContentsDebuggingEnabled為關鍵詞搜索,看看是否能夠找到目標位置

          結果有三個,我們一個個看

          第一個寫入的是 true

          第二個通過反射寫入 False

          第三個是一個判斷,待定

          這樣看的話是第二個位置嫌疑最大

          我們用 Frida hook 一下看看

          // 錯誤實例
          function main({
              console.log("Enter the Script!");
              Java.perform(function x({
                  console.log("Inside Java perform");
                  Java.choose("類名.ui.WebViewImpl", {
                      onMatchfunction (x{
                       console.log("find instance :" + x);
                       x.setWebViewData.implementation = function(){
                        console.log("x.setWebViewData.implementation");
                       }
                      },
                      onCompletefunction ({
                          console.log("end");
                      }
                  });
              });
          }
          setImmediate(main);

          本來用上面的那個代碼發(fā)現(xiàn) hook 不上

          // 正確實例
          console.log("腳本加載成功");
          function main(){
              Java.perform(function(){
                  const WebViewImpl = Java.use('類名.ui.WebViewImpl');
                  WebViewImpl['setWebViewData'].implementation = function(){
                      console.log("替換為空");
                  };
              })
          }
          setImmediate(main)

          感謝花哥的指點

          本來我是 search 實例然后將方法置空,但是發(fā)現(xiàn)的總是進不去implementation的邏輯,然后的求助花哥,花哥提示我可以不用搜索類實例直接implementation,測試了一下發(fā)現(xiàn)可以進入implementation 的邏輯了。

          不過用 Frida 并沒有繞過檢測,感覺還是我有一些地方疏漏了,如果有知道的大佬后臺留言 dddd ,萬分感謝

          無奈之下,隨后測試了下 xposed ,用 xposed 實現(xiàn)一下

          public class HookMain implements IXposedHookLoadPackage {
              String TAG = "xianyuplus";

              public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
                  XposedBridge.log("Loaded app :" + loadPackageParam.packageName );
                  XposedHelpers.findAndHookMethod("類名.ui.WebViewImpl",loadPackageParam.classLoader,"setWebViewData"new XC_MethodReplacement() {
                      @Override
                      protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
                          return null;
                      }
                  });
              }
          }

          結果相當 nice,直接將setWebViewData方法替換為空就可以解決反調(diào)試了

          ps:需要注意的是這里的setWebViewData內(nèi)部邏輯只有webview反調(diào)試相關的邏輯所以直接置空是可以的,如果有其他的邏輯的話就不能這樣替換置空了

          以上就是本次的全部內(nèi)容了,因為 app 的服務端已經(jīng)掛逼了,所以沒辦法測試,之后有新的 H5 app 樣本的話就再水一篇。

          吃透反爬蟲 & 逆向破解技術

          我是沒有更新就在摸魚的咸魚

          收到請回復~

          我們下次再見。

          對了,看完記得一鍵三連,這個對我真的很重要。

          瀏覽 143
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天综合综合大片 | 成人豆花视频在线观看 | 性爱视频精品综合 | 久久噜噜噜久久熟女-久久久噜噜噜 | 欧美爆乳一区 |