`
骑猪逛街666
  • 浏览: 140836 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用函数计算来抽取apk信息

阅读更多
原文链接:http://click.aliyun.com/m/22127/
摘要: 在之前的博客中我们看到,可以使用函数计算来实现一个自定义的图像处理服务,这个服务是稳定、可靠、弹性伸缩的,并且它是无服务器架构,按函数的调用时间收费,节省了服务器闲置的开销和运维成本。 使用函数计算可以方便地构建类似的微服务,比如我们可以创建一个处理android apk文件的微服务: 小吴将下

在之前的博客中我们看到,可以使用函数计算来实现一个自定义的图像处理服务,这个服务是稳定、可靠、弹性伸缩的,并且它是无服务器架构,按函数的调用时间收费,节省了服务器闲置的开销和运维成本。

使用函数计算可以方便地构建类似的微服务,比如我们可以创建一个处理android apk文件的微服务:

小吴将下载的apk文件上传到OSS
他想分析一下这些apk应用的权限信息:
使用aapt工具抽取出每个apk文件的权限信息
将它们录入到数据库中(rds),方便日后查询
步骤
1. 创建一个OSS bucket
https://oss.console.aliyun.com/index#/

注意创建bucket时选择“华东2”区域。

image

2. 创建RDS数据库
https://rdsnew.console.aliyun.com/

在RDS控制台创建一个实例(注意选择华东2区域和经典网络) image
选择实例创建一个数据库
创建一个用户并授权其访问数据库的权限
添加白名单,允许所有的IP访问 image
3. 创建函数计算的服务和函数
https://fc.console.aliyun.com

创建服务
image

准备aapt工具
函数计算的运行环境是基于debian:8的镜像,因此我们最好在同样的环境下下载aapt工具:

docker run -it -v $(pwd):/opt debian:8
在容器中运行apt-get update && apt-get install -y aapt
将aapt及其所依赖的库从容器中拷贝出来:
mkdir /opt/aapt
cp $(which aapt) /opt/aapt/
cp -R /usr/lib/android /opt/aapt/
ldd $(which aapt) | grep -v android将其所依赖的库也拷贝到/opt/aapt/
准备函数代码
由于函数用到了mysql这个模块,所以需要将其安装:

npm install mysql 安装完毕之后,整个代码目录的结构是这样的: image
打包上传到OSS
将整个代码目录打包成zip:

编辑index.js将其中的数据库信息替换成自己真实的信息
zip -r code.zip *
将code.zip上传到OSS
创建函数
image
跳过触发器的设置,完成函数创建。

函数的关键代码如下,完整的代码包点此下载:

  ossClient.get(objectName, apkPath).then(function(res) {
    exec.execFile(
      '/code/aapt/aapt', ['dump', 'permissions', apkPath],
      {
        env: {
          'LD_LIBRARY_PATH': '/code/aapt:/code/aapt/android',
        },
      }, function(err, stdout, stderr) {
        if (err) {
          callback(err);
          return;
        }
        var apkPerm = stdout;
        console.log('%s permissions: %s', apkName, apkPerm);

        conn.query(
          'CREATE TABLE IF NOT EXISTS APK_PERM(NAME VARCHAR(50) NOT NULL, PERM TEXT, PRIMARY KEY (NAME))',
          function(err) {
            if (err) {
              callback(err);
              return;
            }

            conn.query(
              'REPLACE INTO APK_PERM VALUES (?, ?)', [apkName, apkPerm], function(err, results) {
                if (err) {
                  callback(err);
                  return;
                }
                console.log('insert ok: %s', results);
                callback(null, 'ok');
              }
            );
          });
      });
  }).catch(function(err) {
    console.error('error: ', err);
    callback(err);
  });
4. 运行函数并查看结果
https://fc.console.aliyun.com

先将需要分析的apk文件上传到OSS
在函数计算控制台执行函数,指定event的内容为apk文件所在位置 image
可以看到函数运行成功,接下来我们可以去RDS数据库中确认一下:

image
原文链接:http://click.aliyun.com/m/22127/
分享到:
评论

相关推荐

    APK加固之类抽取分析与修复

    修复这些问题通常需要对原始源代码有深入的理解,并结合加固工具的日志和调试信息来进行定位和修复。 在实际操作中,开发者可以利用一些专业的加固工具,如腾讯的AndroGuard、360的V盾等,这些工具提供了自动化加固...

    APK反编译工具三件套apktool+dex2jar+jd-gui

    通过运行dex2jar-2.0.zip中的工具,我们可以将APK中的classes.dex抽取出来并转换,以便后续的源码查看和分析。 最后,jd-gui是Java反编译器的图形用户界面版本,用于查看Java字节码(JAR或DEX)的源代码。虽然dex2...

    FartRepair:fart修复脚本

    a参数,依据bin文件修复所有函数如果apk采用的函数抽取壳并未删去抽取的空间,此时-a参数可以正常使用,但是如果apk中抽取函数的空间都没有了,如果想一次性修复所有函数,建议还是使用寒冰师傅的,不过如果修复单个...

    抽奖工具源代码

    在编程中,通常使用特定的库或函数来生成随机数,以确保抽奖结果的公平性。在这个项目中,可能使用了Java的`java.util.Random`类来生成随机数,根据不同的奖项数量来决定每个奖项的得主。JFrame是Java Swing库中的一...

    Android系统应用程序DEX文件保护方法研究.pdf

    本文提出了一种基于函数抽取和隐式恢复的DEX文件保护方法。该方法首先对DEX文件中的关键函数进行抽取,然后对DEX文件进行重构、整体加密、重命名和隐藏,接着通过修改APP启动入口和更换smali文件实现加壳。最后,...

    基于逆向工程的Android应用漏洞检测技术研究.pdf

    《基于逆向工程的Android应用漏洞检测技术研究》这篇论文主要探讨了如何利用逆向工程来检测Android应用程序中的安全漏洞。随着Android平台的普及,针对其的应用程序面临着各种安全威胁。作者许庆富、谈文蓉和王彩霞...

    做任务平台源码视频教程.zip

    【描述】中的关键信息强调了该平台的商业模型,即通过任务的交易来盈利。一方面,用户可以创建任务,比如设计、编程、翻译等,设定报酬并等待其他人完成;另一方面,其他用户则可以根据自己的技能选择合适的任务来...

    安卓背单词app代码实现简单易懂

    - **随机选择**:编写函数随机从词库中抽取单词,避免重复。 - **显示与检查答案**:在界面上展示单词,用户输入答案后,应用检查答案是否正确。 - **反馈机制**:根据用户回答正确与否提供反馈,例如显示正确...

    金融移动应用安全解决方案.pdf

    金融移动应用安全解决方案是当前数字化时代中至关重要的领域,因为金融行业承载着大量的敏感信息,如用户个人信息、交易数据等。本解决方案旨在提供全面的安全防护措施,确保移动应用在复杂多变的网络环境中免受攻击...

Global site tag (gtag.js) - Google Analytics