目 录CONTENT

文章目录

启航Android逆向-04-认识包

天阁创客official
2024-10-09 / 1 评论 / 2 点赞 / 23 阅读 / 0 字
温馨提示:
作者:天阁创客official 作者承诺教程免费,拒绝盗版搬运,复制转发请指明出处! 让天下没有难学的技术!

查看包名的方式

什么是包?

像常见的apk、apks、xapk,这些归档格式的压缩包其实就是包,后面会详细讲解包的结构。

包名就是在Manifest文件中被定义了的名字,而不是xxx.apk,也是不是apk前面的名字,这是可以修改的,真实的包名是Manifest文件中package这个参数的值,这个值就是包名。

反编译查看清单文件

打开jadx或者jeb或者gda,打开apk文件,我拿三个软件都做一例子。

jadx 贾德克斯

使用jadx打开apk之后,左边的目录主要会存在三个文件夹,输出、源代码、资源文件,我们要反编译查看包名就需要到资源文件中去看AndroidManifest.txt,这是APK的核心文件,文件中定义了程序的名称、版本、权限、引用的库文件等信息。如图:

image-20241008154502344

在文件中package="cn.trinea.android.developertools"中的cn.trinea.android.developertools就是软件包的包名,而下面那些是相关的Android SDK版本、软件版本、版本名字等相关信息。

JEB 杰布

在JEB中我们打开apk包之后,在左边的侧边栏中就可以看到一个Manifest文件,我们点击打开文件就可以看到相关的内容,如下:

image-20241008154851225

GDA

进入软件之后打开apk包之后是这样的,一目了然:

image-20241008155117061

JDA的体验或许没有其他软件体验号,打开Manifest文件的时候有点卡顿,这一点要注意,非常吃资源,需要你多分配一点内存。

image-20241008155855095

通过shell命令获取包名

除了以上使用反编译的工具可以查看包名,还可以使用shell命令。

查看包列表

pm list packages

在进入Android shell之后使用pm list packages命令可以查看所有的软件包。如图:

image-20241008160523189

如果逆向在Linux shell或者Windows powershell中去执行该命令,只需要在前面添加一个adb shell即可:

adb shell pm list packages

image-20241008160720880

通过进程查看包名

还可以通过进程来查看软件包的包名,使用Linux的shell命令ps就可以查看,例如:

image-20241008161000567

在后续的Linux高版本的内核中,移除了直接使用ps查看进程的方式,需要ps -A命令查看:

image-20241008161412963

查看app私有目录

我们可以通过查看app的私有目录的方式来查看包名,我们需要将路径切换到data/data目录下:

image-20241008161819911

也可以查看app的安装目录来查看app的包名:

image-20241008161934157

这里的app名字是进行了编码的,很明显使用的是Base64进行的编码,我们可以通过工具进行解码:

image-20241008162155664

这里显示乱码的原因是错误解码的问题,我们可以通过转码成为16进制:

image-20241008162655993

然后再进行16进制解码即可,解码结果如下:

image-20241008162801287

输出窗口服务信息

我们可以输出当前正在运行的程序服务的信息来获取包名,执行dumpsys window windows命令时,它会列出所有与窗口管理相关的信息,这些信息对于调试应用程序的布局问题、多窗口模式的支持以及其他与UI相关的问题非常有用。

dumpsys window windows 

image-20241008163414496

我们可以使用grep命令进行信息的过滤:

dumpsys window windows | grep qq

image-20241008163556851

可以看见我们把QQ的相关信息给过滤了出来。

如果我们要在Linux或者Windows上面直接操作,我们只需要在前面添加adb shell即可,如果有多个设备,指定一个设备就可以了:

image-20241008163803036

如果你用的是Windows操作系统,那么直接吧grep换成findstr就可以了,因为grep命令只能在Linux/Unix环境中去使用,Windows需要使用别的命令:

dumpsys window windows | findstr qq

image-20241008164051663

获取用户交互焦点信息

Android:
dumpsys window windows | grep mFocusedApp
dumpsys window windows | findstr mFocusedApp

用来找出当前Android设备上获得焦点(即用户正在交互)的应用的信息,如图:

image-20241008165250676

由于没有任何进行交互,所以没有信息返回。


Android:	
dumpsys window windows | grep mCurrentFocus

Linux:		
adb shell dumpsys window windows | grep mCurrentFocus

Windows:	
adb shell dumpsys window windows | findstr mCurrentFocus

用于显示当前Android设备上当前获得焦点(即用户正在查看或交互)的窗口的信息,例如:

image-20241008165737564


目前正在交互的窗口

Android:
dumpsys window | grep mCurrentFocus

Linux:
adb shell dumpsys window | grep mCurrentFocus 

Windows:
adb shell dumpsys window | findstr mCurrentFocus 

image-20241008170054278

这里返回了QQ的焦点信息和QQ的包,最后面的信息是QQ的焦点,前面的绿框是QQ的包名。

2

评论区