JW加固简单分析

 

一、  猜想

加固的几维Demo,这里简单的分析一下它的强度,Java2c主要是借助于JNI反射技术对java层的方法全部的反射为本地层,增大分析难度。Java2cpp以后再借助于编译混淆或者编译虚拟的技术来增大分析难度。接着对编译以后的So文件进行加壳保护。

这里主要是对demo中的onCreate方法进行了java2c,并且对于保护以后的so没有做任何的破坏、加壳保护,因此直接在IDA中打开:也是做了静态注册,因此直接在导出函数中进行分析:可以看到控制流异常的复杂,说明肯定是做了编译混淆,因为几维有一个安全编译器。


可以看一下几维安全编译器的说明:


看了看感觉就是OLLVM的变形混淆。

二、  静态分析

1.     通过查看字符串可以发现确实对java2c应该出现的字符串进行了处理,没办法进行免费版那种快速有效的定位。但是在java2c执行前有个函数sub_B6B8()猜测这块应该是字符串解密函数。下面动态调试的时候进行验证。


2.     通过F5去观察这些代码,一些关键JNI API还是很明显的暴露,所以这个离DX的技术还是差很多,大量的混淆其实在JNI反射中体现的不是很好,特别都会对于数组那块的混淆处理,接着去动态的分析一下仔细的体会一下细节部分的处理。

三、  动态分析

1.     首先等执行完sub_B6B8()这个函数以后进行内存Dump下来so,并进行修复,可以看到所有字符串都出来了。说明以上的猜测是正确的,接下来进行逻辑分析。


2.     接下来静态分析查看经过修复的So的逻辑,因为有了字符串和JNI API函数的时候,这个时候静态分析去看的效果就会比较明显。

3.     其实几维这块的安全编译器在JNI函数上所发挥的效果是不大的,因为字符串和一些JNI API把逻辑暴露的差不多了,并且JNI反射后的结构大体相同。如果是用于java层的纯逻辑函数,应该还是有一点效果的。


 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值