• 當前位置:首頁 > IT技術 > 移動平臺 > 正文

    IOS 某電商App簽名算法解析(一) 還是套路
    2022-04-19 11:23:46

    一、目標

    Android越來越不好玩了,年輕人,該搞搞IOS了。套路其實都是差不多的,不要被Arm匯編攔住了。

    反正Android早就不講武德了,重要算法都在so里面,和ios差不多了。

    先按照之前的 [Ios逆向環境搭建 (一)] 把抓包和frida環境搞好。

    IOS 某電商App簽名算法解析(一) 還是套路_ios

    我們今天的目標還是它, sign

    二、步驟

    觀察一下

    從 sign的長度和參數類型上看, sign sv st 可以看出,IOS版本的簽名算法大概率和Android差不多。這能節省我們很多分析時間,直接進入主題吧。

    第一步 砸殼

    在 frida-ios-dump 目錄下面, 輸入命令 **python dump.py -l ** 列出手機里面的App列表, 找到我們要搞的包名

    然后開始運行砸殼命令,砸殼后的文件會通過 ssh拷貝到電腦上。

    python dump.py com.3xxbuy.xxmobile

    TIP: 注意,砸殼之前請保障 SSH是通的,使用 usbmuxd 把本地的2222端口轉發到iOS上的22端口,配置好 ssh免密登錄

    iproxy 2222 22
    ssh -p 2222 root@127.0.0.1

    第二步 IDA

    砸殼成功后,會在當前目錄生成對應的 ipa文件,ipa和apk類似,也是個壓縮包,我們解壓先。

    在 Payload/xx4iPhone 下面找到它的可執行文件,xx4iPhone 100多mb的這個就是了。 拖進 IDA吧

    IDA細嚼慢咽得很長時間(很長是指好幾個小時.....),可以倒杯水,休息一把。刷刷 小視頻,帶薪摸魚。

    IDA嚼完之后, Shift + F12 ,進入 字符串窗口,我們繼續查找字符串 sign=

    IOS 某電商App簽名算法解析(一) 還是套路_iOS_02

    雙擊一個結果,進去,在變量名稱上面按 X 鍵 (交叉參考),就是查看哪些地方調用這個變量。

    IOS 某電商App簽名算法解析(一) 還是套路_android_03

    來到 cfstr_Sign_4, 繼續 X

    IOS 某電商App簽名算法解析(一) 還是套路_iOS_04

    看這個比較像 JDCTCCHelper requestParamsWithUrl:dict: ,進去看看, 喚起 F5大法 (進入Arm匯編代碼窗口之后按F5,IDA會翻譯出C的偽代碼)

    IOS 某電商App簽名算法解析(一) 還是套路_android_05

    不對,沒有計算過程, 把結果都翻了一遍,還沒有收獲。

    試試 sv= ,因為sv這個字段比較少見,和它在一起的大概率是 sign計算過程。

    又是一番 X , 被我們定位到了 +[XXSignService getSignWithDic:keys:]

    IOS 某電商App簽名算法解析(一) 還是套路_f5_06

    F5一下,仔細看看這個函數。怎么看都像是sign的計算過程

    IOS 某電商App簽名算法解析(一) 還是套路_iOS_07

    第三步 Frida

    掛上我們心愛的Frida了

    id __cdecl +[XXSignService getSignWithDic:keys:](XXSignService_meta *self, SEL a2, id a3, id a4)

    一個典型的ObjectC的函數就是這樣, + 表示這是個類靜態函數, 第一個參數指向接收Objective-C消息對象的指針。第二個參數是指向傳遞給對象的selector或消息的指針。 這兩個參數我們暫時不用管。 第三 第四個參數才是我們要關心的真正的入參。

    if (ObjC.available)
    {
    try
    {
    console.log('I am Comming in!');

    var className = "XXSignService";
    var funcName = "+ getSignWithDic:keys:";
    var hook = eval('ObjC.classes.' + className + '["' + funcName + '"]');
    console.log("[*] Class Name: " + className);
    console.log("[*] Method Name: " + funcName);
    console.log(hook);

    // /*
    Interceptor.attach(hook.implementation, {
    onEnter: function(args) {
    var receiver = new ObjC.Object(args[0]);
    console.log("Target class : " + receiver);

    var message1 = ObjC.Object(args[2]);
    var message2 = ObjC.Object(args[3]);

    console.log('msg1=' + message1.toString());
    console.log('msg2=' + message2.toString());

    },
    onLeave: function(retval) {
    var message = ObjC.Object(retval);
    console.log('getSignWithDic rc is:' + message.toString());

    }
    });
    // */


    }
    catch(err)
    {
    console.log("[!] Exception2: " + err.message);
    }

    }

    我們把2個入參和結果都打印出來

    IOS 某電商App簽名算法解析(一) 還是套路_android_08

    沒毛病,就是我們想要的結果。下一次我們再說說如何RPC調用吧。

    三、總結

    可執行文件100MB,IDA搞起來真的很慢。

    IOS的玩法和Android差不多,特征串定位,然后掛上Frida。

    F5大法好。

    IOS 某電商App簽名算法解析(一) 還是套路_android_09

    你一定要學套路,這樣才能有效的縮短學習的時間;但當你學會套路,并且開始使用套路的時候,一定要找到跟別人不一樣得使用方法,這樣才能讓你從一堆不會飛得雞里面,揮動翅膀,凌空飛起來,變成翱翔的鷹。

    TIP: 本文的目的只有一個就是學習更多的逆向技巧和思路,如果有人利用本文技術去進行非法商業獲取利益帶來的法律責任都是操作者自己承擔,和本文以及作者沒關系。

    關注微信公眾號: 奮飛安全,最新技術干貨實時推送

    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码