移动安全(四)|NDK开发教程_JavaToC

  • A+
所属分类:安全文章

0x00 背景

    本文依然是团队大佬 非尘 学习逆向的学习笔记,这一系列都将以实验的方式进行知识点学习和总结,后续将持续更新,不喜勿喷~

本文及后续文章中使用到的靶场地址:

https://adworld.xctf.org.cn/task/task_list?type=mobile&number=6&grade=0

移动安全(四)|NDK开发教程_JavaToC

0x01 实验目的

        在c层定义字段,java层调用该字段。

0x02 实验步骤

    1)新建一个安卓工程(Android Application project),给该应用命名,然后一路next,直至finish

移动安全(四)|NDK开发教程_JavaToC


移动安全(四)|NDK开发教程_JavaToC

2)然后在src/com.example.feichen/MainActivity编写我们的java代码

移动安全(四)|NDK开发教程_JavaToC


3)定义调用native层的方法,然后弹窗显示在c层编写的字符串

移动安全(四)|NDK开发教程_JavaToC


4)在cmd中进入src路径下,生成jni.h的头文件

移动安全(四)|NDK开发教程_JavaToC

移动安全(四)|NDK开发教程_JavaToC

移动安全(四)|NDK开发教程_JavaToC

移动安全(四)|NDK开发教程_JavaToC

  

移动安全(四)|NDK开发教程_JavaToC

    

5)新建一个文件夹,将.h文件单独放过去,并重命名(太长),然后在该文件夹下新建一个.c文件,编写c层方法

移动安全(四)|NDK开发教程_JavaToC


6)将Android.mk和Application.mk放到JNI目录下


移动安全(四)|NDK开发教程_JavaToC                移动安全(四)|NDK开发教程_JavaToC


移动安全(四)|NDK开发教程_JavaToC

移动安全(四)|NDK开发教程_JavaToC

7)然后cmd到jni路径,编译生成so文件,再刷新一下项目,在libs下可找到生成的so文件

移动安全(四)|NDK开发教程_JavaToC

移动安全(四)|NDK开发教程_JavaToC

8)最后在主函数MainAcitvity函数中加载so库,然后启动程序生成apk

移动安全(四)|NDK开发教程_JavaToC

移动安全(四)|NDK开发教程_JavaToC

移动安全(四)|NDK开发教程_JavaToC




0x03 总结

        jni静态注册相关知识点提炼如下:


  • 定义字符或者是方法,被native修饰;

  •  java -jni 命令,生成被native的方法的jni接口;

  • .h里面的东西赋值到.c,补充完整:添加参数、添加方法体;

  •  拖入(配置)两个mk文件:

  •  执行ndk命令生成so文件

  •  回到java层,加载so;

  • 加完完保存,然后运行;

         


本文始发于微信公众号(WhITECat安全团队):移动安全(四)|NDK开发教程_JavaToC

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: