android 逆向工具
## 一、aptool### apktool 下载
(https://ibotpeaches.github.io/Apktool/)
### 运行
apk文件 F:\apktools\demo.apk
导出目录 F:\apktools\demo
### 解包执行
java -jar apktool.jar d -f F:\apktools\demo.apk -o F:\apktools\demo
### 结果
| assets | (未被编译) assets文件|
| ------ | ---------------------- |
| res | (未被编译) res文件 |
| smali| (被编译) smali格式文件 |
### 二次打包执行
java -jarapktool.jar b F:\apktools\demo
重新打包后的apk在要打包的文件夹里的dist目录下
这样打完的apk是没有签名的
### jarsigner 签名apk
jarsigner -verbose -keystore signapk.keystore -signedjar signapk_new.apk signapk.apk keyAlias
### 注意:
signapk.keystore 自己的签名证书
signapk_new.apk签名成功之后输出的apk名称
signapk.apk 输入的待签名的apk
keyAlias keyAlias名称
## 二、drozer
drozer 官方网站:https://labs.mwrinfosecurity.com/tools/drozer/
下载安装以下两个文件:
android 端:安装好 drozer.apk后,点击开启服务
pc端:
使用 forward 端口映射 将31415端口进行映射
adb forward tcp:31415 tcp:31415
drozer目录下cmd 运行 drozer console connect
特殊(出现java环境没有找到):
按照提示在 用户目录下添加 .drozer_config文件 内容如下:
```cs
java=D:\Java\jdk1.7.0_65\bin\java.exe
javac=D:\Java\jdk1.7.0_65\bin\javac.exe
```
命令:
```php
list或ls 查看可用模块
```
```
run app.package.list查看程序安装包
```
```
run app.package.info -a com.example.myapp查看程序包信息
```
```
run app.package.attacksurface com.example.myapp查看项目对外exported的组件
```
```
run app.activity.info -a com.example.myapp查看对外activity的信息
```
```
run app.service.info -a com.example.myapp查看对外service的信息
```
```
run app.broadcast.info -a com.example.myapp查看对外broadcast的信息
```
```
run app.provider.info -a com.example.myapp查看对外provider的信息
```
```
run app.activity.start --component com.example.myapp com.example.MainActivity 尝试启动MainActivity
```
```
run scanner.provider.finduris -a com.example.myapp 探测出可以查询的URI
```
```
run app.provider.query content://***/ -vertical获取Uri的数据
```
```
run app.provider.insert URI对应数据表中的字段 对数据库表进行插入操作
```
```
run app.provider.delete URI–-selection “条件” 对数据库表进行删除操作
```
```
Content Providers(SQL注入)
run app.provider.query content://***/ --projection "'"
run app.provider.query content://***/ --selection "'"
```
```
报错则说明存在SQL注入。
run app.provider.query content://***/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"
获取某个表(如Key)中的数据:
run app.provider.query content://***/ --projection "* FROM Key;--"
同时检测SQL注入和目录遍历
run scanner.provider.injection -a com.example.myapp
run scanner.provider.traversal -a com.example.myapp
```
页:
[1]