小密盾简单逆向分析

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

小密盾简单逆向分析

一:静态分析

   

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

二:动态分析

由于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加固的说明,但是最后调试发现,主要还是做了加密,以加密为主,然后在内存中进行了还原。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值