在逆向过程中经常会遇到各种加密,如果在java层还好说,大部分都是在so层,而且自定义的算法较多,加壳,混淆,这时候我们就可以尝试调用它们app的so文件,其中常见的手段就是签名验证,首先打开jadx-gui分析出java层加密调用so层方法

顺着找上去发现调用so文件

直接找到加载so文件的地方

将so文件copy到我们demo中开启一个http服务,直接调用下encyptString方法

发现并没有返回真正的加密结果,一定so层做逻辑效验了,我们找到这个so文件,使用ida打开,找到导出的函数

发现采用的方式是动态注册(静态注册是以java_包名_类名_方法名开头的,否则就是动态注册)动态注册会加载JNI_OnLoad 函数,我们进入这个函数

可视效果太差了,我们导入jni.h头文件(百度搜下载即可,简单的说就是java和c的翻译官),右键选择JNIEnv

发现代码瞬间清晰了很多

找到RegisterNative第3个参数0ff_7004就是我们导出的函数地址,我们进入这个函数,找到java层导出的函数地址sub_3DC4,因为so采用的是Thumb指令,所以要+1

跟进去,查看下思维导图

可以看代码执行的逻辑很简单无非就是一个判断,我们F5转换成伪C代码

发现ERROR_9304好眼熟啊

这正是我们demo返回的错误信息,由此可得出,if里面肯定就是正常逻辑了,else里面就是返回错误的逻辑,我们继续跟进sub_15C0

可以看到通过反射拿到当前app的签名和正确的签名做比较,如果不确实是否有签名验证,就直接打开字符串窗口Shift+F12,搜索"signatures",如果有就毋庸置疑了,我们并不关心他是怎样的逻辑,我们关心的只是他的返回值,直接找到返回值v4

可以看出如果v4等于0的时候那么肯定就是错误的逻辑,我们只需要让v4变量的初始化值为1或者直接修改返回值为1,这里我们采用第二种方式,回到汇编处

CMP R0,#0  这句话就是比较R0寄存器(sub_15C0的返回值)的值如果为0则跳转到BEQ对应的函数地址,我们直接将R0寄存器值改为1,其汇编就是CMP R0,#1,找到对应的16进制3DD8

使用010编辑器打开当前so文件,Ctrl+G跳转到该函数地址处,将00直接改成01,之后保存修改

再次打开so文件查看修改后的结果。

将修改后的so文件放到demo中请求,得到结果如下:

成功获取到结果

文章仅供学习交流,禁止一切商务用途。

android so 签名校验,安卓逆向-调用第三方so文件过签名效验相关推荐

  1. 【安卓逆向】 浦X银行签名校验,逆向工程师绝不认输

    前段时间有个朋友联系到我 说有家安全公司招聘(哪家公司我就不说了) 但是面试题目第一题就难着了 这我哪儿能忍 直接干! 拿到app的时候我心凉了一下 这他妈银行我搞个锤子 但是逆向工程师绝不认输! 不 ...

  2. android obb在哪,安卓手机如何打开.obb文件?

    01 安卓手机无法打开obb文件.obb文件就是所谓的游戏数据包,它是不能直接打开的,而是把它解压到Androidobb中相关的文件夹里,然后安装该obb对应的软件,这样该软件才能调用obb文件中的数 ...

  3. java调用第三方dll文件 源码_C++调用python文件(包含第三方库)

    本文内容主要参考以下两篇文章: 武军:C++中调用python(VS2017)​zhuanlan.zhihu.com C++调用python的那些坑(详细教程步骤)_giser_xupf的博客-CSD ...

  4. 手机android能打开吗,安卓手机能打开eif文件吗 手机怎么打开eip文件方法

    安卓手机要怎么打开.eif文件,估计有些小伙伴还不知道怎么打开吧,那么下面和小编一起来看看轻松打开的方法介绍. 安卓手机如何打开.eif文件 安卓手机是不能打开.eif文件的,小伙伴们想要轻松的打开这 ...

  5. Android NDK开发: 通过C/C++调用第三方so库

    文章目录 一.编写so库代码 二.安装Android NDK 三.编译so库 3.1 编辑Android.mk 3.2 编辑Application.mk 3.3 编译 四.集成到Android工程中 ...

  6. android 去广告教程,安卓逆向系列教程 4.6 去广告

    4.6 去广告 作者:飞龙 我们要去掉的是主界面上的广告: 把它拖进 Android Killer,这个项目的包是com.cnnzzse.kxxye,通过查询配置文件可得知,主界面是hellot. 我 ...

  7. android 爬虫 协议分析,安卓逆向:分析抖音登录协议

    新版D音由于插入了过多破坏性代码,已经无法由jadx反编译成功了,太多地方都解析失败.我尝试用MT管理器换引擎反编译,也都是一样的结果.这里如果想分析,需要jadx结合smali代码硬啃.我对着sma ...

  8. android 释放so,在安卓项目里部署so文件你需要知道的知识

    我们往往很容易对.so文件应该放在或者生成到哪里感到困惑,下面是一个总结: Android Studio工程放在main/jniLibs/ABI目录中(当然也可以通过在build.gradle文件中的 ...

  9. android手机的文件格式,安卓手机如何打开.apk文件?

    01 在安卓手机的文件管理中找到apk文件,然后点击安装进行安装就可以了.APK是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件.一个Android应用程序的代码想 ...

最新文章

  1. 【转贴】C#中事件处理的个人体会
  2. 高效多云管理做到这点就够!
  3. 最萌办公室采访 | 网易程序员灵魂大拷问(文末有福利)
  4. 端午小长假--前端基础学起来02与浏览器交互,表单标签
  5. 程序中添加动态用户密码
  6. ts可展开注释_TS语法之装饰器(注解)
  7. java8的时间工具类_JAVA8日期工具类
  8. Linux多线程Pthread学习小结
  9. v-model数据绑定分析
  10. java异常_深入理解java异常处理机制
  11. 自定义插入页面标签以及实现类似通讯录的首字母搜索
  12. 通过注册表设置默认打印机的方法
  13. Mac 重置mysql的root 密码
  14. java graphics2d 绘图_java GUI Graphics2D 绘图
  15. SSM框架将数据库数据导出为Excel文件
  16. 在服务器上安装jdk
  17. 在线计算机能力测试答案,计算机基础知识在线测试答案-20210514014539.doc-原创力文档...
  18. 异常java.io.NotSerializableException
  19. ELF文件格式的详解
  20. 数字定时误差检测算法系列之 ———时域Gardner算法

热门文章

  1. 2020年电工(中级)实操考试视频及电工(中级)操作证考试
  2. fastadmin 中success()无法跳转
  3. 关于联想收购 IBM 的 PC 部门。
  4. JS的定时器和清除定时器
  5. Python爬虫1.4 — requests高级用法教程
  6. 图解LeetCode——827. 最大人工岛(难度:困难)
  7. 关于价值投资的基础理论
  8. 大数据技术的应用项目类型
  9. 分享一个绿色的食品蔬菜水果外卖预订网站bootstrap模板
  10. 鱼c工作室python课件_鱼C工作室《零基础入门学习Python》 学习过程笔记【011列表类的方法】...