在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

汽車APP產(chǎn)品億盾加固分析

哆啦安全 ? 來源:矛和盾的故事 ? 2023-03-08 14:32 ? 次閱讀

一、前言

1.1、app加固的本質(zhì)

代碼安全只是表面,核心是幫助客戶滿足業(yè)務(wù)不被阻斷、關(guān)鍵數(shù)據(jù)資產(chǎn)不被竊取的安全需求。因為加固自身不創(chuàng)造價值,加固的價值必須和公司業(yè)務(wù)掛鉤,來間接體現(xiàn)。通過安全體系建立為業(yè)務(wù)服務(wù)保障,增加收益與減少了資損率。

1.2、不同視角看加固

切換立場、改變視角來看APP加固,因為對一件事的不同面,每一面都能看到的不同的東西。

用戶視角:更多的是關(guān)注功能使用與交互體驗,看到的是表現(xiàn)層的功能和交互。所以對于C端用戶而言,很難感知其存在價值。

產(chǎn)品視角:關(guān)注產(chǎn)品本身體驗與價值而考量,看到的是需求、方案、價值。

技術(shù)視角:關(guān)注技術(shù)成本和可擴展性與安全性,看到的是架構(gòu)、實現(xiàn)、可擴展、安全性。能感知到安全加固的重要性,但是更多的是從技術(shù)實現(xiàn)角度出發(fā)。

業(yè)務(wù)視角:保障業(yè)務(wù)正常運營,看到的是成本和收益。

所以,視角不同,觀點不同,加固決策不同,安全程度也不同。

有了上面這些鋪墊,接下來你看完文章后大概不會覺得這樣的方案很奇怪,這是計劃的一部分。

二、加固整體架構(gòu)

2.1、加固架構(gòu)

d2f5166c-aaa2-11ed-bfe3-dac502259ad0.jpg

2.2、解殼過程

殼加載運行起來后是解密原始dex與啟動加載APP Application過程,完成一系列的工作:

解密原apk的dex集合

使用加密過程中對應的算法進行解密每個dex文件。

將解密之后的dex集合添加到dexElements數(shù)組

通過反射將解密的dex集合添加到dexElements數(shù)組。

動態(tài)加載原apk的Application

原apk的Application在加密過程被替換成解密殼的Application,因此需要在加載殼過程中還原該操作。

三、殼java層分析

3.1、attachBaseContext

so釋放與加載在創(chuàng)建APP進程加載Application之前,完成解壓縮釋放到lib目錄、System.loadLibrary("nesec")加載so到內(nèi)存并在MyJni類中注冊了如下幾個jni方法:

public static native void cp();
publicstaticnativevoidd(Stringarg0);
publicstaticnativevoide(Stringarg0);
publicstaticnativebooleanload(Applicationarg0,Stringarg1);
publicstaticnativebooleanload2(Applicationarg0,Stringarg1);
publicstaticnativebooleanrun(Contextarg0,Applicationarg1);

3.2、native load 加載dex

加載完so后調(diào)用注冊好的native方法load解密dex并加載到內(nèi)內(nèi)存,dex加載的過程大到為dex文件解密及將解密的dex集合添加到dexElements數(shù)組。

3.3、原Application

加載完dex后要從原APP的Application運行,代碼如下:

public static String strAppName;


static {
    MyApplication.TAG = "wrapper";
    MyApplication.strAppName = "com.netease.nis.wrapper.MyApplication";
    MyApplication.a = null;
    MyApplication.b = null;
    MyApplication.newApp = null;
    MyApplication.mOfficial = true;
}
private static Application a(Context arg2) {
    try {
    if(MyApplication.newApp != null || MyApplication.strAppName.compareTo("") == 0) {
        return MyApplication.newApp;
    }


    ClassLoader v0_1 = arg2.getClassLoader();
    if(v0_1 == null) {
        return MyApplication.newApp;
    }


    Class v0_2 = v0_1.loadClass(MyApplication.strAppName);
    if(v0_2 != null) {
        MyApplication.newApp = (Application)v0_2.newInstance();
        return MyApplication.newApp;
    }
}
catch(Exception v0) {
    v0.toString();
    return MyApplication.newApp;
}


return MyApplication.newApp;
}

通過動態(tài)加載原app的Application并執(zhí)行,具體流程如下:

(1)通過Class.newInstance()創(chuàng)建一個Application實例;

(2)執(zhí)行Application實例的attach();

Application v0_7 = MyApplication.a(arg13);
MyApplication.newApp = v0_7;
if(v0_7 != null) {
    Method v0_8 = Application.class.getDeclaredMethod("attach", Context.class);
    if(v0_8 != null) {
        v0_8.setAccessible(true);
        try {
            v0_8.invoke(MyApplication.newApp, arg13);
            goto label_224;
        }
        catch(InvocationTargetException v0_9) {
        }


        new StringBuilder("[attachBaseContext] InvocationTargetException:").append(v0_9);
        goto label_204;
    }
}

四、殼so靜態(tài)分析

4.1、殼入口隱藏

按照我個人慣例,定位到殼so模塊后首先使用ida加載模塊靜態(tài)分析收集下信息(字符串,殼入口、導出方法)等,用ida打開后直接提示如圖4-1所示:

d31886ec-aaa2-11ed-bfe3-dac502259ad0.jpg

圖4-1

不用奇怪,這是節(jié)信息被處理過了,防止靜態(tài)反編譯,點擊ok繼續(xù),查看導出函數(shù)時發(fā)現(xiàn)一堆亂碼,如圖4-2所示:

d32fb8da-aaa2-11ed-bfe3-dac502259ad0.jpg

圖4-2

應該是被加密處理了,查看節(jié)信息也找不到init_array節(jié),如圖4-3所示:

d36a1642-aaa2-11ed-bfe3-dac502259ad0.jpg

圖4-3

靜態(tài)不好定位就動態(tài)定位殼入口,在內(nèi)存中一切的隱藏都很難跳系統(tǒng)機制。

五、殼so動態(tài)分析

5.1、殼入口定位

根據(jù)linker加載so流程中主要有兩個點可以作為殼入口,init或init_array是so程序代碼可以執(zhí)行的最早的時機, 然后才加載Jni_onload,只要在linker執(zhí)行init進下斷點就可以定位殼入口。如圖5-1所示:

d395819c-aaa2-11ed-bfe3-dac502259ad0.jpg

圖5-1

定位到的init_array方法中有幾個關(guān)鍵的地方,init_array3,解密Jni_OnLoad代碼。如圖5-2所示:

d3bd83d6-aaa2-11ed-bfe3-dac502259ad0.jpg

圖5-2

.note.gnu.text:000000782421DFD0                               dec_sub_7D26D97FD0            ; CODE XREF: dec_sub_7D26D98040+50↓p
.note.gnu.text:000000782421DFD0 62 03 00 B4                   CBZ             X2, locret_782421E03C
.note.gnu.text:000000782421DFD0
.note.gnu.text:000000782421DFD4 05 00 80 52                   MOV             W5, #0
.note.gnu.text:000000782421DFD8 22 00 02 8B                   ADD             X2, X1, X2
.note.gnu.text:000000782421DFDC E6 03 05 2A                   MOV             W6, W5
.note.gnu.text:000000782421DFDC
.note.gnu.text:000000782421DFE0
.note.gnu.text:000000782421DFE0                               loc_782421DFE0                ; CODE XREF: dec_sub_7D26D97FD0+68↓j
.note.gnu.text:000000782421DFE0 C6 04 00 11                   ADD             W6, W6, #1
.note.gnu.text:000000782421DFE4 C6 1C 00 12                   AND             W6, W6, #0xFF
.note.gnu.text:000000782421DFE8 C4 7C 40 93                   SXTW            X4, W6
.note.gnu.text:000000782421DFEC 03 68 64 38                   LDRB            W3, [X0,X4]
.note.gnu.text:000000782421DFF0 65 00 05 0B                   ADD             W5, W3, W5
.note.gnu.text:000000782421DFF4 A5 1C 00 12                   AND             W5, W5, #0xFF
.note.gnu.text:000000782421DFF8 A7 7C 40 93                   SXTW            X7, W5
.note.gnu.text:000000782421DFFC 08 68 67 38                   LDRB            W8, [X0,X7]
.note.gnu.text:000000782421E000 08 68 24 38                   STRB            W8, [X0,X4]
.note.gnu.text:000000782421E004 03 68 27 38                   STRB            W3, [X0,X7]
.note.gnu.text:000000782421E008 04 68 64 38                   LDRB            W4, [X0,X4]
.note.gnu.text:000000782421E00C 27 00 40 39                   LDRB            W7, [X1]
.note.gnu.text:000000782421E010 64 00 04 0B                   ADD             W4, W3, W4
.note.gnu.text:000000782421E014 84 1C 00 53                   UXTB            W4, W4
.note.gnu.text:000000782421E018 03 68 64 38                   LDRB            W3, [X0,X4]
.note.gnu.text:000000782421E01C 64 7C 02 53                   LSR             W4, W3, #2
.note.gnu.text:000000782421E020 83 18 03 2A                   ORR             W3, W4, W3,LSL#6
.note.gnu.text:000000782421E024 63 1C 00 53                   UXTB            W3, W3
.note.gnu.text:000000782421E028 63 E8 00 11                   ADD             W3, W3, #0x3A ; ':'
.note.gnu.text:000000782421E02C 63 00 07 4A                   EOR             W3, W3, W7
.note.gnu.text:000000782421E030 23 14 00 38                   STRB            W3, [X1],#1
.note.gnu.text:000000782421E034 3F 00 02 EB                   CMP             X1, X2
.note.gnu.text:000000782421E038 41 FD FF 54                   B.NE            loc_782421DFE0

5.2、運行時加解密技術(shù)

運行時解密,運行后加密:

.note.gnu.text:00000071554361D4                         decCode_loc_71F33B41D4 
.note.gnu.text:00000071554361D4 E4 2F 40 F9             LDR             X4, [SP,#arg_58]
.note.gnu.text:00000071554361D8 44 0D 00 B4             CBZ             X4, loc_7155436380
.note.gnu.text:00000071554361D8
.note.gnu.text:00000071554361DC 80 40 00 D1             SUB             X0, X4, #0x10
.note.gnu.text:00000071554361E0 81 04 00 D1             SUB             X1, X4, #1
.note.gnu.text:00000071554361E4 00 FC 44 D3             LSR             X0, X0, #4
.note.gnu.text:00000071554361E8 3F 38 00 F1             CMP             X1, #0xE
.note.gnu.text:00000071554361EC 00 04 00 91             ADD             X0, X0, #1
.note.gnu.text:00000071554361F0 02 EC 7C D3             LSL             X2, X0, #4
.note.gnu.text:00000071554361F4 29 17 00 54             B.LS            loc_71554364D8
.note.gnu.text:00000071554361F4
.note.gnu.text:00000071554361F8 E1 0E 01 4E             DUP             V1.16B, W23
.note.gnu.text:00000071554361FC E3 03 13 AA             MOV             X3, X19
.note.gnu.text:0000007155436200 01 00 80 D2             MOV             X1, #0
.note.gnu.text:0000007155436200
.note.gnu.text:0000007155436204
.note.gnu.text:0000007155436204                         Dec_Enc_Code_loc_71F33B4204 
.note.gnu.text:0000007155436204 60 00 C0 3D             LDR             Q0, [X3]
.note.gnu.text:0000007155436208 21 04 00 91             ADD             X1, X1, #1
.note.gnu.text:000000715543620C 1F 00 01 EB             CMP             X0, X1
.note.gnu.text:0000007155436210 00 1C 21 6E             EOR             V0.16B, V0.16B, V1.16B
.note.gnu.text:0000007155436214 60 04 81 3C             STR             Q0, [X3],#0x10
.note.gnu.text:0000007155436218 68 FF FF 54             B.HI            Dec_Enc_Code_loc_71F33B4204
.note.gnu.text:0000007155436218
.note.gnu.text:000000715543621C 9F 00 02 EB             CMP             X4, X2
.note.gnu.text:0000007155436220 00 0B 00 54             B.EQ            loc_7155436380
.note.gnu.text:0000007155436220
.note.gnu.text:0000007155436224
.note.gnu.text:0000007155436224                         loc_7155436224 
.note.gnu.text:0000007155436224 61 6A 62 38             LDRB            W1, [X19,X2]
.note.gnu.text:0000007155436228 40 04 00 91             ADD             X0, X2, #1
.note.gnu.text:000000715543622C 9F 00 00 EB             CMP             X4, X0
.note.gnu.text:0000007155436230 E1 02 01 4A             EOR             W1, W23, W1
.note.gnu.text:0000007155436234 61 6A 22 38             STRB            W1, [X19,X2]
.note.gnu.text:0000007155436238 49 0A 00 54             B.LS            loc_7155436380
.note.gnu.text:0000007155436238
.note.gnu.text:000000715543623C 63 6A 60 38             LDRB            W3, [X19,X0]
.note.gnu.text:0000007155436240 41 08 00 91             ADD             X1, X2, #2
.note.gnu.text:0000007155436244 3F 00 04 EB             CMP             X1, X4
.note.gnu.text:0000007155436248 E3 02 03 4A             EOR             W3, W23, W3
.note.gnu.text:000000715543624C 63 6A 20 38             STRB            W3, [X19,X0]
.note.gnu.text:0000007155436250 82 09 00 54             B.CS            loc_7155436380
.note.gnu.text:0000007155436250
.note.gnu.text:0000007155436254 63 6A 61 38             LDRB            W3, [X19,X1]
.note.gnu.text:0000007155436258 40 0C 00 91             ADD             X0, X2, #3
.note.gnu.text:000000715543625C 1F 00 04 EB             CMP             X0, X4
.note.gnu.text:0000007155436260 E3 02 03 4A             EOR             W3, W23, W3
.note.gnu.text:0000007155436264 63 6A 21 38             STRB            W3, [X19,X1]
.note.gnu.text:0000007155436268 C2 08 00 54             B.CS            loc_7155436380
.note.gnu.text:0000007155436268
.note.gnu.text:000000715543626C 63 6A 60 38             LDRB            W3, [X19,X0]
.note.gnu.text:0000007155436270 41 10 00 91             ADD             X1, X2, #4
.note.gnu.text:0000007155436274 9F 00 01 EB             CMP             X4, X1
.note.gnu.text:0000007155436278 E3 02 03 4A             EOR             W3, W23, W3
.note.gnu.text:000000715543627C 63 6A 20 38             STRB            W3, [X19,X0]
.note.gnu.text:0000007155436280 09 08 00 54             B.LS            loc_7155436380

執(zhí)行到代碼時解密,執(zhí)行后加密回去,可以防止靜態(tài)分析或內(nèi)存dump。

5.3、linker加載填充方法

解密字符串表:

解析elf定位到加密后字符串且,解密后如圖5-3所示:

d3ddfd6e-aaa2-11ed-bfe3-dac502259ad0.jpg

圖5-3

解密算法相對簡單,就是異或算法

.note.gnu.text:0000007155463288                         DecSecString_sub_71F336D288 
.note.gnu.text:0000007155463288 45 04 00 35             CBNZ            W5, loc_7155463310
.note.gnu.text:0000007155463288
.note.gnu.text:000000715546328C 64 01 00 34             CBZ             W4, loc_71554632B8
.note.gnu.text:000000715546328C
.note.gnu.text:0000007155463290 47 68 84 52             MOV             W7, #0x2342
.note.gnu.text:0000007155463294 05 00 80 D2             MOV             X5, #0
.note.gnu.text:0000007155463298 27 C6 AA 72             MOVK            W7, #0x5631,LSL#16
.note.gnu.text:0000007155463298
.note.gnu.text:000000715546329C
.note.gnu.text:000000715546329C                         DecString_loc_71F336D29C  
.note.gnu.text:000000715546329C 66 68 65 B8             LDR             W6, [X3,X5]
.note.gnu.text:00000071554632A0 C6 00 07 4A             EOR             W6, W6, W7
.note.gnu.text:00000071554632A4 E7 00 05 0B             ADD             W7, W7, W5
.note.gnu.text:00000071554632A8 66 68 25 B8             STR             W6, [X3,X5]
.note.gnu.text:00000071554632AC A5 10 00 91             ADD             X5, X5, #4
.note.gnu.text:00000071554632B0 9F 00 05 6B             CMP             W4, W5
.note.gnu.text:00000071554632B4 48 FF FF 54             B.HI            DecString_loc_71F336D29C
.note.gnu.text:00000071554632B4
.note.gnu.text:00000071554632B8
.note.gnu.text:00000071554632B8                         loc_71554632B8   
.note.gnu.text:00000071554632B8 E3 03 01 2A             MOV             W3, W1
.note.gnu.text:00000071554632BC 3F 00 02 6B             CMP             W1, W2
.note.gnu.text:00000071554632C0 63 04 03 8B             ADD             X3, X3, X3,LSL#1
.note.gnu.text:00000071554632C4 00 0C 03 8B             ADD             X0, X0, X3,LSL#3
.note.gnu.text:00000071554632C8 42 02 00 54             B.CS            loc_7155463310
.note.gnu.text:00000071554632C8
.note.gnu.text:00000071554632CC 43 04 00 51             SUB             W3, W2, #1
.note.gnu.text:00000071554632D0 25 44 05 11             ADD             W5, W1, #0x151
.note.gnu.text:00000071554632D4 63 00 01 4B             SUB             W3, W3, W1
.note.gnu.text:00000071554632D8 21 6C 05 11             ADD             W1, W1, #0x15B
.note.gnu.text:00000071554632DC 63 04 00 91             ADD             X3, X3, #1
.note.gnu.text:00000071554632E0 63 04 03 8B             ADD             X3, X3, X3,LSL#1
.note.gnu.text:00000071554632E4 03 0C 03 8B             ADD             X3, X0, X3,LSL#3

解密指令:

像是魔改后的rc4算法。

.note.gnu.text:0000007155462040                         dec_sub_7D26D98040            ; CODE XREF: Dec_sub_71F336C13C+13C↓p
.note.gnu.text:0000007155462040                                                       ; Dec_sub_71F336C13C+1CC↓p
.note.gnu.text:0000007155462040                                                       ; Dec_sub_71F336C13C+284↓p
.note.gnu.text:0000007155462040
.note.gnu.text:0000007155462040                         var_150= -0x150
.note.gnu.text:0000007155462040                         var_140= -0x140
.note.gnu.text:0000007155462040                         var_130= -0x130
.note.gnu.text:0000007155462040                         var_114= -0x114
.note.gnu.text:0000007155462040                         var_108= -0x108
.note.gnu.text:0000007155462040                         var_8= -8
.note.gnu.text:0000007155462040
.note.gnu.text:0000007155462040 FF 43 05 D1             SUB             SP, SP, #0x150
.note.gnu.text:0000007155462044 E3 F3 00 91             ADD             X3, SP, #0x150+var_114
.note.gnu.text:0000007155462048 F3 53 00 A9             STP             X19, X20, [SP,#0x150+var_150]
.note.gnu.text:000000715546204C D3 01 00 D0             ADRP            X19, #off_715549CF00@PAGE
.note.gnu.text:0000007155462050 FE 13 00 F9             STR             X30, [SP,#0x150+var_130]
.note.gnu.text:0000007155462054 F5 5B 01 A9             STP             X21, X22, [SP,#0x150+var_140]
.note.gnu.text:0000007155462058 F4 23 01 91             ADD             X20, SP, #0x150+var_108
.note.gnu.text:000000715546205C F5 03 01 AA             MOV             X21, X1
.note.gnu.text:0000007155462060 73 82 47 F9             LDR             X19, [X19,#off_715549CF00@PAGEOFF]
.note.gnu.text:0000007155462064 E1 03 03 AA             MOV             X1, X3
.note.gnu.text:0000007155462068 F6 03 00 AA             MOV             X22, X0
.note.gnu.text:000000715546206C E2 3F 00 B9             STR             W2, [SP,#0x150+var_114]
.note.gnu.text:0000007155462070 E0 03 14 AA             MOV             X0, X20
.note.gnu.text:0000007155462074 82 00 80 D2             MOV             X2, #4
.note.gnu.text:0000007155462078 63 02 40 F9             LDR             X3, [X19]
.note.gnu.text:000000715546207C E3 A7 00 F9             STR             X3, [SP,#0x150+var_8]
.note.gnu.text:0000007155462080 40 FF FF 97             BL              initkey_sub_7D26D97D80
.note.gnu.text:0000007155462080
.note.gnu.text:0000007155462084 E0 03 14 AA             MOV             X0, X20
.note.gnu.text:0000007155462088 E1 03 16 AA             MOV             X1, X22
.note.gnu.text:000000715546208C E2 03 15 AA             MOV             X2, X21
.note.gnu.text:0000007155462090 D0 FF FF 97             BL              dec_sub_7D26D97FD0
.note.gnu.text:0000007155462090
.note.gnu.text:0000007155462094 E1 A7 40 F9             LDR             X1, [SP,#0x150+var_8]
.note.gnu.text:0000007155462098 60 02 40 F9             LDR             X0, [X19]
.note.gnu.text:000000715546209C 3F 00 00 EB             CMP             X1, X0
.note.gnu.text:00000071554620A0 C1 00 00 54             B.NE            loc_71554620B8
.note.gnu.text:00000071554620A0
.note.gnu.text:00000071554620A4 F3 53 40 A9             LDP             X19, X20, [SP,#0x150+var_150]
.note.gnu.text:00000071554620A8 F5 5B 41 A9             LDP             X21, X22, [SP,#0x150+var_140]
.note.gnu.text:00000071554620AC FE 13 40 F9             LDR             X30, [SP,#0x150+var_130]
.note.gnu.text:00000071554620B0 FF 43 05 91             ADD             SP, SP, #0x150
.note.gnu.text:00000071554620B4 C0 03 5F D6             RET


.note.gnu.text:0000007155461FD0
.note.gnu.text:0000007155461FD0                         dec_sub_7D26D97FD0            ; CODE XREF: dec_sub_7D26D98040+50↓p
.note.gnu.text:0000007155461FD0 62 03 00 B4             CBZ             X2, locret_715546203C
.note.gnu.text:0000007155461FD0
.note.gnu.text:0000007155461FD4 05 00 80 52             MOV             W5, #0
.note.gnu.text:0000007155461FD8 22 00 02 8B             ADD             X2, X1, X2
.note.gnu.text:0000007155461FDC E6 03 05 2A             MOV             W6, W5
.note.gnu.text:0000007155461FDC
.note.gnu.text:0000007155461FE0
.note.gnu.text:0000007155461FE0                         loc_7155461FE0                ; CODE XREF: dec_sub_7D26D97FD0+68↓j
.note.gnu.text:0000007155461FE0 C6 04 00 11             ADD             W6, W6, #1
.note.gnu.text:0000007155461FE4 C6 1C 00 12             AND             W6, W6, #0xFF
.note.gnu.text:0000007155461FE8 C4 7C 40 93             SXTW            X4, W6
.note.gnu.text:0000007155461FEC 03 68 64 38             LDRB            W3, [X0,X4]
.note.gnu.text:0000007155461FF0 65 00 05 0B             ADD             W5, W3, W5
.note.gnu.text:0000007155461FF4 A5 1C 00 12             AND             W5, W5, #0xFF
.note.gnu.text:0000007155461FF8 A7 7C 40 93             SXTW            X7, W5
.note.gnu.text:0000007155461FFC 08 68 67 38             LDRB            W8, [X0,X7]
.note.gnu.text:0000007155462000 08 68 24 38             STRB            W8, [X0,X4]
.note.gnu.text:0000007155462004 03 68 27 38             STRB            W3, [X0,X7]
.note.gnu.text:0000007155462008 04 68 64 38             LDRB            W4, [X0,X4]
.note.gnu.text:000000715546200C 27 00 40 39             LDRB            W7, [X1]
.note.gnu.text:0000007155462010 64 00 04 0B             ADD             W4, W3, W4
.note.gnu.text:0000007155462014 84 1C 00 53             UXTB            W4, W4
.note.gnu.text:0000007155462018 03 68 64 38             LDRB            W3, [X0,X4]
.note.gnu.text:000000715546201C 64 7C 02 53             LSR             W4, W3, #2
.note.gnu.text:0000007155462020 83 18 03 2A             ORR             W3, W4, W3,LSL#6
.note.gnu.text:0000007155462024 63 1C 00 53             UXTB            W3, W3
.note.gnu.text:0000007155462028 63 E8 00 11             ADD             W3, W3, #0x3A ; ':'
.note.gnu.text:000000715546202C 63 00 07 4A             EOR             W3, W3, W7
.note.gnu.text:0000007155462030 23 14 00 38             STRB            W3, [X1],#1
.note.gnu.text:0000007155462034 3F 00 02 EB             CMP             X1, X2
.note.gnu.text:0000007155462038 41 FD FF 54             B.NE            loc_7155461FE0
.note.gnu.text:0000007155462038
.note.gnu.text:000000715546203C
.note.gnu.text:000000715546203C                         locret_715546203C             ; CODE XREF: dec_sub_7D26D97FD0↑j
.note.gnu.text:000000715546203C C0 03 5F D6             RET

填充指令:

解析ELF頭,獲取到Load so所需要的節(jié),mmap映射到內(nèi)存中,抹掉elf頭信息,mprotect修改內(nèi)存的讀寫權(quán)限。具填充代碼如下:

.note.gnu.text:0000007155462F60
.note.gnu.text:0000007155462F60                         ; 填充指令
.note.gnu.text:0000007155462F60
.note.gnu.text:0000007155462F60                         mmap_so_memcpy_code_sub_71F336CF60
.note.gnu.text:0000007155462F60
.note.gnu.text:0000007155462F60                         var_90= -0x90
.note.gnu.text:0000007155462F60                         var_80= -0x80
.note.gnu.text:0000007155462F60                         var_70= -0x70
.note.gnu.text:0000007155462F60                         var_60= -0x60
.note.gnu.text:0000007155462F60                         var_50= -0x50
.note.gnu.text:0000007155462F60                         var_40= -0x40
.note.gnu.text:0000007155462F60                         var_38= -0x38
.note.gnu.text:0000007155462F60                         var_28= -0x28
.note.gnu.text:0000007155462F60                         var_10= -0x10
.note.gnu.text:0000007155462F60                         var_8= -8
.note.gnu.text:0000007155462F60
.note.gnu.text:0000007155462F60 FF 43 02 D1             SUB             SP, SP, #0x90
.note.gnu.text:0000007155462F64 EA AF 06 6D             STP             D10, D11, [SP,#0x90+var_28]
.note.gnu.text:0000007155462F68 E8 A7 05 6D             STP             D8, D9, [SP,#0x90+var_38]
.note.gnu.text:0000007155462F6C FB 73 04 A9             STP             X27, X28, [SP,#0x90+var_50]
.note.gnu.text:0000007155462F70 FC 03 00 AA             MOV             X28, X0
.note.gnu.text:0000007155462F74 FE 2B 00 F9             STR             X30, [SP,#0x90+var_40]
.note.gnu.text:0000007155462F78 F3 53 00 A9             STP             X19, X20, [SP,#0x90+var_90]
.note.gnu.text:0000007155462F7C F5 5B 01 A9             STP             X21, X22, [SP,#0x90+var_80]
.note.gnu.text:0000007155462F80 F7 63 02 A9             STP             X23, X24, [SP,#0x90+var_70]
.note.gnu.text:0000007155462F84 F9 6B 03 A9             STP             X25, X26, [SP,#0x90+var_60]
.note.gnu.text:0000007155462F88 13 00 80 D2             MOV             X19, #0
.note.gnu.text:0000007155462F8C 81 43 40 F9             LDR             X1, [X28,#0x80]
.note.gnu.text:0000007155462F90 F5 03 13 AA             MOV             X21, X19
.note.gnu.text:0000007155462F94 00 04 40 F9             LDR             X0, [X0,#8]
.note.gnu.text:0000007155462F98 E2 03 01 AA             MOV             X2, X1
.note.gnu.text:0000007155462F9C 2B 00 67 9E             FMOV            D11, X1
.note.gnu.text:0000007155462FA0 01 70 40 79             LDRH            W1, [X0,#0x38]
.note.gnu.text:0000007155462FA4 41 70 00 79             STRH            W1, [X2,#0x38]
.note.gnu.text:0000007155462FA8 01 08 80 D2             MOV             X1, #0x40 ; '@'
.note.gnu.text:0000007155462FAC 41 10 00 F9             STR             X1, [X2,#0x20]
.note.gnu.text:0000007155462FB0 02 70 40 79             LDRH            W2, [X0,#0x38]
.note.gnu.text:0000007155462FB4 81 07 40 F9             LDR             X1, [X28,#8]
.note.gnu.text:0000007155462FB8 80 43 40 F9             LDR             X0, [X28,#0x80]
.note.gnu.text:0000007155462FBC 43 E4 7A D3             LSL             X3, X2, #6
.note.gnu.text:0000007155462FC0 62 0C 02 CB             SUB             X2, X3, X2,LSL#3
.note.gnu.text:0000007155462FC4 21 00 01 91             ADD             X1, X1, #0x40 ; '@'
.note.gnu.text:0000007155462FC8 00 00 01 91             ADD             X0, X0, #0x40 ; '@'
.note.gnu.text:0000007155462FCC 91 F7 FF 97             BL              memcpy_1
.note.gnu.text:0000007155462FCC
.note.gnu.text:0000007155462FD0 C0 0A 00 94             BL              fopen_maps_sub_71F336FAD0
.note.gnu.text:0000007155462FD0
.note.gnu.text:0000007155462FD4 09 00 27 1E             FMOV            S9, W0
.note.gnu.text:0000007155462FD8 E1 03 13 AA             MOV             X1, X19
.note.gnu.text:0000007155462FDC 42 00 80 52             MOV             W2, #2
.note.gnu.text:0000007155462FE0 10 F7 FF 97             BL              lseek_0
.note.gnu.text:0000007155462FE0
.note.gnu.text:0000007155462FE4 0A 00 67 9E             FMOV            D10, X0
.note.gnu.text:0000007155462FE8 80 0F 40 F9             LDR             X0, [X28,#0x18]
.note.gnu.text:0000007155462FEC C0 00 00 B5             CBNZ            X0, loc_7155463004
.note.gnu.text:0000007155462FEC
.note.gnu.text:0000007155462FF0 4D 00 00 14             B               loc_7155463124
.note.gnu.text:0000007155462FF0
.note.gnu.text:0000007155462FF4
.note.gnu.text:0000007155462FF4                         loc_7155462FF4
.note.gnu.text:0000007155462FF4 B5 06 00 91             ADD             X21, X21, #1
.note.gnu.text:0000007155462FF8 73 E2 00 91             ADD             X19, X19, #0x38 ; '8'
.note.gnu.text:0000007155462FFC 1F 00 15 EB             CMP             X0, X21       ; 判斷是否結(jié)束
.note.gnu.text:0000007155463000 29 09 00 54             B.LS            loc_7155463124
.note.gnu.text:0000007155463000
.note.gnu.text:0000007155463004
.note.gnu.text:0000007155463004                         loc_7155463004 
.note.gnu.text:0000007155463004
.note.gnu.text:0000007155463004 81 17 40 F9             LDR             X1, [X28,#0x28]
.note.gnu.text:0000007155463008 36 00 13 8B             ADD             X22, X1, X19
.note.gnu.text:000000715546300C 21 68 73 B8             LDR             W1, [X1,X19]
.note.gnu.text:0000007155463010 3F 04 00 71             CMP             W1, #1
.note.gnu.text:0000007155463014 01 FF FF 54             B.NE            loc_7155462FF4
.note.gnu.text:0000007155463014
.note.gnu.text:0000007155463018 C0 0A 40 F9             LDR             X0, [X22,#0x10]
.note.gnu.text:000000715546301C 84 03 40 F9             LDR             X4, [X28]
.note.gnu.text:0000007155463020 D4 16 40 F9             LDR             X20, [X22,#0x28]
.note.gnu.text:0000007155463024 98 00 00 8B             ADD             X24, X4, X0
.note.gnu.text:0000007155463028 C0 06 40 F9             LDR             X0, [X22,#8]
.note.gnu.text:000000715546302C 94 FE 3F 91             ADD             X20, X20, #0xFFF
.note.gnu.text:0000007155463030 1A CF 74 92             AND             X26, X24, #0xFFFFFFFFFFFFF000
.note.gnu.text:0000007155463034 94 02 18 8B             ADD             X20, X20, X24
.note.gnu.text:0000007155463038 D9 12 40 F9             LDR             X25, [X22,#0x20]
.note.gnu.text:000000715546303C 94 CE 74 92             AND             X20, X20, #0xFFFFFFFFFFFFF000
.note.gnu.text:0000007155463040 5F 03 14 EB             CMP             X26, X20
.note.gnu.text:0000007155463044 17 03 19 8B             ADD             X23, X24, X25
.note.gnu.text:0000007155463048 08 00 67 9E             FMOV            D8, X0
.note.gnu.text:000000715546304C C3 08 00 54             B.CC            loc_7155463164
.note.gnu.text:000000715546304C
.note.gnu.text:0000007155463050
.note.gnu.text:0000007155463050                         loc_7155463050 
.note.gnu.text:0000007155463050 C0 01 00 B0             ADRP            X0, #off_715549CFD0@PAGE
.note.gnu.text:0000007155463054 9B 02 1A CB             SUB             X27, X20, X26
.note.gnu.text:0000007155463058 E1 03 1B AA             MOV             X1, X27
.note.gnu.text:000000715546305C 02 E8 47 F9             LDR             X2, [X0,#off_715549CFD0@PAGEOFF]
.note.gnu.text:0000007155463060 C0 01 00 B0             ADRP            X0, #off_715549CFE0@PAGE
.note.gnu.text:0000007155463064 03 F0 47 F9             LDR             X3, [X0,#off_715549CFE0@PAGEOFF]
.note.gnu.text:0000007155463068 E0 03 1A AA             MOV             X0, X26
.note.gnu.text:000000715546306C 42 00 40 B9             LDR             W2, [X2]
.note.gnu.text:0000007155463070 E3 47 00 F9             STR             X3, [SP,#0x90+var_8]
.note.gnu.text:0000007155463074 68 08 40 F9             LDR             X8, [X3,#(qword_715530E800+8 - 0x715530E7F8)]
.note.gnu.text:0000007155463078 42 04 00 32             ORR             W2, W2, #3
.note.gnu.text:000000715546307C 00 01 3F D6             BLR             X8            ; mprotect
.note.gnu.text:000000715546307C
.note.gnu.text:0000007155463080 E8 03 00 2A             MOV             W8, W0
.note.gnu.text:0000007155463084 61 17 80 52             MOV             W1, #0xBB
.note.gnu.text:0000007155463088 E0 03 1A AA             MOV             X0, X26
.note.gnu.text:000000715546308C E2 03 1B AA             MOV             X2, X27
.note.gnu.text:0000007155463090 E8 43 00 F9             STR             X8, [SP,#0x90+var_10]
.note.gnu.text:0000007155463094 EF F6 FF 97             BL              memset_0      ; 用BB填充ELF頭
.note.gnu.text:0000007155463094
.note.gnu.text:0000007155463098 E8 43 40 F9             LDR             X8, [SP,#0x90+var_10]
.note.gnu.text:000000715546309C E3 47 40 F9             LDR             X3, [SP,#0x90+var_8]
.note.gnu.text:00000071554630A0 1F 05 00 31             CMN             W8, #1
.note.gnu.text:00000071554630A4 40 0B 00 54             B.EQ            loc_715546320C
.note.gnu.text:00000071554630A4
.note.gnu.text:00000071554630A8 B9 06 00 B5             CBNZ            X25, loc_715546317C
.note.gnu.text:00000071554630A8
.note.gnu.text:00000071554630AC
.note.gnu.text:00000071554630AC                         loc_71554630AC 
.note.gnu.text:00000071554630AC C0 06 40 B9             LDR             W0, [X22,#4]
.note.gnu.text:00000071554630B0 60 00 08 36             TBZ             W0, #1, loc_71554630BC
.note.gnu.text:00000071554630B0
.note.gnu.text:00000071554630B4 E2 2E 40 F2             ANDS            X2, X23, #0xFFF
.note.gnu.text:00000071554630B8 81 09 00 54             B.NE            loc_71554631E8
.note.gnu.text:00000071554630B8
.note.gnu.text:00000071554630BC
.note.gnu.text:00000071554630BC                         loc_71554630BC 
.note.gnu.text:00000071554630BC   
.note.gnu.text:00000071554630BC F7 FE 3F 91             ADD             X23, X23, #0xFFF
.note.gnu.text:00000071554630C0 F7 CE 74 92             AND             X23, X23, #0xFFFFFFFFFFFFF000
.note.gnu.text:00000071554630C4 9F 02 17 EB             CMP             X20, X23
.note.gnu.text:00000071554630C8 A8 06 00 54             B.HI            mmap_loc_71F336D19C
.note.gnu.text:00000071554630C8
.note.gnu.text:00000071554630CC
.note.gnu.text:00000071554630CC                         loc_71554630CC 
.note.gnu.text:00000071554630CC C1 01 00 B0             ADRP            X1, #off_715549CFE0@PAGE
.note.gnu.text:00000071554630D0 C3 06 40 B9             LDR             W3, [X22,#4]
.note.gnu.text:00000071554630D4 E0 03 1A AA             MOV             X0, X26
.note.gnu.text:00000071554630D8 62 00 00 12             AND             W2, W3, #1
.note.gnu.text:00000071554630DC 65 08 42 D3             UBFX            X5, X3, #2, #1
.note.gnu.text:00000071554630E0 24 F0 47 F9             LDR             X4, [X1,#off_715549CFE0@PAGEOFF]
.note.gnu.text:00000071554630E4 5F 00 1F 6B             CMP             W2, WZR
.note.gnu.text:00000071554630E8 63 00 1F 12             AND             W3, W3, #2
.note.gnu.text:00000071554630EC 82 00 80 52             MOV             W2, #4
.note.gnu.text:00000071554630F0 42 10 9F 1A             CSEL            W2, W2, WZR, NE
.note.gnu.text:00000071554630F4 A3 00 03 2A             ORR             W3, W5, W3
.note.gnu.text:00000071554630F8 84 08 40 F9             LDR             X4, [X4,#(qword_715530E800+8 - 0x715530E7F8)]
.note.gnu.text:00000071554630FC E1 03 1B AA             MOV             X1, X27
.note.gnu.text:0000007155463100 62 00 02 2A             ORR             W2, W3, W2
.note.gnu.text:0000007155463104 80 00 3F D6             BLR             X4            ; mprotect
.note.gnu.text:0000007155463104
.note.gnu.text:0000007155463108 1F 04 00 31             CMN             W0, #1
.note.gnu.text:000000715546310C 00 08 00 54             B.EQ            loc_715546320C
.note.gnu.text:000000715546310C
.note.gnu.text:0000007155463110 80 0F 40 F9             LDR             X0, [X28,#0x18]
.note.gnu.text:0000007155463114 B5 06 00 91             ADD             X21, X21, #1
.note.gnu.text:0000007155463118 73 E2 00 91             ADD             X19, X19, #0x38 ; '8'
.note.gnu.text:000000715546311C 1F 00 15 EB             CMP             X0, X21
.note.gnu.text:0000007155463120 28 F7 FF 54             B.HI            loc_7155463004
.note.gnu.text:0000007155463120
.note.gnu.text:0000007155463124
.note.gnu.text:0000007155463124                         loc_7155463124  
.note.gnu.text:0000007155463124                                                       
.note.gnu.text:0000007155463124 20 01 26 1E             FMOV            W0, S9
.note.gnu.text:0000007155463128 1F 00 1F 6B             CMP             W0, WZR
.note.gnu.text:000000715546312C 6D 00 00 54             B.LE            loc_7155463138
.note.gnu.text:000000715546312C
.note.gnu.text:0000007155463130 20 01 26 1E             FMOV            W0, S9
.note.gnu.text:0000007155463134 FB F6 FF 97             BL              close_0
.note.gnu.text:0000007155463134
.note.gnu.text:0000007155463138
.note.gnu.text:0000007155463138                         loc_7155463138 
.note.gnu.text:0000007155463138 20 00 80 52             MOV             W0, #1
.note.gnu.text:0000007155463138
.note.gnu.text:000000715546313C
.note.gnu.text:000000715546313C                         loc_715546313C   
.note.gnu.text:000000715546313C F3 53 40 A9             LDP             X19, X20, [SP,#0x90+var_90]
.note.gnu.text:0000007155463140 E8 A7 45 6D             LDP             D8, D9, [SP,#0x90+var_38]
.note.gnu.text:0000007155463144 F5 5B 41 A9             LDP             X21, X22, [SP,#0x90+var_80]
.note.gnu.text:0000007155463148 EA AF 46 6D             LDP             D10, D11, [SP,#0x90+var_28]
.note.gnu.text:000000715546314C F7 63 42 A9             LDP             X23, X24, [SP,#0x90+var_70]
.note.gnu.text:0000007155463150 F9 6B 43 A9             LDP             X25, X26, [SP,#0x90+var_60]
.note.gnu.text:0000007155463154 FB 73 44 A9             LDP             X27, X28, [SP,#0x90+var_50]
.note.gnu.text:0000007155463158 FE 2B 40 F9             LDR             X30, [SP,#0x90+var_40]
.note.gnu.text:000000715546315C FF 43 02 91             ADD             SP, SP, #0x90
.note.gnu.text:0000007155463160 C0 03 5F D6             RET

這樣做的一個好處就是防止從內(nèi)存中直接反elf dump出來。以上流程都是在init_array中完成,接下來是執(zhí)行JNI_OnLoad方法。

5.4、JNI_OnLoad定位

雖然代碼己經(jīng)解密并填充,但是導出函數(shù)還是不能看到,所以還是需要借肋系統(tǒng)機制定位Jni_OnLoad方法。

分析LoadNativeLibrary流程,執(zhí)行到到_ZN3art9JavaVMExt17LoadNativeLibraryEP7_JNIEnvRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEP8_jobjectP7_jclassPS9_方法,這個方法中會調(diào)用_ZN3art13SharedLibrary29FindSymbolWithoutNativeBridgeERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE,方法直接返回JNI_OnLoad地址。

5.5、反調(diào)式

查找是否有android_server運行

.note.gnu.proc:00000071553D11B4 40 01 89 9A             CSEL            X0, X10, X9, EQ
.note.gnu.proc:00000071553D11B4
.note.gnu.proc:00000071553D11B8                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D11B8 B2 CD 02 94             BL              opendir       ; /proc/
.note.gnu.proc:00000071553D11B8
.note.gnu.proc:00000071553D11BC                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D11BC 60 0A 00 B4             CBZ             X0, loc_71553D1308
.note.gnu.proc:00000071553D11C0 F4 03 00 AA             MOV             X20, X0
.note.gnu.proc:00000071553D11C4 B3 CD 02 94             BL              readdir

5.6、RegisterNatives

注冊native方法

.note.gnu.proc:00000071553E88AC                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553E88AC E2 03 16 AA             MOV             X2, X22
.note.gnu.proc:00000071553E88B0 00 01 3F D6             BLR             X8            ; RegisterNatives
.note.gnu.proc:00000071553E88B0
.note.gnu.proc:00000071553E88B4                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553E88B4 F7 03 00 2A             MOV             W23, W0       ; RegisterNatives END
.note.gnu.proc:00000071553E88B4
.note.gnu.proc:00000071553E88B8                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553E88B8 E0 03 16 AA             MOV             X0, X22

根據(jù)源碼中結(jié)構(gòu)可以得到方法存放位置,X2寄存器存放native方法。

static int registerNativeMethods(JNIEnv* env
        , const char* className
        , JNINativeMethod* gMethods, int numMethods)
gMethods methods[] 數(shù)組 :其中定義了 Java 層方法與 Native 層方法的對應關(guān)系 ;
JNINativeMethod 是結(jié)構(gòu)體   
        typedef struct {
            const char* name;       //Java 中定義的 Native 方法名 , 注意這是一個 C 字符串
            const char* signature;  //函數(shù)簽名 , 可以使用 javap 生成
            void*       fnPtr;      //C/C++ 中的 Native 函數(shù)簽名
        } JNINativeMethod;

5.6、解密dex

檢測常見脫殼器:

.note.gnu.proc:00000071553C3680 94 04 03 94             BL              getString_sub_78232118D0
.note.gnu.proc:00000071553C3680
.note.gnu.proc:00000071553C3684                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553C3684 E8 23 40 39             LDRB            W8, [SP,#0x60+var_58]
.note.gnu.proc:00000071553C3684
.note.gnu.proc:00000071553C3688                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553C3688 E9 0F 40 F9             LDR             X9, [SP,#0x60+var_48]
.note.gnu.proc:00000071553C3688
.note.gnu.proc:00000071553C368C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553C368C E1 03 1F 2A             MOV             W1, WZR
.note.gnu.proc:00000071553C368C
.note.gnu.proc:00000071553C3690                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553C3690 1F 01 00 72             TST             W8, #1
.note.gnu.proc:00000071553C3690
.note.gnu.proc:00000071553C3694                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553C3694 E0 02 89 9A             CSEL            X0, X23, X9, EQ
.note.gnu.proc:00000071553C3694
.note.gnu.proc:00000071553C3698                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553C3698 3E 05 03 94             BL              access
.note.gnu.proc:00000071553C3698
.note.gnu.proc:00000071553C369C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553C369C E8 23 40 39             LDRB            W8, [SP,#0x60+var_58]
.note.gnu.proc:00000071553C369C
//特征
/data/dexname
/data/local/tmp/unpacker.config
/data/fart
/sdcard/fart
/data/local/tmp/libFupk3.so
libFupk3.so
libblackdex.so
libhoudini.so //模擬器檢測

創(chuàng)建子進程反調(diào)試:

.note.gnu.proc:00000071553D2340 CC C9 02 94             BL              fork
.note.gnu.proc:00000071553D2340
.note.gnu.proc:00000071553D2344                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2344 60 04 00 34             CBZ             W0, loc_71553D23D0
.note.gnu.proc:00000071553D2344
.note.gnu.proc:00000071553D2348                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2348 1F 04 00 71             CMP             W0, #1
.note.gnu.proc:00000071553D2348
.note.gnu.proc:00000071553D234C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D234C 8B 06 00 54             B.LT            loc_71553D241C
.note.gnu.proc:00000071553D234C
.note.gnu.proc:00000071553D2350                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2350 13 00 00 90             ADRP            X19, #sub_71553D245C@PAGE
.note.gnu.proc:00000071553D2350
.note.gnu.proc:00000071553D2354                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2354 F4 05 00 F0             ADRP            X20, #(qword_7155490F20+0x510)@PAGE
.note.gnu.proc:00000071553D2354
.note.gnu.proc:00000071553D2358                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2358 73 72 11 91             ADD             X19, X19, #sub_71553D245C@PAGEOFF
.note.gnu.proc:00000071553D2358
.note.gnu.proc:00000071553D235C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D235C 80 32 04 B9             STR             W0, [X20,#(qword_7155490F20+0x510)@PAGEOFF]
.note.gnu.proc:00000071553D235C
.note.gnu.proc:00000071553D2360                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2360 20 02 80 52             MOV             W0, #0x11
.note.gnu.proc:00000071553D2360
.note.gnu.proc:00000071553D2364                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2364 E1 03 13 AA             MOV             X1, X19
.note.gnu.proc:00000071553D2364
.note.gnu.proc:00000071553D2368                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2368 B6 C9 02 94             BL              getfuncAddress
.note.gnu.proc:00000071553D2368
.note.gnu.proc:00000071553D236C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D236C 00 E4 00 6F             MOVI            V0.2D, #0
.note.gnu.proc:00000071553D236C
.note.gnu.proc:00000071553D2370                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2370 A1 C3 00 D1             SUB             X1, X29, #-(0x20+var_50)
.note.gnu.proc:00000071553D2370
.note.gnu.proc:00000071553D2374                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2374 20 02 80 52             MOV             W0, #0x11
.note.gnu.proc:00000071553D2374
.note.gnu.proc:00000071553D2378                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2378 E2 03 1F AA             MOV             X2, XZR
.note.gnu.proc:00000071553D2378
.note.gnu.proc:00000071553D237C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D237C A0 83 3E AD             STP             Q0, Q0, [X29,#0x20+var_50]
.note.gnu.proc:00000071553D237C
.note.gnu.proc:00000071553D2380                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2380 B3 83 1D F8             STUR            X19, [X29,#0x20+var_50+8]
.note.gnu.proc:00000071553D2380
.note.gnu.proc:00000071553D2384                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2384 AB C8 02 94             BL              nop_6045B09FB4
.note.gnu.proc:00000071553D2384
.note.gnu.proc:00000071553D2388                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2388 83 32 84 B9             LDRSW           X3, [X20,#(qword_7155490F20+0x510)@PAGEOFF]
.note.gnu.proc:00000071553D2388
.note.gnu.proc:00000071553D238C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D238C 02 00 00 90 42 A0 10 91 ADRL            X2, T2_Antidbg_sub_782315F428
.note.gnu.proc:00000071553D2394 A0 C3 00 D1             SUB             X0, X29, #-(0x20+var_50)
.note.gnu.proc:00000071553D2394
.note.gnu.proc:00000071553D2398                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D2398 E1 03 1F AA             MOV             X1, XZR
.note.gnu.proc:00000071553D2398
.note.gnu.proc:00000071553D239C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D239C AD C8 02 94             BL              create_pthread_create
.note.gnu.proc:00000071553D239C
.note.gnu.proc:00000071553D23A0                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D23A0 60 00 00 35             CBNZ            W0, loc_71553D23AC
.note.gnu.proc:00000071553D23A0
.note.gnu.proc:00000071553D23A4                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553D23A4 A0 03 5D F8             LDUR            X0, [X29,#0x20+var_50]
.note.gnu.proc:00000071553D23A8 F2 C9 02 94             BL              detach

解密dex所需信息:

c:5FD6EB80B07CB412704C5A46D899C63B
p:com.xiaopeng.mycarinfo
a:com.xiaopeng.mycarinfo.application.tinker.CarApplication//app入口
r:047AEA142BC032C4
e:0
s:0
d:4A7651EA24600BAA//解密dex key
m:1
z:0
u:1
x:0
fx:0
fd:0
rd:0
rx:0
pp:0
vv:0
rr:0
xx:0
si:0
rl:0
hf:0
hc:0
hi:0
is:0
db:0
it:0
i:0
ad:0
ri:0
mc:0
adf:0
dbf:0
fc:0
au:0

從殼dex中拷貝出密文解密,包名、Application、key等信息

解密出明文dex:

.note.gnu.proc:00000071553EB834                         ; 解密dex
.note.gnu.proc:00000071553EB834
.note.gnu.proc:00000071553EB834                         DecDex_sub_71553EB834
.note.gnu.proc:00000071553EB834
.note.gnu.proc:00000071553EB834                         var_60= -0x60
.note.gnu.proc:00000071553EB834
.note.gnu.proc:00000071553EB834 FD 7B BA A9             STP             X29, X30, [SP,#var_60]!
.note.gnu.proc:00000071553EB834                         ; End of function DecDex_sub_71553EB834
.note.gnu.proc:00000071553EB834
.note.gnu.proc:00000071553EB838 FC 0B 00 F9             STR             X28, [SP,#0x10]
.note.gnu.proc:00000071553EB838
.note.gnu.proc:00000071553EB83C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB83C FA 67 02 A9             STP             X26, X25, [SP,#0x20]
.note.gnu.proc:00000071553EB83C
.note.gnu.proc:00000071553EB840                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB840 F8 5F 03 A9             STP             X24, X23, [SP,#0x30]
.note.gnu.proc:00000071553EB840
.note.gnu.proc:00000071553EB844                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB844 F6 57 04 A9             STP             X22, X21, [SP,#0x40]
.note.gnu.proc:00000071553EB844
.note.gnu.proc:00000071553EB848                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB848 F4 4F 05 A9             STP             X20, X19, [SP,#0x50]
.note.gnu.proc:00000071553EB848
.note.gnu.proc:00000071553EB84C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB84C FD 03 00 91             MOV             X29, SP
.note.gnu.proc:00000071553EB84C
.note.gnu.proc:00000071553EB850                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB850 FF 83 11 D1             SUB             SP, SP, #0x460
.note.gnu.proc:00000071553EB850
.note.gnu.proc:00000071553EB854                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB854 5A D0 3B D5             MRS             X26, #3, c13, c0, #2
.note.gnu.proc:00000071553EB854
.note.gnu.proc:00000071553EB858                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB858 48 17 40 F9             LDR             X8, [X26,#0x28]
.note.gnu.proc:00000071553EB858
.note.gnu.proc:00000071553EB85C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB85C F9 03 00 AA             MOV             X25, X0
.note.gnu.proc:00000071553EB85C
.note.gnu.proc:00000071553EB860                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB860 F3 03 02 AA             MOV             X19, X2
.note.gnu.proc:00000071553EB860
.note.gnu.proc:00000071553EB864                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB864 F5 03 01 AA             MOV             X21, X1
.note.gnu.proc:00000071553EB864
.note.gnu.proc:00000071553EB868                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB868 A8 83 1F F8             STUR            X8, [X29,#-8]
.note.gnu.proc:00000071553EB868
.note.gnu.proc:00000071553EB86C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB86C 36 5C 42 29             LDP             W22, W23, [X1,#0x10]
.note.gnu.proc:00000071553EB86C
.note.gnu.proc:00000071553EB870                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB870 38 04 40 F9             LDR             X24, [X1,#8]
.note.gnu.proc:00000071553EB870
.note.gnu.proc:00000071553EB874                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB874 E0 03 17 AA             MOV             X0, X23
.note.gnu.proc:00000071553EB874
.note.gnu.proc:00000071553EB878                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB878 6A 64 02 94             BL              malloc_sub_7D26D81A20
.note.gnu.proc:00000071553EB878
.note.gnu.proc:00000071553EB87C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB87C E1 03 18 AA             MOV             X1, X24
.note.gnu.proc:00000071553EB87C
.note.gnu.proc:00000071553EB880                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB880 E2 03 17 AA             MOV             X2, X23
.note.gnu.proc:00000071553EB880
.note.gnu.proc:00000071553EB884                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB884 F4 03 00 AA             MOV             X20, X0
.note.gnu.proc:00000071553EB884
.note.gnu.proc:00000071553EB888                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB888 BE 63 02 94             BL              memcpy_2      ; 拷貝DEX密文
.note.gnu.proc:00000071553EB888
.note.gnu.proc:00000071553EB88C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB88C E0 83 00 91             ADD             X0, SP, #0x20 ; ' '
.note.gnu.proc:00000071553EB890 12 59 00 94             BL              DecKEY_sub_7155401CD8
.note.gnu.proc:00000071553EB890
.note.gnu.proc:00000071553EB894 21 63 04 91             ADD             X1, X25, #0x118
.note.gnu.proc:00000071553EB894
.note.gnu.proc:00000071553EB898                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB898 E0 23 00 91             ADD             X0, SP, #8
.note.gnu.proc:00000071553EB898
.note.gnu.proc:00000071553EB89C                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB89C F8 23 00 91             ADD             X24, SP, #8
.note.gnu.proc:00000071553EB89C
.note.gnu.proc:00000071553EB8A0                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8A0 0C 64 02 94             BL              getString_sub_78232118D0 ; 4A7651EA24600BAA
.note.gnu.proc:00000071553EB8A0
.note.gnu.proc:00000071553EB8A4                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8A4 E8 23 40 39             LDRB            W8, [SP,#8]
.note.gnu.proc:00000071553EB8A8 E9 0F 40 F9             LDR             X9, [SP,#0x18]
.note.gnu.proc:00000071553EB8A8
.note.gnu.proc:00000071553EB8AC                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8AC EA 13 40 B9             LDR             W10, [SP,#0x10]
.note.gnu.proc:00000071553EB8B0 0B 03 40 B2             ORR             X11, X24, #1
.note.gnu.proc:00000071553EB8B0
.note.gnu.proc:00000071553EB8B4                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8B4 0C FD 41 D3             LSR             X12, X8, #1
.note.gnu.proc:00000071553EB8B4
.note.gnu.proc:00000071553EB8B8                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8B8 1F 01 00 72             TST             W8, #1
.note.gnu.proc:00000071553EB8B8
.note.gnu.proc:00000071553EB8BC                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8BC 61 01 89 9A             CSEL            X1, X11, X9, EQ
.note.gnu.proc:00000071553EB8C0 82 01 8A 1A             CSEL            W2, W12, W10, EQ
.note.gnu.proc:00000071553EB8C4 E0 83 00 91             ADD             X0, SP, #0x20 ; ' '
.note.gnu.proc:00000071553EB8C4
.note.gnu.proc:00000071553EB8C8                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8C8 DE 5A 00 94             BL              initkey_sub_7155402440
.note.gnu.proc:00000071553EB8C8
.note.gnu.proc:00000071553EB8CC                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8CC FF 06 40 71             CMP             W23, #1,LSL#12
.note.gnu.proc:00000071553EB8D0 08 00 82 52             MOV             W8, #0x1000
.note.gnu.proc:00000071553EB8D0
.note.gnu.proc:00000071553EB8D4                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8D4 E2 32 88 1A             CSEL            W2, W23, W8, CC
.note.gnu.proc:00000071553EB8D4
.note.gnu.proc:00000071553EB8D8                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8D8 E0 83 00 91             ADD             X0, SP, #0x20 ; ' '
.note.gnu.proc:00000071553EB8D8
.note.gnu.proc:00000071553EB8DC                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8DC E1 03 14 AA             MOV             X1, X20
.note.gnu.proc:00000071553EB8DC
.note.gnu.proc:00000071553EB8E0                         ; ---------------------------------------------------------------------------
.note.gnu.proc:00000071553EB8E0 E3 03 1F 2A             MOV             W3, WZR
.note.gnu.proc:00000071553EB8E4 F9 5A 00 94             BL              Dec_DexData_sub_782318F4C8
.note.gnu.proc:00000071553EB8E4
.note.gnu.proc:00000071553EB8E8 FF 02 16 6B             CMP             W23, W22

解析殼DEX格式,獲取加密存放的DEX,循環(huán)解密完6個DEX,解密出明文,dump點1,這時dump出來的dex是原始dex。

5.7、加載dex

在android10之前使用DexClassLoader加載的dex文件系統(tǒng)默認會執(zhí)行dex2oat進行優(yōu)化。但是android 10之后系統(tǒng)默認不在對使用DexClassLoader加載的dex文件執(zhí)行dex2oat優(yōu)化。Android 運行時只接受系統(tǒng)生成的OAT文件。

解密dex后直接調(diào)用

_ZN3art13DexFileLoader10OpenCommonEPKhmS2_mRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPKNS_10OatDexFileEbbPS9_NS3_10unique_ptrINS_16DexFileContainerENS3_14default_deleteISH_EEEEPNS0_12VerifyResultE 加載DEX,該方法定義如下:

std::unique_ptr DexFile::OpenCommon(const uint8_t* base,
                                             size_t size,
                                             const std::string& location,
                                             uint32_t location_checksum,
                                             const OatDexFile* oat_dex_file,
                                             bool verify,
                                             bool verify_checksum,
                                             std::string* error_msg,
                                             VerifyResult* verify_result) {
  if (verify_result != nullptr) {
    *verify_result = VerifyResult::kVerifyNotAttempted;
  }
  std::unique_ptr dex_file(new DexFile(base,
                                                size,

OpenCommon這是一個比較好的脫殼點。直接hook可以拿到dex。

接下來創(chuàng)建PathDexList對像,通過PathDexList的成員變量 Element[] dexElements來指向DEX文件,這樣DEX就被加載到內(nèi)存中。

六、脫殼二次打包

6.1、dump后dex重打包

通過上面的分析其實dump點有很多,解密后內(nèi)存中dump,DexFile::OpenCommon加載dex時。將dump出來的DEX重新打包,

修改入口類就可以運行(com.xiaopeng.mycarinfo.application.tinker.CarApplication),這個入口類在上面己經(jīng)解密。

加載完所有DEX后反射調(diào)用原始入口,如圖6-1所示:

d40d0cda-aaa2-11ed-bfe3-dac502259ad0.jpg

圖6-1

七、總結(jié)

亮點:

Native層so保護技術(shù)相對于整體壓縮加密的方式它做了sms技術(shù)與自定義linker加載so,抹掉elf頭,節(jié)信息等,能很好的防止內(nèi)存dump elf。如果要完整脫殼需要根據(jù)elf格式重新組合一個完整的so文件。防脫殼的安全度還是有的。

不足點:

雖然native層做了很多反調(diào)試,反脫殼等手段,但是最終DEX在內(nèi)存中出現(xiàn)了完整的明文,很難防止各種脫殼機。

通過本次分析學習了解到高版本系統(tǒng)加載dex流程以及自定義linker相關(guān)知識。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5421

    瀏覽量

    123400
  • ELF文件
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7276
  • 加解密
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    6616
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    17780

原文標題:汽車APP產(chǎn)品分析-億盾加固

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    時代多款產(chǎn)品獲得中國信通院權(quán)威認可

    近日,中國信息通信研究院(以下簡稱“中國信通院”)旗下的網(wǎng)絡(luò)安全卓越驗證示范中心對“寫境:AI+網(wǎng)絡(luò)安全產(chǎn)品能力圖譜”進行了更新。芯時代憑借以AI賦能業(yè)務(wù)安全的領(lǐng)先技術(shù)與深度實踐,旗下用戶身份
    的頭像 發(fā)表于 05-30 14:36 ?249次閱讀

    時代助力打造金融安全新范式

    時代中標吉林省農(nóng)村信用社(以下簡稱“吉林農(nóng)信”)?設(shè)備指紋平臺,交易安全保護系統(tǒng)等項目?。芯時代基于零信任安全理念,通過自主研發(fā)的?設(shè)備指紋技術(shù)?與?實時交易風控引擎?,為吉林農(nóng)信打造了覆蓋全渠道、全鏈路的安全防護體系。
    的頭像 發(fā)表于 04-15 17:41 ?454次閱讀

    時代助力打造智慧醫(yī)療安全新標桿

    時代中標?安徽醫(yī)科大學第二附屬醫(yī)院(以下簡稱“安醫(yī)二附院”)!芯時代基于零信任安全理念,融合動態(tài)身份驗證、智能風險感知與策略執(zhí)行能力,將為安醫(yī)二附院構(gòu)建動態(tài)化、智能化的零信任安全防護體系,助力其打造智慧醫(yī)療安全新標桿。?
    的頭像 發(fā)表于 04-02 17:18 ?509次閱讀

    零信任+DeepSeek企業(yè)數(shù)字化更安全 芯時代全線產(chǎn)品接入DeepSeek

    DeepSeeK大模型自發(fā)布以來,憑借出色的性能表現(xiàn)和低成本訓練模式,在全球掀起了AI大模型部署熱潮,推動大模型技術(shù)從實驗室走向?qū)嶋H應用。 芯時代作為領(lǐng)先的零信任業(yè)務(wù)安全產(chǎn)品方案提供商,率先完成全線產(chǎn)品
    的頭像 發(fā)表于 04-02 12:00 ?595次閱讀
    零信任+DeepSeek企業(yè)數(shù)字化更安全 芯<b class='flag-5'>盾</b>時代全線<b class='flag-5'>產(chǎn)品</b>接入DeepSeek

    PCB板芯片加固方案

    PCB板芯片加固方案PCB板芯片加固工藝是確保電子設(shè)備性能和可靠性的重要環(huán)節(jié)。以下是一些常見的PCB板芯片加固方案:一、底部填充膠底部填充膠是一種常用的PCB板芯片加固方案,特別適用于
    的頭像 發(fā)表于 03-06 15:37 ?401次閱讀
    PCB板芯片<b class='flag-5'>加固</b>方案

    時代郵箱二次認證解決方案助力企業(yè)應對釣魚郵件

    時代作為領(lǐng)先的零信任業(yè)務(wù)安全產(chǎn)品方案提供商,基于自主研發(fā)的零信任業(yè)務(wù)安全平臺(SDP),打造了郵箱二次認證解決方案。方案采用軟件定義邊界架構(gòu),將數(shù)據(jù)平面與控制平面分類,采用零信任安全網(wǎng)關(guān)代理郵箱
    的頭像 發(fā)表于 02-27 15:16 ?591次閱讀

    汽車車架加固點焊技術(shù)分析與應用

    的特點,在汽車車架加固中得到了廣泛應用。本文將從點焊技術(shù)的基本原理出發(fā),探討其在汽車車架加固中的應用,并分析其優(yōu)勢與挑戰(zhàn)。 點焊是一種
    的頭像 發(fā)表于 02-26 14:10 ?329次閱讀

    加固筆記本什么意思

    加固筆記本是指經(jīng)過特殊設(shè)計和制造,具備高防護性能、能適應惡劣環(huán)境和特殊工作要求的筆記本電腦。 防護性能增強 抗沖擊: 加固筆記本的外殼采用堅固的材料,如鎂合金或高強度的工程塑料。這些材料能夠承受較大
    的頭像 發(fā)表于 01-24 17:27 ?1621次閱讀

    時代榮登17項細分領(lǐng)域榜單

    近日,領(lǐng)先的零信任業(yè)務(wù)安全產(chǎn)品方案提供商芯時代傳來喜訊,憑借卓越的產(chǎn)品方案、突出的市場表現(xiàn)以及深入人心的品牌形象,成功躋身零信任、IDaaS、PIM和PAM、MFA、業(yè)務(wù)反欺詐、賬戶安全、驗證碼
    的頭像 發(fā)表于 01-23 15:25 ?463次閱讀

    經(jīng)典案例 華智能助力重慶奉節(jié)智慧路燈建設(shè)

    經(jīng)典案例|華智能助力重慶奉節(jié)智慧路燈建設(shè)
    的頭像 發(fā)表于 01-03 10:18 ?351次閱讀
    經(jīng)典案例 <b class='flag-5'>盾</b>華智能助力重慶奉節(jié)智慧路燈建設(shè)

    PCB板元器件點膠加固的重要性

    PCB板元器件點膠加固的重要性PCB板元器件點膠加固在電子制造過程中起到了至關(guān)重要的作用,其重要性主要體現(xiàn)在以下幾個方面:一、提高機械強度點膠加固可以顯著降低電子元件的翹曲和變形現(xiàn)象,從而提高整個
    的頭像 發(fā)表于 12-20 10:18 ?987次閱讀
    PCB板元器件點膠<b class='flag-5'>加固</b>的重要性

    緯鋰能榮獲小鵬汽車“與鵬同行獎”

    12月12日,以“凝聚熱AI,向新而行”為主題的2024小鵬汽車全球合作伙伴大會在廣州舉辦。緯鋰能憑借卓越產(chǎn)品、穩(wěn)定供貨、優(yōu)質(zhì)服務(wù),榮獲小鵬汽車“與鵬同行獎”,這是繼2023年獲小鵬
    的頭像 發(fā)表于 12-17 09:38 ?7004次閱讀
    <b class='flag-5'>億</b>緯鋰能榮獲小鵬<b class='flag-5'>汽車</b>“與鵬同行獎”

    路暢科技發(fā)布百秘二代加密記錄儀,全面升級汽車數(shù)據(jù)安全防護

    10月25日,路暢科技正式揭曉了其最新的研發(fā)成果——百秘二代加密記錄儀,并宣布該產(chǎn)品將于10月28日全面登陸各大電商平臺。這一舉動標志著路暢科技在強化汽車記錄儀音視頻數(shù)據(jù)安全領(lǐng)域取得了重大進展。
    的頭像 發(fā)表于 11-05 11:28 ?903次閱讀

    塑封芯片多大才需要點膠加固保護?

    塑封芯片多大才需要點膠加固保護?塑封芯片是否需要點膠加固保護,并不完全取決于芯片的大小,而是由多種因素共同決定的。以下是一些影響是否需要點膠加固保護的主要因素:芯片的應用場景:如果芯片所處的環(huán)境較為
    的頭像 發(fā)表于 09-27 09:40 ?574次閱讀
    塑封芯片多大才需要點膠<b class='flag-5'>加固</b>保護?

    華電子智慧路燈桿物聯(lián)網(wǎng)化解決方案

    華電子智慧路燈桿物聯(lián)網(wǎng)解決方案
    的頭像 發(fā)表于 09-26 17:41 ?547次閱讀
    <b class='flag-5'>盾</b>華電子智慧路燈桿物聯(lián)網(wǎng)化解決方案
    主站蜘蛛池模板: 欧美极品在线视频 | tube44在线观看 | 免费大片黄国产在线观看 | 久久久久国产精品免费免费 | www射射一区 | 亚洲视频入口 | 国产美女久久久久 | 国产成人精品免费视频大全可播放的 | 国产性片在线观看 | www亚洲一区 | 香港三级理论在线观看网站 | 日本三级香港三级三级人!妇久 | 欧美性色黄在线视 | 手机看日韩毛片福利盒子 | 台湾香港澳门三级在线 | 色媚网| 手机看片久久青草福利盒子 | 日本美女中出 | 亚洲国产精品日韩专区avtube | 久久黄色一级片 | 理论片午午伦夜理片影院99 | 久久香蕉国产线看观看精品yw | 成人中文在线 | jlzzjlzzjlzz亚洲女| 日韩特级 | 国产精品成人一区二区三区 | 美女扒开尿口给男人桶视频免费 | 国产精品久久久久乳精品爆 | 欧美在线视频播放 | 1024手机最新手机在线 | 免费h视频 | 天天做天天爱夜夜爽女人爽宅 | 天天色天天舔 | 免费看国产精品久久久久 | 亚欧免费视频一区二区三区 | 久久免费公开视频 | 最新午夜宅男 | 深爱五月网 | 久久大综合| 特黄一级毛片 | 日本免费福利视频 |