2023安卓逆向 -- JNI学习(从开发到反编译)

简介: 2023安卓逆向 -- JNI学习(从开发到反编译)

一、新建native C++项目,填写好项目信息,一路下一步即可

二、创建好项目,直接点击运行,出现下面界面,说明我们的环境都没有问题

三、Java层调用java层函数

1、新建一个Java Class,命名为JavaFun

2、编写java函数

package com.example.jnitest;
public class JavaFun {
    public static String strfun(){
        return "公众号:逆向有你";
    }
}

3、主函数调用

TextView tv = binding.sampleText;
        String str=JavaFun.strfun();
        tv.setText(str);

4、运行结果

四、Java层调用C层函数

1、新建一个C文件,命名为CFun

2、修改一下Cmake文件,具体内容下,就是告诉该项目,我要生成一个叫做CFun的so文件

add_library( # Sets the name of the library.
        CFun
        # Sets the library as a shared library.
        SHARED
        # Provides a relative path to your source file(s).
        CFun.c)
target_link_libraries( # Specifies the target library.
        jnitest CFun
        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

3、回到刚新建的C文件,电机一下Sync Now同步一下,就不会飘红报错了

4、回到Java层声明一个函数

public static native String Cstrfun(String v1, String v2);

5、把鼠标放到Cstrfun函数上面,按Alt+回车,去C文件里实现该函数

6、C文件里面会自动添加如下代码,我们只要填写要实现的内容即可

#include <jni.h>
JNIEXPORT jstring JNICALL
Java_com_example_jnitest_JavaFun_Cstrfun(JNIEnv *env, jclass clazz, jstring v1, jstring v2) {
    // TODO: implement Cstrfun()
}

7、具体实现函数内容,直接返回v1+v2

//将java字符串转换为C字符串
    char *c1 = (char *) (*env)->GetStringUTFChars(env,v1, JNI_FALSE);
    char *c2 = (char *) (*env)->GetStringUTFChars(env,v2, JNI_FALSE);
    //拼接两个字符串
    char *res = strcat(c1, c2);
    //将C字符串转换为java字符串返回
    return (*env)->NewStringUTF(env,res);

8、主函数调用

TextView tv = binding.sampleText;
        String str=JavaFun.Cstrfun("公众号:","逆向有你!!!");
        tv.setText(str);

9、加载SO文件

System.loadLibrary("CFun");

五、反编译

1、将生成的apk拖入jadx中,找到了关键函数Cstrfun

2、查看调用该函数是原生函数

3、解压该app,将CFun.so拖进ida中双击进入,我们要分析的函数

4、通过编程的时候我们知道,jni函数一般第一个参数都是JNIEnv类型,所以,我们按键盘y,快捷修改

5、这样看着就很好理解了

目录
相关文章
|
6月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1169 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
908 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1049 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
823 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
6月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
340 0
|
7月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
967 6
|
9月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
615 11
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
4023 77
|
9月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
400 0
|
10月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
460 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡

热门文章

最新文章