# Android逆向技术49——Android JNI从入门到实践01 站点:答源(https://www.dandroid.cn/) 原文:https://www.dandroid.cn/archives/15267 Canonical:https://www.dandroid.cn/archives/15267 作者:dandroid005 发布日期:2023-07-30 最后更新:2023-07-30 02:36 分类:技术方案 内容类型:post 说明:本页是原文的纯文本镜像,供大模型与检索器完整读取;不含导航、广告、付费框。引用请以上方「原文」链接为准。 ## 正文 背景 网上可能有各种Android jni从xx到xx,几乎是创建项目,跑起来就完事了。最近也在学习读取系统的一些信息,发现Java层无法做到,部分的实现需要在c层完成,接下里我们使用c/c++去读取系统的信息。 创建项目新增方法 此处略过简单的demo创建。创建过程在as中已经很人性化了。 模仿上面的最简单方法,新建一个。这个时候ide提示红色。 把光标放在方法中,alt+回车,就可以快速解决错误。 选择第一个提示,创建一个jni方法。回车。这样ide直接帮你创建好了方法了。 接下里就是写代码,读取内核数据了。 读取内核版本 在Java层是没有api可以读取Linux内核的版本信息的。 或者平时我们会在命令行中执行cat /proc/version或者uname -a。 jni如何实现呢? app中点击按钮调用这个方法。 从logcat中看到打印的信息,页面上面也有数据了。 拿到了内核的版本信息后可以检查里面有没有可疑的东西,比如,之前内核加入了KernelSU会在内核commitID后面拼接了KernelSU字符,这样就暴露了信息了。通过在系统popen中增加log打印,可以发现谁在使用它: 直接把包名和命令输出了。 读取手机的属性信息 有时候app会收集收集的属性信息,在命令执行getprop能拿到系统的属性。 可以检查部分属性来判断手机是否存在风险。如:ro.debuggable等等。 全部拿了,想取什么都行了。 这个时候如果使用Java层的 Runtime.getRuntime().exec("getprop"); 也能拿到信息,但是可能会被扫描出来,而这个时候就转到jni实现了。 extern "C" JNIEXPORT jstring JNICALL Java_com_cat_info_MainActivity_propInfoFromJNI(JNIEnv *env, jobject thiz) {     string prop_content;     char buf[100];     FILE *prop_file = popen("getprop", "r");     while (fgets(buf, sizeof(buf), prop_file)) {         prop_content += buf;         prop_content += "n";     }     return env->NewStringUTF(prop_content.c_str()); } 读取单个系统属性 比如ro.debuggable,有部分银行app读取到如果是1(root的手机基本上是1),0是正常。 如果发现是1直接崩溃。方法的新增和上面一样。 extern "C" JNIEXPORT jstring JNICALL Java_com_cat_info_MainActivity_propertyGetFromJNI(JNIEnv *env, jobject thiz, jstring prop_name) {     char info[PROPERTY_VALUE_MAX];     string system_prop;     auto name = jstring2string(env, prop_name).c_str();     __system_property_get(name, info);     std::string systemProp;     system_prop += name;     system_prop += " = ";     system_prop += info;     system_prop += "n";     LOGD("%s", system_prop.c_str());     return env->NewStringUTF(system_prop.c_str()); } 有部分app规避Java层静态扫描也会使用jni读取属性。 这个时候在系统的__system_property_get中增加log也能发现行为。 到此jni的实践完了,后面再分享其他吧。 demo在安全后厨知识星球获取。 --- 由 答源 DAN 底座 1.2.0 生成 · 2026-11-07T01:57:53+00:00