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

    xiaoxiao2024-03-17  124

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

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

    小吴将下载的apk文件上传到OSS

    他想分析一下这些apk应用的权限信息:

    使用aapt工具抽取出每个apk文件的权限信息将它们录入到数据库中(rds),方便日后查询

    步骤

    1. 创建一个OSS bucket

    https://oss.console.aliyun.com/index#/

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

    2. 创建RDS数据库

    https://rdsnew.console.aliyun.com/

    在RDS控制台创建一个实例(注意选择华东2区域和经典网络)

    ![image](https://yqfile.alicdn.com/6d84edced63309c4c24cead703e0332861e20e22.png?x-oss-process=image/resize,m_mfit,w_600) 选择实例创建一个数据库创建一个用户并授权其访问数据库的权限

    添加白名单,允许所有的IP访问

    ![image](https://yqfile.alicdn.com/a7c7be069b825d298b769a3cf4b94a3aae012511.png?x-oss-process=image/resize,m_mfit,w_600)

    3. 创建函数计算的服务和函数

    https://fc.console.aliyun.com

    创建服务

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

    docker run -it -v $(pwd):/opt debian:8在容器中运行apt-get update && apt-get install -y aapt 将aapt及其所依赖的库从容器中拷贝出来:mkdir /opt/aaptcp $(which aapt) /opt/aapt/cp -R /usr/lib/android /opt/aapt/ ldd $(which aapt) | grep -v android将其所依赖的库也拷贝到/opt/aapt/

    准备函数代码 由于函数用到了mysql这个模块,所以需要将其安装:

    npm install mysql 安装完毕之后,整个代码目录的结构是这样的:

    打包上传到OSS 将整个代码目录打包成zip:

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

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

    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](https://yqfile.alicdn.com/ea9462a60bd57f2fe5ed49ab793c6778b234fc7b.png?x-oss-process=image/resize,m_mfit,w_800)

    可以看到函数运行成功,接下来我们可以去RDS数据库中确认一下:

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)