0x00 前言
看雪上看到的一道题,自己下载下来做了下
0x01 初步分析
JEB打开,可以发现加载了net库,并且调用了一个native函数upload,那么直接拖入IDA中开始分析so
可以发现so文件加密了,那么没法静态分析了
那么动态调试吧!!
0x02 动态调试
这里其实就是需要动态运行时去解密so文件然后再分析,那么可以在linker下断点,这样就能在加载so文件之前断下来
首先先将手机里/system/bin/linker拖出来,IDA对其分析
首先搜索这串字符串,找到需要下断点的地方
记下偏移0x274C
然后开始IDA附加应用进程开始调试,具体步骤就不罗嗦了,先找到需要下断点的地方,加载的基址加上之前的偏移
下断
运行,这里已经断了下来,那么F7跟进查看
此处已经运行在libnet.so中了,我们一步一步跟进
一路F8下去,友回到了linker中,此时libnet.so应该已经解密完了
跳到libnet.so中去看看
此时JNI_Onload函数已经解密
那么进行下结构体修复,这样便于分析
那么很清楚了,这里动态注册的函数便是java层看到的函数upload,跟过去看看是否正确
此处IDA没有识别出来
直接右键->Structure->JNINativeMethod
跟到函数地址查看:
F5报错了,那么先Create Function,直接快捷键P即可,这里还是报错了
那么跟过去,一次性把这些全都make code (快捷键C)试试
然后再跳回到之前的函数地址处Create Function即可(这其实就是IDA的一些识别不了的问题,手动解决下即可)
函数没怎么分析,看了下看雪那篇文章,主要就是这两处的异或,其他的一大堆无非就是混淆视听,那么看下这两处异或后结果是啥
一不小心多摁了几下。。。