<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 1 安全相關的函數檢測 # 11001 一些存放敏感的安全配置信息的**函數**,一般函數名都可能帶有encrypt、decrypt、encod、decod、aes、sha1、sha256、sha512、md5、decode、encode等關鍵字。 通過encrypt、decrypt、encod、decod、aes、sha1、sha256、sha512、md5、decode、encode等和安全相關的關鍵字進行匹配查找,然后逐個檢測類的安全性。 ## 2 安全相關的類檢測 # 11002 一些存放敏感的安全配置信息的**文件**,一般文件都可能帶有encrypt、decrypt、encod、decod、aes、sha1、sha256、sha512、md5、decode、encode等關鍵字。 通過encrypt、decrypt、encod、decod、aes、sha1、sha256、sha512、md5、decode、encode等和安全相關的關鍵字進行匹配查找,然后逐個檢測類的安全性。 ## 3 運行命令檢測 # 11003 檢測命令執行相關的代碼。 問題示例: Java代碼 ``` Runtime rr = Runtime.getRuntime(); Process p = rr.exec("ls -al"); ``` Dalvik/ART ``` const-string v2, "ls -al" invoke-virtual {v1, v2}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process; ``` ## 4 Native Library加載檢測 # 11004 檢測加載so文件的Native方法。 風險等級:`提示` Java代碼 System.loadLibrary("libtest.so"); Dalvik/ART Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V ## 5 外部動態加載DEX檢測 # 11005 在Android4.1之前的系統版本,容許Android應用在全局可讀寫(如SD卡)的位置動態加載DEX文件,因此有文件被替換的風險。 風險等級:`提醒` 問題示例: 需要檢測代碼中的DexClassLoader和Android版本,只有Android版本 < 4.1才會出現該漏洞。 Java代碼 ``` DexClassLoader cl = new DexClassLoader( optimizedDexOutputPath.getAbsolutePath(), //參數1 Environment.getExternalStorageDirectory().toString(), //參數2 null, //參數3 getClassLoader()); //參數4 ``` Dalvik/ART ``` ... Ldalvik/system/DexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String; Ljava/lang/String;Ljava/lang/ClassLoader;)V ... ``` 建議: * 禁止外部(不安全的源)加載DEX,將所需要動態加載的DEX/APK文件放置到APK內部或應用私有目錄中。 * 使用加密網絡協議進行下載加載的DEX/APK文件并將其放置到應用私有目錄中。 * 對不可信的加載來源進行完整性校驗。 ## 6 root代碼檢測 # 11006 檢查app是否有執行檢測root環境的代碼。 風險等級:`提醒` 問題示例: Java代碼 ``` Runtime rr = Runtime.getRuntime(); Process p = rr.exec("su"); ``` Dalvik/ART ``` const-string v2, "su" invoke-virtual {v1, v2}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process; ``` ## 7 獲取IMEI 和Device ID敏感信息代碼檢測 # 11007 檢查app是否有執行獲取IMEI和Device ID敏感信息的代碼。 風險等級:`提醒` 問題示例: Java代碼 ``` TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String DEVICE_ID = tm.getDeviceId(); ``` Dalvik/ART ``` .local v1, "tm":Landroid/telephony/TelephonyManager; invoke-virtual {v1}, Landroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String; move-result-object v0 .local v0, "DEVICE_ID":Ljava/lang/String; return-void ``` ## 8 獲取Android ID敏感信息代碼檢測 # 11008 檢查app是否有執行獲取Android ID敏感信息的代碼。 風險等級:`提醒` 問題示例: Java代碼 ``` import android.provider.Settings.Secure; String?androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); ``` Dalvik/ART ``` Lcom/bug/sensitive/func/MainActivity;->getContentResolver()Landroid/content/ContentResolver; move-result-object v0 const-string v1, "android_id" invoke-static {v0, v1}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String; ``` ## 9 發送SMS敏感代碼檢測 # 11009 檢查app是否有調用發送SMS函數。 風險等級:`提醒` 問題示例: Java代碼 ``` SmsManager smsm = SmsManager.getDefault(); smsm.sendTextMessage("123123", null, "hello", null, null); smsm.sendDataMessage("13123", "123", (short) 90, null, null, null); smsm.sendMultimediaMessage(this, null, null, null, null); ``` 上述代碼反編譯后的Dalvik/ART代碼 ``` invoke-static {}, Landroid/telephony/SmsManager;->getDefault()Landroid/telephony/SmsManager; Landroid/telephony/SmsManager;->sendDataMessage(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V Landroid/telephony/SmsManager;->sendMultipartTextMessage(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V Landroid/telephony/SmsManager;->sendTextMessage(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V ``` ## 10 文件刪除代碼檢測 # 11010 檢查app是否有調用刪除文件的代碼。 風險等級:`提醒` 問題示例: Java代碼 ``` File file = new File("tmp.doc"); boolean deleted = file.delete(); ``` 上述代碼反編譯后的Dalvik/ART代碼為 ``` new-instance v1, Ljava/io/File; const-string v2, "tmp.doc" invoke-direct {v1, v2}, Ljava/io/File;-><init>(Ljava/lang/String;)V .line 55 .local v1, "file":Ljava/io/File; invoke-virtual {v1}, Ljava/io/File;->delete()Z ``` ## 11 signature代碼檢測 # 11011 檢查app是否有調用獲取signature的代碼。 風險等級:`提醒` 問題示例: Java代碼 ``` PackageManager pkgManager = context.getPackageManager(); byte[]?signature = pkgManager.getPackageInfo( context.getPackageName(), PackageManager.GET_SIGNATURES).signatures[0].toByteArray(); ``` 上述代碼反編譯后的Dalvik/ART代碼 ``` move-result-object v0 iget-object v2, v0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature; ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看