freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

    Android静态分析之初级篇(二)
    2019-06-14 08:30:19

    接着《Android静态分析之初级篇 》来,这次来看看如何在反编译后的apk包中添加一个页面,类似植入广告~

    在app中进行广告植入,正常思路是:在app开始启动时增加一个广告的页面,代码里就是新建一个Activity文件,并将其设置为入口Activity。

    假设我们没有原apk的源代码,那我们需要新建一个跟这个apk包一样的项目目录,包名要跟我们要插入广告页面的apk一致:

    添加一个HackActivity页面,代码如下图:

    效果如下:

    打包,签名,反编译后,查看smali文件夹:

    可以看到有两个HackActivity的smali文件,将这两个文件copy到原apk反编译后的hellosmali文件夹下:

    同时,去修改它的AndroidManifest.xml文件,将入口Activity改为HackActivity:

    保存,重新回编译,同样使用jarsigner进行签名,将生成的安装包安装到Android机上,看看效果:

    可以看到是一个空白页,现在我们想办法给这个空白页添加点内容进去。

    在我们新建的项目里添加一个页面add.xml:

    重新打包,签名,并反编译,重新将反编译后的两个HackActivity的smali文件放到smali文件夹下,同时,还要把新添加的xml文件放到原apk反编译后的layout文件夹下:

    然后,在R$layout.smali文件中添加add.xml的ID:

    注意值不要跟前面的重复了,可以跟着最后的ID值累加。

    add.xml布局文件在HackActivity文件中也有用到,我们去看看,add.xml是在onCreate方法中到的,我们去找onCreate方法:

    看到一个很像ID的东东,我们修改成刚才在R$layout.smali中的值,保存。

    应该没有要改的东西了,我们回编译试试,看看有没有达成效果,最终结果(丑是丑了些,大家理解意思就行哈):

    好,总结一下步骤:

    1、 将HackActivity.smali文件放入hellosmali文件夹;

    2、 将新添加的页面add.xml放入laout文件夹;

    3、 在R$layout.smali文件中添加add.xml的ID;

    4、 修改HackActivity.smali文件中add.xml的ID;

    5、 修改AndroidManifest.xml文件,将入口Activity改为HackActivity。

    那么如何防止别人反编译我们的apk包呢?我们先使用代码混淆技术看看效果。

    在build.gradle文件中可以看到设置代码混淆的参数,默认设置为false,我们修改为true再打包试试:

    打包之后反编译,跟之前未开启混淆反编译的代码进行对比,直接去看smali文件夹,有明显的不同:

    代码混淆后只有一个MainActivity.smali文件,直接打开看看,跟未混淆之前的来个对比(左边是混淆过的,右边是未混淆的):

    我们再按照之前未混淆时候的操作步骤对正常的代码混淆过的apk进行广告页的添加,看看能不能添加成功:

    1、 将HackActivity.smali文件放入hellosmali文件夹,完成;

    2、 将新添加的页面add.xml放入laout文件夹,完成;

    3、 在R$layout.smali文件中添加add.xml的ID,呃,没有这个文件呢,那就不要add.xml文件了,将HackActivity.kt中的setContentView注释掉 ,那第二步其实就不需要了。

    4、 修改HackActivity.smali文件中add.xml的ID,这步也不需要了

    5、 修改AndroidManifest.xml文件,将入口Activity改为HackActivity

    回编译,签名,安装,打开,直接crash了:

    Android Studio是怎么混淆的呢?

    在build.gradle文件中可以看到有用到混淆文件proguard-android-optimize.txt(在\sdk\tools\proguard文件夹下):

    从proguard-android-optimize.txt文件中可以看到各种混淆设置:

    目前暂时卡到这里了,待我研究研究怎么破解再分享给大家~

    *本文作者:梦里不知哪儿是哪儿,转载请注明来自FreeBuf.COM

    # Android # 静态分析
    本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
    被以下专辑收录,发现更多精彩内容
    + 收入我的专辑
    + 加入我的收藏
    相关推荐
    • 0 文章数
    • 0 关注者