360加固保Java2c加固分析

加固前:

360加固保Java2c加固分析_第1张图片

加固后:

生成两个so文件:

360加固保Java2c加固分析_第2张图片

libjgdtc.so文件为官方dex2c以后的结果;

libjiagu.so为dexVMP以后的so文件;

运行结果:在android 4.4 5.0等会崩溃闪退;

360加固保Java2c加固分析_第3张图片

libjiagu.so为早先的dex Vmp 加固,之前分析过,忽略。

接下来分析libjgdtc.so:

静态分析看到:

360加固保Java2c加固分析_第4张图片

这里面的重点函数是sub_4DA0函数:

360加固保Java2c加固分析_第5张图片

 

360加固保Java2c加固分析_第6张图片

 

360加固保Java2c加固分析_第7张图片

 

360加固保Java2c加固分析_第8张图片

这种API的调用的,没有看到。

但是通过第三方的调用,然后进行HOOK可以看到:

360加固保Java2c加固分析_第9张图片

 

360加固保Java2c加固分析_第10张图片

可以HOOK到对应的字符串只是返回的每次结果不对!!

可能跟内存的初始化有关,so中的初始化函数没有调用。

 

360在里面运用了大量的混淆处理!

 

360加固保Java2c加固分析_第11张图片

通过简单的阅读F5以后的代码:

发现是360把java2c以后的解释反射调用的操作放在了一个函数中。相当于之前VMP的解释器的入口操作一样,然后进行混淆处理,同时对里面的字符串进行加密操作,用的时候进行解密。

动态分析:

总结:

360是把VMP加固与java2c结合加固:

这里为了简单起见第三方调用这个libjgdtc.so这个文件;

eg01:算术

360加固保Java2c加固分析_第12张图片

 

360加固保Java2c加固分析_第13张图片

 

360加固保Java2c加固分析_第14张图片

前后函数猜测为引用管理;算术运算的还比较正常逻辑。

 

 

总结:

1.360会把dexVMP和java2c进行结合。它的java2c依然也是以反射为主的解释,但是它把最后反射的解释函数同类型的定位到一个入口,这样的大的函数的逻辑会比较复杂,这时候采用OLLVM的混淆的优势就会比较大。

2.字符串上加密,用到的时候进行解密;

3.兼容性上很不好,崩溃率比较高!!

 

你可能感兴趣的:(360加固保Java2c加固分析)