bushuang 发表于 2019-10-12 04:45:00

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]
查看完整版本: android 逆向工具