关于 小某盾 加固简单分析
一:静态分析静态分析发现,根据这些函数参数很多函数进行了加密,并且新加了几个节,接下来动态分析。
二:动态分析
由于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加固的说明,但是最后调试发现,主要还是做了加密,以加密为主,然后在内存中进行了还原。 楼主辛苦了。谢谢分享! 感谢分享
还有后续吗?刚看到关键处没有了:lol 你这篇是搬运的吧? 来学习学习 有水印啊,原贴https://blog.csdn.net/feibabeibei_beibei/article/details/80397912 分析了啥,没看明白 int3-cc 发表于 2022-6-2 17:31
分析了啥,没看明白
简单分析了加固原理
页:
[1]
2