0x00 背景
本文依然是团队大佬 非尘 学习逆向的学习笔记,这一系列都将以实验的方式进行知识点学习和总结,后续将持续更新,不喜勿喷~
本文及后续文章中使用到的靶场地址:
https://adworld.xctf.org.cn/task/task_list?type=mobile&number=6&grade=0
0x01 实验目的
在c层定义字段,java层调用该字段。
0x02 实验步骤
1)新建一个安卓工程(Android Application project),给该应用命名,然后一路next,直至finish
2)然后在src/com.example.feichen/MainActivity编写我们的java代码
3)定义调用native层的方法,然后弹窗显示在c层编写的字符串
4)在cmd中进入src路径下,生成jni.h的头文件
5)新建一个文件夹,将.h文件单独放过去,并重命名(太长),然后在该文件夹下新建一个.c文件,编写c层方法
6)将Android.mk和Application.mk放到JNI目录下
7)然后cmd到jni路径,编译生成so文件,再刷新一下项目,在libs下可找到生成的so文件
8)最后在主函数MainAcitvity函数中加载so库,然后启动程序生成apk
0x03 总结
jni静态注册相关知识点提炼如下:
定义字符或者是方法,被native修饰;
java -jni 命令,生成被native的方法的jni接口;
.h里面的东西赋值到.c,补充完整:添加参数、添加方法体;
拖入(配置)两个mk文件:
执行ndk命令生成so文件
回到java层,加载so;
加完完保存,然后运行;
本文作者:辞令_WhITECat
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/140077.html