这是早期分析的一点点几维中的so文件加壳,没分析完,好像也现在很少看到他们用了,也没时间看,以下是之前分析的:
一、分析篇:
首先看到核心的函数全部变成了以下这种形式:
So加壳的话,首先定位到.init_proc这个导出函数中,去分析:
通过静态分析可知道:加固完以后几个So文件的主要功能如下:
libkwscr.so:主要是程序crash记录函数;
libkwscmm.so:加载so文件提供环境以及初始化,还有几维的SDK函数,对于程序crash报告记录;
libkwslinker.so:几维的自定义linker,也是核心的So文件;
libbug.so :应用级的So被几维加固处理过的So文件;
init_proc函数的主要功能如下:
从上面可以知道接下来主要是分析:kiwisec_13141688和kiwisec_13141688这两个函数,后面会详细的介绍。
KiwiSecLoader函数如下,主要是判断是Dalvik虚拟机还是ART虚拟机,然后创建java虚拟机执行环境。
进去看kiwisec_44这个函数:
接着进去分析ikiwiInit这个函数。
接着去分析看ikiwiCrashInit这个函数
接着去分析initAttacker这个函数,以下是攻击检测的分析的具体体现。
接着去分析libkwslinker.so中的kiwisec_1314168这个函数。
接着去分析sub_6138这个函数,函数的具体功能如下:
Sub_5F90这个函数的具体功能如下:
总的来说初步的分析kiwisec_1314168这个函数的主要作用是进行符号查找的一个过程.
我们知道在加载过程即可放在加载器的init_array 中,也可放入
JNI_OnLoad中,但是在libkwslinker.so的导出函数中没有发现JNI_Onload函数,因此很有可能是在.init_array处进行的,因此可以看到如下:
通过调用去分析这几个函数,很多的回归到到这个函数:
没有看出其实质性的作用:
由于在之前执行的时候都用到了其他的So文件因此,可以看一下其它几个So文件中.init_array中的相关内容。
首先是看libkwscmm.so的相关函数
从上面的大致分析,可以看到跟去分析处理应用函数没有关系。
接着看libkwscr.so中的.init_array的相关函数
接着进行分析。