首页
论坛
课程
招聘
[分享]Android逆向:smali编码实践 —— 小书亭去除定时广告以及权限未授权弹窗
2021-3-26 14:31 9810

[分享]Android逆向:smali编码实践 —— 小书亭去除定时广告以及权限未授权弹窗

2021-3-26 14:31
9810

为了学习Android逆向特地下载了一个盗版小说的APP,准备去掉广告以及授权的弹窗,以此来增加对smali语法的熟悉度。

1.准备工作

1.1下载好apktool的jar这里使用apktool-2.5.0.jar (PS: 执行命令为 java -jar apktool_2.5.0.jar d XXX.apk 与 java -jar apktool_2.5.0.jar b XXX)

1.2 手机或者模拟器

1.3 安装好JaDex方便自己看看大概写出来的东西是个什么样子,用其它工具也行,不过这个很方便。

1.4 自己的keystore文件以及签名工具

2.反编译APK

执行命令 java -jar apktool_2.5.0.jar d 经典小书亭-1.3.0.apk

 

编译成功后会生成一个与apk同名的目录里面就是反编译后的文件了,如图:
​​​​​​​​

3.修改smali文件

3.1打开日志打印

这里我的习惯是先打开日志打印,在代码中经过搜索发现app的日志打印是由 com/reader/vmnovel/utils/MLog 类来完成,和大多数开发人员使用的方法一样这里也是使用一个boolean开控制日志的打印。

这里直接写死isShowLog为true,当然也可以去掉if判断,这样日志就可以打开了。接下来是打包APK查看修改结果以及日志:

为了方便使用乐固提供的签名工具进行签名后运行,运行后查看控制台果然日志能够打印出来了,查看发现在打开小说之后有一个会定时打印一个日志 “是否显示广告”,因此可以推断这里是在XsApp类中使用的计时器,当到了指定时间显示广告弹窗。

由此可见我们关掉这个计时器或者关掉弹窗显示就可以阻止弹窗了。直接在代码中搜索 "是否显示广告" 结果没查到!在XsApp类找了一圈之后发现原来是中文转换成了unicode,如图:

 

根据上面的:cond_5我们可以看看是什么情况下会跳转:cond_5,只要一直跳转:cond_5那么就不会显示广告弹窗了。经过查找发现有两处地方会跳转,那么只要在第一处进行跳转就可以满足了,这一处的值是l()Z返回的。

这个l()方法就是我们的关键,当然这里直接设置v0也是可以的,但是为了增加熟练度,我决定还是多写点代码修改l()Z方法,找到后直接删除里面逻辑,然后加了个日志打印。

再次打包签名后查看logcat。可以看到修改已经生效了。

3.2 去除权限申请失败弹窗


代码中查询看看有没有Permission相关的类以及关键字符串,很便在smali_classes2\com\reader\vmnovel\utils里面找到了Permission类以及它的一些内部类,将权限申请失败转unicode代码里面查了下发现弹窗业务在一个PermissionUtil$requestRuntimePermissions$2.smali文件里面,顺藤摸瓜找到Dialog的show方法,注释后添加一个日志打印。
如图:

最后再次打包后查看修改结果,果然没再展示弹窗,日志打印结果如下:

总结

刚开始学习Android逆向开发,还是得找一些没有没有加固的app进行练习,这可能是最容易让自己坚持下去的办法,不然真坚持不下来!


【公告】看雪团队招聘安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

最后于 2021-3-26 14:38 被代吃夜宵编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 1866
活跃值: 活跃值 (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
TUGOhost 活跃值 2021-3-27 16:03
2
0
牛逼,如果一些防护功能在Java层写的话,也可以通过修改smali代码来进行绕过,当然了,能hook就hook
雪    币: 302
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
andyhah 活跃值 2021-10-18 20:01
3
0
有apk链接吗
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
我是大古队长 活跃值 2021-10-20 17:52
4
0
andyhah 有apk链接吗
标题里有诶,小书亭
游客
登录 | 注册 方可回帖
返回