如何获取一个安装包(apk)的所有活动(activity)

如何获取一个安装包(apk)的所有活动(activity),第1张

开发插件啊。简单的,利用intent将B中的界面拉起来进行处理,这是一种伪插件模式正经的一种框架为:利用PackageManagergetInstalledPackages来获取并筛选出属于A的插件,也就是B,并可以获知里面的package name和activity name。使用限定包名和类名的方式(Intent intent = new Intent(); ComponentName compList = new ComponentName("comandroid", "comandroid"); intentsetComponent(compList);)startActivity()就可以了,不过这样的插件模式还是挺没有意义的。最好的插件应该首先将A和B两个apk定义一样的sharedUserId,然后只是利用contextgetClassLoader()loadClass()之后利用反射直接调用插件里面定义的方法而不是拉起界面。

所需工具:aapt,Android SDK中的工具,只有一个exe,可以直接运行。

keytool,JDK中的工具,需要安装JDK环境。

需要提供目标应用的apk

1、获取包名

例如:aaptexe dump badging C:\Users\Administrator\Desktop\demo-apk-1018791apk > C:\Users\Administrator\Desktop\1txt

获取到的包名是compakgnameswbg

2、获取签名

SHA1: 56:BD:02:6B:9D:53:D7:F5:32:B2:BC:BD:BB:34:5B:F1:CD:EF:7F:C0

这里借助github开源的类apkparser

在项目composerjson中执行下面命令或修改composerjson引入即可

方法二适用于没有JAVA环境的情况下,一般linux都会有openssl环境。

原理:通过分析方法一中,发现apk包解压之后,里面会有rsa签名证书,此证书是一个符合pki体系的x509证书,通过openssl命令即可查看信息。

方法一 用重签名工具,这个在Robotium 中用得比较多

另外一种方式用命令方获取

Aapt dumpbadging xxxxapk

第一个框为包名

第二个框为主Activity名

如果取包名与Activity在命令行中不方例还可以用以下方式获取

Aapt dumpbadging xxxxapk >c:\apktxt

之后打开c:\apktxt

第三种方式,如果你装了Appium 可以这么 *** 作下

进入设置页,选择APK 路径,下面就会显示包名和Activity名称

第四种用hierarchyviewer 查看

Aapt 命令

AAPT dump xmltree XXXAPK AndroidManifestxm >ctxt

之后去CTXT 查看

第6种

Adbshell dumpsys activity activities >d:\logtxt

之后去logtxt 搜package 和Activity

第七种

Adb logcag >d:\3txt

之后打开手机上的应用

打开之后立即在电脑上按ctrl+c

之后去3txt 找PACKAGE和Activity

在发布应用的时候,需要通过keystore文件对apk包进行签名,才能发布到市场上。

在使用微信平台服务时或者其他需要提供MD5值的时候,该如何获取APK/签名文件的SHA1证书,MD5呢?

提供三种种方式:

1通过Android Studio的命令输入来获取:

keytool -list -v -keystore xxxjks

keytool -list -v -keystore xxxkeystore

2通过解压apk来获取:

1) 将apk修改后缀为 rar文件后解压;

2) 进入解压后的META-INF目录,该目录下会存在文件CERTRSA

3) 在该目录下打开cmd,输入命令 :keytool -printcert -file CERTRSA

3通过Eclipse获取

依次在 Eclipse 中打开 Window -> Preferances -> Android -> Build。

Well done!

安卓的APK么?

安卓的APK是个压缩包格式,我给你个思路 具体代码你去写 还是比较简单的

分为两步:

①上传按钮点击时解压APK压缩包

②获取压缩包内AndroidManifestxml(apk的包名,版本号,版本名称都在此XML文件内)

③解析这个XML

既然答了 我就完善一下:(在codeplex上面找到的)

 

using AndroidXml;

using IonicZip;

using System;

using SystemCollectionsGeneric;

using SystemIO;

using SystemLinq;

using SystemText;

using SystemThreadingTasks;

using SystemXml;

namespace APKRead

{

    class NamespaceInfo

    {

        public string Prefix { get; set; }

        public string Uri { get; set; }

    }

    class Program

    {

        static List<AndroidInfo> androidInfos = new List<AndroidInfo>();

        static void Main(string[] args)

        {

            //要分析的文件名称

            var manifest = "AndroidManifestxml";

            //读取apk,通过解压的方式读取

            using (var zip = ZipFileRead("Newsapk"))

            {

                using (Stream zipstream = zip[manifest]OpenReader())

                {

                    //将解压出来的文件保存到一个路径(必须这样)

                    using (var fileStream = FileCreate(manifest, (int)zipstreamLength))

                    {

                        // Initialize the bytes array with the stream length and then fill it with data

                        byte[] bytesInStream = new byte[zipstreamLength];

                        zipstreamRead(bytesInStream, 0, bytesInStreamLength);

                        // Use write method to write to the file specified above

                        fileStreamWrite(bytesInStream, 0, bytesInStreamLength);

                    }

                }

            }

            //读取解压文件的字节数

            byte[] data = FileReadAllBytes(manifest);

            if (dataLength == 0)

            {

                throw new IOException("Empty file");

            }

            #region 读取文件内容

            using (var stream = new MemoryStream(data))

            {

                var reader = new AndroidXmlReader(stream);

                while (readerRead())

                {

                    switch (readerNodeType)

                    {

                        case XmlNodeTypeElement:

                            {

                                AndroidInfo info = new AndroidInfo();

                                androidInfosAdd(info);

                                infoName = readerName;

                                infoSettings = new List<AndroidSetting>();

                                for (int i = 0; i < readerAttributeCount; i++)

                                {

                                    readerMoveToAttribute(i);

                                    AndroidSetting setting = new AndroidSetting() { Name = readerName, Value = readerValue };

                                    infoSettingsAdd(setting);

                                }

                                readerMoveToElement();

                                break;

                            }

                    }

                }

            }

            #endregion

            FileDelete(manifest);

            StringBuilder builder = new StringBuilder();

            foreach (var androidInfo in androidInfos)

            {

                builderAppend(stringFormat("{0}:",androidInfoName));

                foreach (var setting in androidInfoSettings)

                {

                    builderAppend("{");

                    builderAppend(stringFormat("'{0}':'{1}'",settingName,settingValue));

                    builderAppend("},");

                }

                builderAppend("\n\n");

            }

            ConsoleWriteLine(builderToString());

        }

    }

    /// <summary>

    /// android应用程序信息

    /// </summary>

    public class AndroidInfo

    {

        public string Name { get; set; }

        public List<AndroidSetting> Settings { get; set; }

    }

    /// <summary>

    /// 设置

    /// </summary>

    public class AndroidSetting

    {

        public string Name { get; set; }

        public string Value { get; set; }

    }

}

      

//引用的IonicZip库可以直接通过 nuget下载。

一个安卓应用的apk查看包名的具体步骤如下:

1、首先将手机和电脑连接在一起,点击打开开始菜单栏中的“运行”选项。

2、然后在d出来的窗口中点击输入“CMD”,回车确定。

3、然后在d出来的窗口中点击输入“adb shell dumpsys package”,回车确定。

4、然后在就显示包名了。

这个apk

1jadx分析发现密码验证就放在so层的securityCheck(String str)这个函数里

2在IDA里进行调试

发现有反调试,那么下一步就是先把反调试给破解了。

3经过调试发现崩在这里

这里的v6应该就是密码

以上就是关于如何获取一个安装包(apk)的所有活动(activity)全部的内容,包括:如何获取一个安装包(apk)的所有活动(activity)、PHP获取安卓apk包里的apk签名、如何获取apk包的包名和activity等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9689566.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存