1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
| class Regex: file_name_pattern = re.compile(r'apk_sources/(.*?\.apk)') package_pattern = re.compile(r'package="(.*?)"') main_activity_pattern = re.compile(r'activity.*?android:name=\"(.*?)\".*intent-filter.*MAIN', re.S) min_sdk_pattern = re.compile(r'minSdkVersion: \'(\d*)\'') target_sdk_pattern = re.compile(r'targetSdkVersion: \'(\d*)\'') permission_pattern = re.compile(r'android\.permission\.(\w*)', re.M) activity_pattern = re.compile(r'<activity.*?android:name="(.*?)"', re.S) service_pattern = re.compile(r'<service.*?android:name="(.*?)"', re.S) receiver_pattern = re.compile(r'<receiver.*?android:name="(.*?)"', re.S) provider_pattern = re.compile(r'<provider.*?android:name="(.*?)"', re.S) permission_group_pattern = re.compile(r'(<permission.*?android:permissionGroup="(.*?)".*?>)', re.S) protection_level_pattern = re.compile(r'(<permission.*?android:protectionLevel="(.*?)".*?>)', re.S) shared_user_id_pattern = re.compile(r'<manifest.*?android:sharedUserId="android.uid.system".*?>', re.S) allowbackup_pattern = re.compile(r'<application.*android:allowBackup="true".*?>') debuggable_pattern = re.compile(r'<application.*android:debuggable="true".*?>') activity_component_pattern = re.compile(r'<activity(.*?)/>', re.S) service_component_pattern = re.compile(r'<service(.*?)/>', re.S) receiver_component_pattern = re.compile(r'<receiver(.*?)/>', re.S) provider_component_pattern = re.compile(r'<provider(.*?)/>', re.S)
component_name_pattern = re.compile(r'android:name="(.*?)"', re.S) component_exported_pattern = re.compile(r'android:exported="(.*?)"', re.S) component_filter_pattern = re.compile(r'intent-filter', re.S) component_permission_pattern = re.compile(r'android:permission="(.*?)"', re.S)
provider_grant_uri_permission_pattern = re.compile(r'android:grantUriPermissions="true"', re.S)
activity_double_tag_pattern = re.compile(r'<activity.*?</activity>', re.S) activity_intent_browsable_pattern = re.compile(r'android.intent.category.BROWSABLE', re.S)
is_exist_intent_parseuri_pattern = re.compile(r'Intent +(\w+) *= *Intent\.parseUri', re.M)
new_intent_pattern = re.compile(r'Intent +(\w+) *= *new +Intent', re.M) get_intent_pattern = re.compile(r'Intent +(\w+) *= *getIntent', re.M)
debug_test_pattern = re.compile(r'debug|test', re.M | re.I)
webview_addjs_pattern = re.compile(r'(\S+\.addJavascriptInterface.*);', re.M) webview_loadurl_pattern = re.compile(r'(\S+\.loadUrl.*);', re.M)
webview_setjs_pattern = re.compile(r'\S+\.setJavaScriptEnabled\(true\)', re.M) webview_setfile_pattern = re.compile(r'\S+\.setAllowFileAccess\(true\)', re.M) webview_setpw_pattern = re.compile(r'\S+\.setSavePassword\(true\)', re.M)
hostname_pattern = re.compile( r'HostnameVerifier.*?new.*?boolean\s+verify\s*?\(String.*?SSLSession \w+\)\s*?{\s*?return true;\s*?}.*?}', re.S)
checkclient_pattern = re.compile(r'void checkClientTrusted', re.M) checkserver_pattern = re.compile(r'void checkServerTrusted', re.M) getissuers_pattern_A = re.compile(r'getAcceptedIssuers\(\)\s*?{\s*?return null;\s*?}', re.S) getissuers_pattern_B = re.compile( r'getAcceptedIssuers\(\)\s*?{\s*?return new X509Certificate\[0\];\s*?}', re.S) allow_all_hostname_pattern = re.compile(r'(\S*ALLOW_ALL_HOSTNAME_VERIFIER\S*);', re.M) webview_ignore_ssl_error_pattern = re.compile(r'new WebViewClient.*?onReceivedSslError.*?handler\.proceed', re.S)
webview_is_defined_pattern = re.compile(r'WebView (\w*)\b.*;', re.M)
http_url_pattern = re.compile(r'"(http://.*?)"', re.M)
ssl_get_insecure_pattern = re.compile(r'^\s*(.*SSLCertificateSocketFactory\.getInsecure.*);', re.M)
http_host_pattern = re.compile(r'^\s*(.*HttpHost.DEFAULT_SCHEME.*);', re.M)
server_socket_pattern = re.compile(r'^\s*(.*ServerSocket\((\d*)\))', re.M) datagram_socket_pattern = re.compile(r'^\s*(.*DatagramSocket\((\d*)\))', re.M)
des_pattern = re.compile(r'^\s*(.*DES/\w{3}/.+Padding.*);', re.M) unsafe_key_pattern = re.compile(r'KeyPairGenerator\s+(\w+)\s*=\s*KeyPairGenerator\.getInstance.*;', re.M) aes_ecb_pattern = re.compile(r'^\s*(.*AES/ECB/.+Padding.*);', re.M) iv_parameter_spec_pattern = re.compile(r'new\s+IvParameterSpec\((\w+)\)', re.M) rsa_no_padding_pattern = re.compile(r'^\s*(.*RSA/\w+/NoPadding.*);', re.M)
email_pattern = re.compile(r'[\w.-]+@[\w-]+\.[\w.]+', re.M) telephone_pattern = re.compile(r'((13\d|14[57]|15[0-3|5-8]|18[0-3|5-9])\d{8})', re.M) identity_code_pattern = re.compile(r'\d{15}|\d{17}[\dx]', re.M | re.I) clip_data_pattern = re.compile(r'\s*(.*ClipData\.newPlainText.*);', re.M) intent_setflag_pattern = re.compile(r'\s*(.*setFlags.*FLAG_ACTIVITY_NEW_TASK.*);', re.M) pending_intent_pattern = re.compile(r'(PendingIntent\.get(Service|Activity|Broadcast)\(\w*, \w*, (\w*).*\))') secretkeyspec_pattern = re.compile(r'new\s+SecretKeySpec\((\w+),.*\)') base64_pattern = re.compile(r'"(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==))"', re.M) openfile_output_pattern = re.compile(r'\s*(.*openFileOutput.*(MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE).*);', re.M) getdir_pattern = re.compile(r'\s*(.*getDir.*(MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE).*);', re.M) getsharedprefer_pattern = re.compile( r'\s*(.*getSharedPreferences.*(MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE).*);', re.M) log_pattern = re.compile(r'\s*(Log\.[vdeiwfs].*);', re.M) safe_function_pattern = re.compile( r'(\w*(encrypt|decrypt|encod|decod|aes|sha1|sha256|sha512|md5|decode|encode)\w*\(.*?\))', re.M | re.I) safe_class_pattern = re.compile( r'encrypt|decrypt|encod|decod|aes|sha1|sha256|sha512|md5|decode|encode', re.M | re.I) getruntime_pattern = re.compile(r'Runtime\s+(\w+).*Runtime\.getRuntime\(\);', re.M) load_library_pattern = re.compile(r'(System.loadLibrary\("\w+\.so"\));', re.M) dexclassloader_pattern = re.compile(r'\s*(.*=\s*?new\s+DexClassLoader\s*?\(.*?\));', re.M) root_exec_pattern = re.compile(r'\s*(.*\w+\.exec\s*\(\"su"\));', re.M) getdeviceid_pattern = re.compile(r'\s*(.*getDeviceId.*);') secure_androidid_pattern = re.compile(r'\s*(Secure\.getString.*Secure\.ANDROID_ID.*);', re.M) send_sms_pattern = re.compile(r'\s*(.*send(Text|Data|Multimedia)Message\(.*\));', re.M) getfile_pattern = re.compile(r'File\s+(\w+).*new\s+File.*;', re.M) signature_pattern = re.compile(r'(\w+\s*=\s*\w+\.getPackageInfo.*?PackageManager\.GET_SIGNATURES\).*?);', re.S) isvalid_fragment_pattern = re.compile( r'extends PreferenceActivity.*boolean isValidFragment.*?{\s*return true;\s*?}', re.S) set_seed_pattern = re.compile(r'\s*(.*\.setSeed.+);', re.M)
|