使用D8工具手动编译Dex, 不安装App手动执行dex

2,082 阅读1分钟

很多权限Android折腾工具使用这种方法将自己的服务安装到系统中(需要提升权限),App只作为用户代理与服务做交互。

configurations {
    fatJar
}
task fatjar(type: Jar) {
    group 'build'
    manifest {
        attributes 'Main-Class': 'com.xxx.Main'
    }
    from {
        configurations.fatJar.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    with jar
}
./gradlew fatjar

注:如果fatjar有问题可以使用shadowJar插件

$ANDROID_HOME/build-tools/28.0.2/d8 --lib\
$ANDROID_HOME/platforms/android-28/android.jar watchdog-1.0-SNAPSHOT.jar
$ adb push classes.dex /sdcard
classes.dex: 1 file pushed. 0.5 MB/s (1620 bytes in 0.003s)

$ adb shell dalvikvm -cp /sdcard/classes.dex com.xxx.Main

参考1:jakewharton.com/androids-ja…

参考2: haruue.moe/blog/2017/0…

参考3: doridori.github.io/Android-Sec…

测试 运行具有shell权限,网络和文件都可以正常使用不受权限控制 正在研究如何使用显示图形