移动安全(四)|NDK开发教程_JavaToC
2020-09-01 15:22:15 Author: www.secpulse.com(查看原文) 阅读量:425 收藏

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


文章来源: https://www.secpulse.com/archives/140077.html
如有侵权请联系:admin#unsafe.sh