最近使用Main类来进行Android提权的情况比较多,这里稍作汇总一下;
比较常用提权运行的分为代码在.jar包里面,以及代码在Apk应用里面,都简单记录一下;
这里的例子packageName为:jt.com.posion,测试类名字为TestMain,整体路径名为:jt.com.posion.TestMain;
第一种:Main类可执行代码在jar包里
一般情况下先将已build好的apk后缀改成jar,然后push或者手动放到某个目录下,然后执行类似如下的命令
adb shell CLASSPATH=/sdcard/SRecord/Test.jar app_process /jt.com.posion.TestMain jt.com.posion.TestMain
格式:adb shell CLASSPATH=jar包路径/jar包名称 app_process /Main类的包路径 Main类的包路径 参数
这里的参数是同命令行运行java代码后面给args[]赋值的效果一样;
第二种:Main类可执行代码在App应用里
当可执行Main类在Apk里的话,这里的CLASSPATH就会发生一些改变,因为代码在Apk里面,每个apk在每次的安装过后,都会在data/app/下生成一个随机字串的文件夹,其中存放着base.apk,主要代码还是在base.apk里面,或者如果Instant Run的话,还有另外的0-9个slide-lib.apk,我也都试过一些;
不过经过测试,如果要这种运行App里的Main类代码的方式,最好还是把AS里的Instant Run关闭,不然不一定会生效;
查看包的详细路径:adb shell pm path /jt.com.posion
包路径返回结果格式:
package:/data/app/jt.com.posion-W9Qos9Gkdq4qitky-4NAWQ==/base.apk
随后获取冒号后面的字段,然后组装成下面的语句
运行包中的Main类:
adb shell
export CLASSPATH=/data/app/jt.com.posion-W9Qos9Gkdq4qitky-4NAWQ==/base.apk
exec app_process /system/bin jt.com.posion.TestMain