Android逆向之路---脱壳360加固原理解析

本文介绍了Android逆向过程中针对360加固的脱壳技术,详细讲解了如何通过Native hook在NDK层进行操作,包括在Oreo版本和低版本API上的不同处理方式,以及在SDK层的hook策略。文章提到了关键函数如`OreoDump.init()`和`LowSdkDump.init()`,并展示了如何利用第三方库进行动态链接库的hook,以实现 Dex 文件的保存和脱壳。
摘要由CSDN通过智能技术生成

PackerInfo.Type type = PackerInfo.find(lpparam);
if (type == null) {
return;
}
final String packageName = lpparam.packageName;
//这里主要是各个app只管解析各个app自己的进程的程序
if (lpparam.packageName.equals(packageName)) {
//首先在当前app的指定目录,创建好目录,以便于一会儿脱壳存放dex文件
String path = “/data/data/” + packageName + “/dump”;
File parent = new File(path);
if (!parent.exists() || !parent.isDirectory()) {
parent.mkdirs();
}
log(“sdk version:” + Build.VERSION.SDK_INT);

if (DeviceUtils.isOreo()) {
//api为27或27版本的执行下面一行,进行脱壳
OreoDump.init(lpparam);
} else {
//低版本api执行下面一行进行脱壳
LowSdkDump.init(lpparam,type);
}

}
}
}

已经加好注释,值得注意的就是,此处程序有分叉了,分别是 OreoDump.init()和LowSdkDump.init() 我们先看OreoDump.init方法

public class OreoDump {

//--------略---------

public static void init(final XC_LoadPackage.LoadPackageParam lpparam) {
Native.dump(lpparam.packageName);
}
}

跟着进入Native.dump(),

  • 注:不会android ndk也没关系,可以继续往下看

Native hook

以下可以先粗略的说一下,主要就是进入了ndk层进行hook,然后进行dump 进入native.cpp文件里面找到JNICALL Java_com_wrbug_dumpdex_Native_dump方法。

由于切换到了c语言,所以我会帮大家删除一些代码的细枝末节,只看主干。

再次声明下,以下方法实在当android版本为26或27的时候,会默认进行Native层脱壳

JNIEXPORT void JNICALL Java_com_wrbug_dumpdex_Native_dump
(JNIEnv *env

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值