欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android so分析之 os.trptbil

程序员文章站 2022-03-24 18:22:22
仅仅分析so层,鉴于防止被非法利用,这里将so的名字改名。关键信息隐去。首先观察init_array层,发现以下:一个一个分析。sub_28D0打开以后,是thumb指令集,不急,慢慢来分析。sub_88AC这个方法,多次调用,应该是个解密方法,那么有理由对他进行一波分析。流程比较大,那么我们尝试对他进行还原。还原以后的c++代码如下:未完待续......

仅仅分析so层,鉴于防止被非法利用,这里将so的名字改名。关键信息隐去。
首先观察init_array层,发现以下:
android so分析之 os.trptbil

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

android so分析之 os.trptbil

这里,自己还原的代码,大量引用了变量r0,r1这种寄存器风格,其实不如ida的f5插件,当然我们也可以直接用ida的f5插件大概的看一下:
android so分析之 os.trptbil
android so分析之 os.trptbil

其实到这里,我们会发现,这是一个解码函数,用于解码字符串,当然为了快速得出结果,我们完全可以hook或者调试,最终得出的结果,是"HackMeShollApplication",“Ljava/lang/String”,等等的字符串,这里,对应原程序java层的HackMeShollApplication类的一些方法签名,后面会用到jni注册成对应的native函数.那么回到一开始的主函数,可以这样还原:
android so分析之 os.trptbil
这个sub_28D0 改名为prepare_native_string;
android so分析之 os.trptbil
好了。现在回过头来,init_array的第一个方法,就是准备字符串。给某个类注册native方法。用于Registernatives注册。

接下来看第二个方法。
sub_2A74
android so分析之 os.trptbil
这个函数看起来没多大用,暂时不去分析他(可能后面会用到,但是这里,我们暂时跳过,如果分析不下来了,接着再分析他。)。

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

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

未完待续

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

相关标签: android so分析