Android逆向之路---脱壳360加固原理解析,2021Android面经

本文探讨了Android逆向工程中针对360加固保护的应用进行脱壳的原理,主要聚焦在如何利用OreoDump类和dumpdex函数来解除保护。适合对Android安全和逆向工程感兴趣的开发者阅读。
摘要由CSDN通过智能技术生成
             //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, jclass obj, jstring packageName) {

//在这里作者考虑到了防止每次app启动的时候都会dump,因此保存了一个变量is_hook来记录,如果hook过了的话就会退出程序
static bool is_hook = false;
char *p = (char *) env->GetStringUTFChars(packageName, 0);
if (is_hook) {
    __android_log_print(ANDROID_LOG_INFO, TAG, "hooked ignore");
    return;
}
init_package_name(p);
env->ReleaseStringChars(packageName, (const jchar *) p);


//这里由于使用了第三方库,所以先执行第三方库的初始化操作,具体第三方库ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值