0x00 前言
本文仅供安全技术交流,请勿用于不正当的用途,造成的一切后果与本文作者无关.
(其实也不是啥高深的技术,就是修改字节码绕过,就是想简单记录一下 )
0x01 样本分析
用AndroidKiller反编译打包后
手机打开后会闪退
查看一下崩溃日志
发现这里函数回溯,so层中的一个函数报错了,跟过去看看
可以看到java层调用的函数以及JNI_Onload函数,先看看JNI_Onload,下面是结构修复后的(怎么操作就不多罗嗦了)
可以看到这里有几个全局引用,看函数名就知道是在获取一些全局信息,报名,签名之类的,应该是为后面的校验做准备
然后分析那三个native函数
可以看到这里是校验失败后的逻辑分支
那么就来修改,此处本意是不相等则跳转,那么可以修改为相等则跳转,那么二次打包后因为签名以及不想等了,便不会执行报错操作
只需要讲D1字节码修改为D0,那么指令就是BEQ
然后保存一下修改
第二处也同上分析
全部修改完后,替换即可正常运行
0x02 总结
这个样本能这样修改是因为apk本身并没有加固,so层也没有加密,比较容易分析出校验逻辑