首页 > 其他分享 >2023安卓逆向 -- JNI学习(从开发到反编译)

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

时间:2023-06-02 17:01:56浏览次数:40  
标签:反编译 CFun Java 函数 -- 安卓 library env String

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

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

2023安卓逆向 -- JNI学习(从开发到反编译)_java字符串_02

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

2023安卓逆向 -- JNI学习(从开发到反编译)_java字符串_03

三、Java层调用java层函数

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

2023安卓逆向 -- JNI学习(从开发到反编译)_字符串_04

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、运行结果

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

四、Java层调用C层函数

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

2023安卓逆向 -- JNI学习(从开发到反编译)_字符串_06

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

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同步一下,就不会飘红报错了

2023安卓逆向 -- JNI学习(从开发到反编译)_java字符串_08

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

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

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

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

2023安卓逆向 -- JNI学习(从开发到反编译)_字符串_10

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

2023安卓逆向 -- JNI学习(从开发到反编译)_java字符串_11

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

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

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

2023安卓逆向 -- JNI学习(从开发到反编译)_字符串_13

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

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

2023安卓逆向 -- JNI学习(从开发到反编译)_字符串_15

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

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


标签:反编译,CFun,Java,函数,--,安卓,library,env,String
From: https://blog.51cto.com/u_15288375/6404161

相关文章

  • AI安防视频汇聚融合平台EasyCVR v3.2版本托盘显示优化
    EasyCVR基于云边端协同,可支持海量视频的轻量化接入与汇聚管理。平台兼容性强、拓展度高,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能。为了便于用户二次开发、调用与集成,我们也提供了丰富的A......
  • EasyCVR使用SDK接入,设备全部离线,但是SDK DEMO接入正常是什么原因?
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持多协议、多类型的设备接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,EasyCVR平台中,使用SDK接入的设备显示全......
  • 微信小程序视频来一波~~~
    Spring常用注解redis视频集合,看完这些别说不会redis微信二次开发基础部分.avi基于CNODE社区的API创建一个小程序.mp42.4综合案例-快递查询.mp42.3.2微信小程序事件.mp42.3.1视图与渲染.mp42.2.3目录结构详解.mp42.2.2微信小程序开发工具的使用.mp42.2.1微信小程序开发准备.mp42.1......
  • Photoshop 2023 Beta(PS2023Beta) v24.6 AI测试版 win/ mac版
    Photoshop2023Beta内置Ai绘图功能版,这是世界上第一个创意和设计工作流程的副驾驶,为用户提供了一种神奇的新工作方式。这将两个强大的成像引擎结合在一起——Photoshop和生成式AI,使您能够通过文本提示从Photoshop内部生成内容,并使用Photoshop的全面工具对其进行编辑以创建非凡的结......
  • 方芳:坡面尺度上混合植被恢复模式对土壤修复的影响
    武汉市江夏区交通局武汉市江夏区公路局  武汉市江夏区公路建筑工程公司武汉市江夏城投集团有限公司武汉江夏路桥工程总公司 武汉工程大学 土木工程与建筑学院    方芳    15927602711坡面尺度上混合植被恢复模式对土壤修复的影响摘要:随着人类活动......
  • Web安全测试—Web应用基础
    基本构件Web应用有各种各样的形式和规模。可能是一台服务器,使用相当轻量级的脚本语言,向用户发送各种类型的报告;也可能是庞大的B2B工作流系统,每小时处理上百万条订单和发票;也可能是介于两者之间的任何形式。什么是技术栈任何Web应用中,我们都必须考虑一套技术,这......
  • 5月《中国数据库行业分析报告》正式发布,首发时序、实时数据库两大【全球产业图谱】
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生态发展,目前已更至第十三期,并发布了共计1......
  • Kubernetes(k8s)定时任务:CronJob
    目录一.系统环境二.前言三.KubernetesCronJob简介四.kubernetesCronJob和Linuxcrontab对比五.CronJob表达式语法六.创建CronJob定时任务七.创建具有超时时间的CronJob定时任务八.总结一.系统环境本文主要基于Kubernetes1.21.9和Linux操作系统CentOS7.4。服务器版本docke......
  • 方芳:生态文明下林业旅游循环经济发展
     武汉市江夏区交通局武汉市江夏区公路局  武汉市江夏区公路建筑工程公司武汉市江夏城投集团有限公司武汉江夏路桥工程总公司 武汉工程大学 土木工程与建筑学院    方芳    15927602711生态文明下林业旅游循环经济发展摘要:随着生态文明建设的不断......
  • 线上环境水印提示
    EnvironmentIndicator环境指示器-Chrome应用商店(google.com)  notice-MicrosoftEdgeAddons......