【Android】逆向自动化
前言
安卓APK自动反编译,自动分析组件导出与非导出,自动解析组件中可能存在攻击点的关键词,自动收集所有APK中的URL,自动上传解析结果到飞书文档。
代码:https://github.com/hwhxy/AndroidForLark
自动反编译
python3执行命令即可
cmd = f"{self.jadx_dir}/bin/jadx -e {self.apk_dir} -d {self.re_apk_dir}"
print(f"开始逆向,请等待!cmd:{cmd}")
pipe = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(pipe.stdout.read().decode())
print(f"逆向结束,文件输出为:{self.re_apk_dir}")
jadx下载放在project文件路径下面就行
download from : https://github.com/skylot/jadx
自动分析组件导出与非导出
直接解析AndroidManifest.xml
- 情况1:android:exported=“true” – 可导出
- 情况2:android:exported=“falsee” – 不可导出
- 情况3:没直接显式exported,有intent-filter – 可导出
- 情况4:没直接显式exported,无intent-filter – 默认不可导出
自动解析组件中可能存在攻击点的关键词
self.sensitive_keys = [
"onHandleIntent(",
"getIntent(",
"getStringExtra(",
"getExtras(",
"startService(",
"startActivity("
]
这个可以是可以增加的list,主要看我们对于组件的审计喜欢看什么函数或关键词。
自动收集所有APK中的URL
match_url = re.findall('https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+', file_content)
自动上传飞书文档
def create_sheet(self, sheet_title)
def add_spreadsheet(self, spreadsheet_token, title)
def write_sheet(self, data, spreadsheet_token, sheet_id)
后记
都有mobsf了,还要啥自行车?