当前位置: 移动技术网 > 移动技术>移动开发>Android > android so分析之 os.trptbil

android so分析之 os.trptbil

2020年09月22日  | 移动技术网移动技术  | 我要评论
仅仅分析so层,鉴于防止被非法利用,这里将so的名字改名。关键信息隐去。首先观察init_array层,发现以下:一个一个分析。sub_28D0打开以后,是thumb指令集,不急,慢慢来分析。sub_88AC这个方法,多次调用,应该是个解密方法,那么有理由对他进行一波分析。流程比较大,那么我们尝试对他进行还原。还原以后的c++代码如下:未完待续...

仅仅分析so层,鉴于防止被非法利用,这里将so的名字改名。关键信息隐去。
首先观察init_array层,发现以下:
在这里插入图片描述

一个一个分析。
sub_28D0
打开以后,是thumb指令集,在这里插入图片描述
不急,慢慢来分析。
sub_88AC这个方法,多次调用,应该是个解密方法,那么有理由对他进行一波分析。
在这里插入图片描述
流程比较大,那么我们尝试对他进行还原。还原以后的c++代码如下:

在这里插入图片描述

这里,自己还原的代码,大量引用了变量r0,r1这种寄存器风格,其实不如ida的f5插件,当然我们也可以直接用ida的f5插件大概的看一下:
在这里插入图片描述
在这里插入图片描述

其实到这里,我们会发现,这是一个解码函数,用于解码字符串,当然为了快速得出结果,我们完全可以hook或者调试,最终得出的结果,是"HackMeShollApplication",“Ljava/lang/String”,等等的字符串,这里,对应原程序java层的HackMeShollApplication类的一些方法签名,后面会用到jni注册成对应的native函数.那么回到一开始的主函数,可以这样还原:

这个sub_28D0 改名为prepare_native_string;
在这里插入图片描述
好了。现在回过头来,init_array的第一个方法,就是准备字符串。给某个类注册native方法。用于Registernatives注册。

接下来看第二个方法。
sub_2A74
在这里插入图片描述
这个函数看起来没多大用,暂时不去分析他(可能后面会用到,但是这里,我们暂时跳过,如果分析不下来了,接着再分析他。)。

跳过以后,分析下一个
sub_2B60
先简单的f5看一下,这里会调用一些api了。
在这里插入图片描述
他这里,会调用字符串解密函数,加载某个so,调用某个so的方法。但是包括so的名字和方法名,都是隐藏的。我们暂时把他命名为 call_lib_functions
。结果如下:(init_array部分)
在这里插入图片描述
目前为止,并没有深入分析,仅仅从直观上,看到这个so,在init_array里面,做了两件事情:1、注册一些native的字符串对应jni层 2、加载另一个so,调用另一个so的指定方法。

静态分析的差不多了,那么下一步,就是动态分析,为此,我们需要,对这个程序,进行动态调试,以得出一些具体的结果用以分析。

未完待续

本文地址:https://blog.csdn.net/XIAONIAOCAICAI/article/details/108728125

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网