东华杯遇到一题安卓逆向,测试机怎么也安装不了。总结一下我遇到的坑。

ADB安装

首先你要下载AndroidSDK,推荐直接用Android Studio自带的,安装过程中会让你选择SDK的安装路径(不要有中文!)

然后AndroidSDK\platform-tools下就有adb,将这个路径放入环境变量就行了。

ADB使用

首先你要打开手机的开发者模式,然后打开USB调试,再连接电脑。输入以下命令查看设备:

1
adb devices

安装apk:

1
adb install *:/.../*.apk

上传文件

1
adb push 1.mp3 /sdcard/mp3/

下载文件

1
adb pull blade_keypad.kl /system/usr/keylayout/

进入手机shell

1
adb shell

获取屏幕截图

1
adb shell screencap /sdcard/screen.png

将手机上的端口转发到主机上:

1
adb forward tcp:23946 tcp:23946

移除端口转发

1
adb forward --remove tcp:8080或adb forward --remove-all。

查看应用包名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
不使用参数:adb shell pm list packages,打印设备/模拟器上的所有软件包

使用-f参数:adb shell pm list packages -f,输出包和包相关联的文件


使用-d参数:adb shell pm list packages -d,只输出禁用的包。由于本机禁用没有,输出为空。

使用-e参数:adb shell pm list packages -e,只输出启用的包。

使用-s参数:adb shell pm list packages -s,只输出系统的包。

使用-3参数:adb shell pm list packages -3,只输出第三方的包。

使用-i参数:adb shell pm list packages -i,只输出包和安装信息(安装来源)。

使用-u参数:adb shell pm list packages -u,只输出包和未安装包信息(安装来源)

使用--user参数:adb shell pm list packages --user <USER_ID>,根据用户id查询用户的空间的所有包,USER_ID代表当前连接设备的顺序

然后这里就有一个坑。不要用相对路径!直接用apk的绝对路径。如果你用了相对路径,就会一直卡着不动,然后你再用绝对路径也是,这就要去任务管理器杀死adb.exe进程,然后重新用绝对路径安装,它才能成功…

然后这里,东华杯这道题为什么安装不上,报错:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]

因为这个apk是测试版本,需要在install后面加-t参数强制安装,参考:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]_私房菜-CSDN博客

常用命令:ADB基本命令_不忘初心的专栏-CSDN博客

我们这里主要讲讲如何调试。

IDA调试

没root的手机好像比较麻烦,参考博客:ida动态调试安卓SO(免root) - 编程和调试 (entry0.cn)

root现在应该都是刷面具,这里不讲了,不同机器方法不同。

release版本的APK文件默认是不能调试的,所以需要修改一些属性使其可调试

(1)在app/build.gradle中添加语句debuggable true,如下图所示:

(2)在AndroidManifest.xml文件的application标签中添加语句android:debuggable="true",如图所示:

但是在实际动态调试过程中往往只有一个apk文件,则将其放入Android Killer工具中反编译,根据方案二修改其AndroidManifest.xml文件的代码,再回编译,此过程这里不再详细描述。以上准备工作完成以后,就可以开始使用IDA进行动态调试了。

然后 adb install *:/…/*.apk安装程序

进入shell,su命令获取root权限

上传android_server64文件到/data/local/tmp/目录下

然后chmod 777 file,并执行

重新打开一个命令提示符,
输入”adb forward tcp:23946 tcp:23946”进行tcp端口转发

其中第一个23946为Android设备上的,第二个是PC端的。

查看要调试的包名

执行命令adb shell am start -D -n com.example.hello/.MainActivity启动程序,其中选项-D代表开启debug模式,-n后加上应用程序包名以及活动名,如图所示:

选择附加进程

IDA+ADB调试so文件(USB连接手机方式)_supernovaExp的博客-CSDN博客

2021-11-23
Contents

⬆︎TOP