1

简单so层逆向实战--jg新闻

 2 years ago
source link: http://blog.wen2go.site/2022/03/12/%E7%AE%80%E5%8D%95so%E5%B1%82%E9%80%86%E5%90%91%E5%AE%9E%E6%88%98-jg%E6%96%B0%E9%97%BB/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本篇文章仅用来学习交流,请勿用于商业用途,如因违反规定产生任何法律纠纷,本人概不负责。假如本文影响到官方任何利益,请联系文章底部作者微信告知,本人会在第一时间将文章删除,感谢~

记录下某j光新闻apk的逆向,技术点包括root检测,脱壳及静态分析,so层加密分析。

  1. 抓包查看接口

    • 打开app发现有root检测,可以使用frida 调用过root的脚本,这里我用objection 提供的指令过root检测,方便快捷。

    image-20220311214910669

    • 使用objection如下指令在启动阶段hookroot检测,然后抓包分析接口

      objection -g appname explore --startup-command "android root disable"

      image-20220311213904433

    • 经过查看几个接口分析应该是signaccount参数,抓包分析不细说了,网上可以百度教程

      image-20220311214422515

  2. 接下来就可以拿着参数去静态分析

    • 美滋滋打开jadx,发现有加固,看文件名是360的壳

      image-20220311214658918

    • 用葫芦娃大佬的frida_dexdump直接脱,之前文章有讲

      image-20220311221128699

    • 脱完用jadx打开,可以直接搜到root的弹窗位置

      这里还有个坑,高版本有不知名的bugV1.3.3打开报错,V1.3.2打开不能搜索,V1.2.0V1.3.0可以打开, 新版本纵然有新鲜功能,但还是老版本稳定,可以少掉好多头发。。。

      image-20220311221710667

    • 搜了下signaccount,最后定位到下面函数位置

      image-20220311222016661

    • 然后继续追进函数看,这里用bnew了一个a对象,然后用调用了a对象的a函数

      image-20220311222338743

    • 跟进b类,发现下面的两个函数都是空的,难道没壳脱干净? 其实这里是interface抽象类,一般是在其他地方继承此类,可以理解为重载。

      image-20220311232920133

    • 我直接搜了一下类名 e.b.b.a.a.b,发现有两个重载,追进去看到函数名,就能大概确定就是我们要找的函数,而且是个native函数,so文件是wtf

      image-20220311233336317

  3. 使用IDA分析so层逻辑

    • apk包里拿出libwtf.so,用ida打开,直接确定->确定->确定。。。到下图的界面

      image-20220311233700605

    • 点击右上角的Exports,查看是否有我们需要的导出函数,搜索java,刚好就是java层看到的两个函数getSigngetFinalDeviceId.

      image-20220311233953128

    • 双击getsign函数,进入汇编代码界面然后一顿骚操作>>F5>>Hide casts>>替换JNIEnv; 就可以看到下图的伪C代码,逻辑很清晰

      image-20220311235733477

  4. 逻辑理清之后,直接上frida hook最后一次md5加密的函数,so层加密根据偏移地址进行hook,参考之前frida教程

    image-20220312001851177

  5. 分析到这里已经结束了,有经验的师傅一眼就看出来account其实就是随机的UUID,去java层验证无误。

    image-20220312002353204


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK