Android逆向:smali编码实践(五)—— 小书亭去除定时广告以及权限未授权弹窗

目录

1.准备工作

2.反编译APK

3.修改smali文件

4.总结


1.准备工作

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

1.2 手机或者模拟器

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

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

 

2.反编译APK

执行命令 java -jar apktool_2.5.0.jar d xxx.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方法,找到后直接删除里面逻辑直接返回false,然后加了个日志打印。

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

3.2 去除权限申请失败弹窗

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

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

4.总结

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

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值