车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证

admin 2023年4月4日17:46:43评论64 views字数 1194阅读3分58秒阅读模式
车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


序言

黑宝宝apk(在附件.rar中),他的签名验证是写在so里面的。拿到这个apk直接反编译重打包后安装到手机上,刚一运行程序就退出。那么我们就绕过在so中的签名验证吧~


用apktool解包apk后用IDA打开libJniTest.so

下面介绍两个窗口:

(1)Exports窗口是导出表(so中能让外部调用的函数)(2)Imports窗口是导入表(so调用到外面的函数)


通过分析java层知道程序调用了一个native层函数check, Exports窗口能列举出so中被外部调用的所有函数,所以打开导出表窗口.搜索check, so中的函数都是java包名类名方法名格式的,所以这里check函数就被找到了.

车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


双击进去查看check方法,并按键盘f5将汇编转换成C语言,点击函数第一个参数int 右键Convert to struct* ,在弹出的框中选择_JNIEnv,点ok后,可以看到有一些函数已经显示出来了。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


代码可读性很差,此时需要导入jni.h文件。点File->Load file->Parse C header file 找到jni.h(附件中)所在位置 ,点打开,此时显示Compilation successful 导入成功。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


按tab或者点击回到汇编视图,然后按空格键转化为图形视图。通过图形视图可以对apk的整个逻辑一览无余,快捷键ctrl+鼠标滑轮可以缩小方法视图。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


通过图形视图很清晰的可以看出,如果签名正确程序通过jnz指令跳到左视图程序继续执行,否则跳到右视图退出程序。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


repe cmpsb指令解析https://blog.csdn.net/fulinus/article/details/8277442


JNZ,全称jump if not zero,汇编语言中的条件转移指令。结果不为零(或不相等)则转移。


JZ,相等则转移。


通过上面的分析,是把JNZ改成JZ,让程序在签名错误的情况下还能继续执行。鼠标选中JNZ按住空格键返回到汇编视图,修改so就是改16进制。


鼠标点住JNZ那行命令 View->Open subviews->Hex dump打开16进制编辑 ,0F85是JNZ的机器码,0F84是JZ的机器码,右键edit,右键apply。然后点击插件,应用patch。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


改完后,回到图形视图。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


下面就是用户名和密码的验证跳过了,同样的方法,jnz和jz互相改。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


保存so,然后重打包,用AndroidKiller给apk进行签名,安装到手机上,程序正常运行。成功爆破签名验证。并且任意用户名和密码都可以登录成功。


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


参考链接

https://www.52pojie.cn/thread-732955-1-1.html

https://blog.csdn.net/fulinus/article/details/8277442


车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证


原文始发于微信公众号(华云安):车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月4日17:46:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   车联网安全系列安卓漏挖之IDA爆破so中签名验证和登录验证http://cn-sec.com/archives/1652610.html

发表评论

匿名网友 填写信息