RatCreak 发表于 2022-6-1 21:35

关于 小某盾 加固简单分析

一:静态分析

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

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

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



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

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

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

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

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

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

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

iawyxkdn8 发表于 2022-6-2 08:04

楼主辛苦了。谢谢分享!

iiii12 发表于 2022-6-2 08:05

感谢分享

yiwai2012 发表于 2022-6-2 08:21

还有后续吗?刚看到关键处没有了:lol

cmbslgn 发表于 2022-6-2 08:48

正己 发表于 2022-6-2 10:25

你这篇是搬运的吧?

qiongjiang 发表于 2022-6-2 10:35

来学习学习

怜渠客 发表于 2022-6-2 10:52

有水印啊,原贴https://blog.csdn.net/feibabeibei_beibei/article/details/80397912

int3-cc 发表于 2022-6-2 17:31

分析了啥,没看明白

RatCreak 发表于 2022-6-2 18:19

int3-cc 发表于 2022-6-2 17:31
分析了啥,没看明白

简单分析了加固原理
页: [1] 2
查看完整版本: 关于 小某盾 加固简单分析