小密盾简单逆向分析

前几天出了个小密盾,针对插件加固的,好奇的简单分析了一下,写了个样本简单的加固了一下,以下是分析过程。

小密盾简单逆向分析

一:静态分析

    小密盾简单逆向分析_第1张图片

静态分析发现,根据这些函数参数很多函数进行了加密,并且新加了几个节,接下来动态分析。

二:动态分析

由于JNI_Onload经过了加密,因此可以猜测在.init/.init_array处经过了加密处理,不需要仔细分析这些加密算法,在JNI_Onload处下断,果然在内存中解密,进行Dump分析,经过简单的修复以后在IDA可以看到如下:

小密盾简单逆向分析_第2张图片

接下来分析这个JNI_Onload函数,看到sub_76CC这个函数的主要作用是获取设备信息以及其他信息等,不重要,继续往下分析。

 

小密盾简单逆向分析_第3张图片

接着继续_Z11Qlo4ud9Qs5GPhi这个函数,到这个_Z6turninv函数里面。

小密盾简单逆向分析_第4张图片

会发现这块每次R3的地址为函数Qde2uk9QU5G的偏移地址不同,F7进去也没有发现什么信息。在这块浪费的好多时间,以为是做了什么虚拟处理,不同的偏移地址对应不同的Handler,在这块把R0的值改掉,继续往下分析。

小密盾简单逆向分析_第5张图片

会发现这里有JNI_Onload重要字符串,

接着继续分析Z11Qml5uk1kU9aP12MEMORYMODULEP7Cryptor函数,因为函数名感觉有点意思。到后面会发现,静态看加密的那些函数,解密以后大部分还是会走到_Z6turninv这个函数,总觉得turn节中的这个函数是重点。但是还没有发现作用在何处。

小密盾简单逆向分析_第6张图片

接着往下分析,走到这里,F7进去可以看到,会发现这不就是保护前函数的JNI_Onload嘛,

小密盾简单逆向分析_第7张图片

如果知道JNI动态注册应该都知道,R2寄存器地址很关键,可以看到0X75319D04是注册的本地层函数指针,因此跳过去可以看到,这是加固前的函数。因此这个加固在动态运行的时候还是会在内存中进行还原,分析到这里结束。

小密盾简单逆向分析_第8张图片

小密盾简单逆向分析_第9张图片三、总结:

起初以为在前面收集很多设备信息是做二进制虚拟加固的一些匹配,毕竟官网有VM加固的说明,但是最后调试发现,主要还是做了加密,以加密为主,然后在内存中进行了还原。

 

你可能感兴趣的:(android逆向安全,Android,代码保护与逆向)