Android静态分析之初级篇(二) – 作者:梦里不知哪儿是哪儿

接着《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

来源:freebuf.com 2019-06-14 08:30:19 by: 梦里不知哪儿是哪儿

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论