ある時点の情報 署名は完全に逆です

この記事では主に、いくつかの作業のアプリケーションの習熟度を紹介し、スタックをトレースして他の操作などを実行するかどうかを確認します。

パケット キャプチャ:
ここに画像の説明を挿入
署名は暗号化された値です。

ここに画像の説明を挿入
まずトレースを上ってスタックを下って暗号化します
ここに画像の説明を挿入

ここに画像の説明を挿入
Base64 が魔法のように変更されたかどうかを判断するために、結果が一貫しているかどうかを確認するために結果を Base64 化してみましょう。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

Base64 が標準であることを確認します。

今のスタックによると、次のようになります

0x101115468 /var/containers/Bundle/Application/9580891A-98B0-4F3F-9938-D794221B5B4D/yidian.app/yidian!+[RSA encryptData:withKeyRef:isSign:]
0x101115ae0 /var/containers/Bundle/Application/9580891A- 98B0- 4F3F-9938-D794221B5B4D/yidian.app/yidian!+[RSA encryptData:publicKey:]
0x101115a28 /var/containers/Bundle/Application/9580891A-98B0-4F3F-9938-D794221B5B4D/yidian.app/yidian!+[RSA暗号化文字列:publicKey:]
0x10108a8ac /var/containers/Bundle/Application/9580891A-98B0-4F3F-9938-D794221B5B4D/yidian.app/yidian!-[YDRequest getSignatureWithReqId:]
0x10108a6b0 /var/containers/Bundle/Application/958 0891A-98B0- 4F3F-9938-D794221B5B4D/yidian.app/yidian!-[YDRequest updateParametersForGet:reqid:]
0x10108aaf4 /var/containers/Bundle/Application/9580891A-98B0-4F3F-9938-D794221B5B4D/yidian.app/yidian!-[YDRequest initWithURLString:parameters:method:]
0x10108e300 /var/containers/Bundle/Application/95808 91A-98B0- 4F3F-9938-D794221B5B4D/yidian.app/yidian!-[HpEngineRequest initWithURLString:parameters:method:]
0x101047544 /var/containers/Bundle/Application/9580891A-98B0-4F3F-9938-D794221B5B4D/yid ian.app/yidian!-[ HpEnginefreshNewsListOfKeyword:sinceIndex:]
0x101a17858 /var/containers/Bundle/Application/9580891A-98B0-4F3F-9938-D794221B5B4D/yidian.app/yidian!-[HpNewsListDataProvider userRefreshlatestData:]
0x1017be2ac /var /コンテナ/バンドル/アプリケーション/9580891A- 98B0-4F3F-9938-D794221B5B4D/yidian.app/yidian!-[YDNewsListView userRefreshData:]
0x101a235bc /var/containers/Bundle/Application/9580891A-98B0-4F3F-9938-D794221B5B4D/yidian.app/yidian!-[YDNLViewModel DidFinishLoadingLocalData:]
0x101a166f0 yidian!0x16ae6f0 (0x1016ae6f) 0)
0x232360a38 libdispatch.dylib!_dispatch_call_block_and_release
0x2323617d4 libdispatch.dylib! _dispatch_client_callout
0x23230f008 libdispatch.dylib!_dispatch_main_queue_callback_4CFバリアント バリアントV A R I A NT mp
0x2328b4b20 CoreFoundation! CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE

ここに画像の説明を挿入
ここに画像の説明を挿入

もう一度フックしてみましょう: encryptData:withKeyRef:isSign:
ここに画像の説明を挿入
frida -UF -look.js をアプリに直接アタッチします

var initWithMethod = ObjC.classes.RSA['+ encryptData:withKeyRef:isSign:'];
Interceptor.attach(initWithMethod.implementation, {
    
    
    onEnter: function (args) {
    
    
        // console.log('initWithMethod called from:\n' +
        //     Thread.backtrace(this.context, Backtracer.ACCURATE)
        //         .map(DebugSymbol.fromAddress).join('\n') + '\n');
        console.log("args[2]: ",  ObjC.Object(args[2]));
        console.log("args[3]: ", hexdump(args[3]));
        console.log("args[4]: ", args[4]);
    }, onLeave: function (retval) {
    
    
        console.log('Base64Encode() this.args1 onLeave:',  hexdump(retval));
    }
});

ここに画像の説明を挿入
bool a5 は 0、つまり false、直接進みます
ここに画像の説明を挿入

ここに画像の説明を挿入

この時点で、この場所が上記の冒頭でスタックと暗号化を追跡した場所であることがわかりました。

スタックに従って調べてみましょう。

ここに画像の説明を挿入

ここに画像の説明を挿入
ここで見ると、rsa、次にbase64も実行されており、他の操作はありません

それを接続しましょう:

var initWithMethod = ObjC.classes.RSA['+ encryptString:publicKey:'];
Interceptor.attach(initWithMethod.implementation, {
    
    
    onEnter: function (args) {
    
    
        // console.log('initWithMethod called from:\n' +
        //     Thread.backtrace(this.context, Backtracer.ACCURATE)
        //         .map(DebugSymbol.fromAddress).join('\n') + '\n');
        console.log("args[2]: ", ObjC.Object(args[2]));
        console.log("args[3]: ", ObjC.Object(args[3]));
        console.log("args[4]: ",hexdump(args[4]));
    }, onLeave: function (retval) {
    
    
       console.log('Base64Encode() this.args1 onLeave:',  ObjC.Object(retval));
    }
});

ここに画像の説明を挿入

ここに画像の説明を挿入

行きます、すぐに出てきませんか?

暗号化する必要がある値: "pro6.4.0.00njbh2wlr_1685327378963_38033100"
入力パラメータのステッチング appid、cv、プラットフォーム、reqid、version

秘密鍵と公開鍵も公開されています。
ここに画像の説明を挿入
問題ありません。もう終わりにしましょう。

おすすめ

転載: blog.csdn.net/weixin_38927522/article/details/130943569