一个so中的签名验证绕绕过

0x00 前言

本文仅供安全技术交流,请勿用于不正当的用途,造成的一切后果与本文作者无关.

(其实也不是啥高深的技术,就是修改字节码绕过,就是想简单记录一下 )

0x01 样本分析

用AndroidKiller反编译打包后

手机打开后会闪退

查看一下崩溃日志

发现这里函数回溯,so层中的一个函数报错了,跟过去看看

可以看到java层调用的函数以及JNI_Onload函数,先看看JNI_Onload,下面是结构修复后的(怎么操作就不多罗嗦了)

可以看到这里有几个全局引用,看函数名就知道是在获取一些全局信息,报名,签名之类的,应该是为后面的校验做准备

然后分析那三个native函数

可以看到这里是校验失败后的逻辑分支

那么就来修改,此处本意是不相等则跳转,那么可以修改为相等则跳转,那么二次打包后因为签名以及不想等了,便不会执行报错操作

只需要讲D1字节码修改为D0,那么指令就是BEQ

然后保存一下修改

第二处也同上分析

全部修改完后,替换即可正常运行

0x02 总结

这个样本能这样修改是因为apk本身并没有加固,so层也没有加密,比较容易分析出校验逻辑