海關 瑞數5.5 找字尾加密入口解析

2022-09-02 06:28:21

RS5.5 的加密 解決方法RPC 插樁找入口

  • 站點
    • aHR0cDovL2NyZWRpdC5jdXN0b21zLmdvdi5jbi9jY3Bwd2Vic2VydmVyL3BhZ2VzL2NjcHAvaHRtbC9sb3N0Y3JlZGl0Lmh0bWw=
  • 加密引數:
    • nUdYJ1Ji

過一下debugger

  • 自己想辦法

找到加密入口

  • hook xhr值

    • var code2 = function(){
      var open = window.XMLHttpRequest.prototype.open;
      window.XMLHttpRequest.prototype.open = function (method, url, async){
          if (url.indexOf("nUdYJ1Ji")>-1){
              debugger;
          }
          return open.apply(this, arguments);
      };
      };
      var script = document.createElement('script');
      script.textContent = '(' + code2 + ')()';
      (document.head||document.documentElement).appendChild(script);
      script.parentNode.removeChild(script);
      
    • 用外掛什麼的自己隨便找一個就行

  • 處理一下console.log 被重寫的問題 作者太笨直接用外掛重寫了

  • hook到引數的位置

  • 跟棧到這裡 可以發現在send這裡是沒有加密的

  • 所以加密在上一個呼叫棧 _$fJ

    • 可以到這裡已經完成加密了 加密的上一個函數是_$_x
    • 這個函數可以發現和瑞數5 的加密有點相似
  • 在平坦流中定位到加密入口

    • 先打一個日記斷點 重新點選下一步 檢視這個判斷的值的走勢以及到最後哪些變數中有我們的加密值
  • 繼續 加入已加密的arguments進行紀錄檔斷點

  • 可以發現在判斷值為100---》30----》30----》60這個流程完成的加密

  • 進一步進行插樁斷點 (若是在這一步進行判斷斷點的話會發現再此之前已經完成了加密 說明有其他變數已經儲存了我們的加密 這時候只能把變數臺中的可疑變數都拿出來 再進行一步插樁)

    • 到這裡很容易看出來我們判斷的arguments還沒加密 但是有點變數裡面已經把這個url加密了 所以我們要找到這些可疑變數加密的位置
  • 在進行一次插樁斷點 把可疑的值帶上一起

    • v_log(_$ly+'----'+_$bi['_$_W']+'----'+_$cO[2]['_$_W']+'----'+_$h4[2]['_$_W']+'----'+_$ha[2][2]['_$_W']+'-----'+Array.prototype.slice.call(_$ha[0])[1])
    • 這次可以發現加密的判斷值流程變了在30---5---62完成加密
  • 進行插樁判斷這個值的走向 進行斷點

    • v_log(_$hT);window.LSL.push(_$hT);if(LSL[LSL.length-1]==5 && LSL[LSL.length-2]==30 && LSL[LSL.length-3]==5){true}
  • 斷點到這裡發現還是有加密的引數 不管了 進行跟棧看看吧

    • 其實還可以進一步進行插樁看看怎麼到底在哪加密的 判斷這加密字尾長度為96即可
    • 我們跟棧發現 到這個apply函數就沒有加密的引數了
    • apply函數的用法可以自己百度看看
    • 主要看apply前面的函數
    • 繼續檢視呼叫棧
    • 繼續檢視呼叫棧
    • 繼續跟棧 終於找到了這個加密入口

完結 後續的扣程式碼或者RPC都可以試試

qq 320783214