android执行二进制文件和class文件
安卓运行class和gcc(Nexus 5x)
date:02-10-2022
故事的开始,接下来就是解bl,刷rec,root。熟悉三件套
安装 Recovery 包
- 开发者选项中打开“OEM 解锁”和“USB 调试”
- 连上电脑,进入 adb 所在目录,依次执行
./adb reboot bootloader
,./fastboot flashing unlock
以解锁设备(fastboot 显示waiting for device就用驱动精灵在bootloader模式下修复驱动) - 下载http://file.codepowders.com/twrp-3.6.2_9-0-bullhead.img
- 进入 adb 所在目录,执行
./fastboot flash recovery /Users/silas/Downloads/twrp-3.2.3-0-bullhead.img
(如果出错,把文件名改成简单的 twrp.img,放到 adb 所在目录,执行./fastboot flash recovery twrp.img
,以免原来的路径或文件名无法识别) ./fastboot reboot
重启手机或者音量减调到“Recovery mode”,结果显示Your device software can't be checked for corruption. Please lock the bootloader
- 此时按下电源键和音量加,然后松开,最下面一句从
PRESS POWER TO PAUSE BOOT
变成PRESS POWER TO CONTINUE
,然后等待一会儿自动进去了。
Root
- 打开开发者模式,打开“OEM解锁”和“USB调试”,先执行
./adb reboot bootloader
。 - 下载http://file.codepowders.com/CF-Auto-Root-bullhead-bullhead-nexus5x.zip
- 打开脚本然后回车回车
安装gcc
- 下载http://file.codepowders.com/gcc_arm_aarch64.zip
-
adb push gcc_arm_aarch64.zip storage/emulated/0 (adb用的是androidstudio的)
- adb shell
- shell中su
- 打开手机把zip解压
- mount -o remount -w 挂载system
- 直接mv /storage/emulated/0/gcc_arm_aarch64 /system/
- cd /system/gcc*/bin/
- ln -s /system/gcc/bin/*gcc /system/xbin/
-
arm-linux-androideabi-gcc -v
gcc编译helloworld
- ./*gcc main.c
error: only position independent executables (PIE) are supported.
- ./*gcc main.c -pie -fPIE
- 解决
运行java的helloworld
public class HelloAndroid { public static void main(String[] args) { System.out.println("Hello Android"); } }
- 下载 j8.jar http://file.codepowders.com/j8.jar
- 编译helloworld得到class。不会就太拉跨了
- java -jar j8.jar HelloAndroid.class
- 得到classes.dex
- 在安卓中运行:
dalvikvm -cp classes.dex HelloAndroid