本篇是《Android逆向入门教程》的第七章第1.4节,具体课程详情可点击下方图片查看:
每一章节详细内容及实验材料可通过加入底部免费的【Android逆向成长计划】星球获得!
声明:所有实验含部分虚构,纯属技术练习,未对真实环境造成任何影响。也请勿将相关技术用于非法操作,否则责任自负。
0x01 实验目的
动态注册,实现一个计算器的编写,功能为加减乘除
0x02 实验步骤
1)新建一个项目为Calc,然后一路next,完成项目的创建
2)然后再在layout布局文件中定义我们的控件布局,详细布局代码见下图:
布局代码如下:
3)然后在MainActivity编写我们的程序代码,首先绑定控件,之后对控件初始化(由于控件较多,单独创建一个方法用于控件的初始化)
4)设置监听获取点击事件及编辑框输入的值(由于四个按钮监听方式相同,可采用switch-case方式来监听)
5)定义c层实现的native方法声明,到此java层代码已经完成
6)然后在项目下新建一个文件夹jni,然后新建一个calc.c的文件,编写我们的c层代码
7)首先在c文件中导入我们的头文件,然后实现我们在java层的方法
8)绑定java层方法和c层方法,在jni接口中查找JNINativeMethod结构体,完成结构体
9)然后在jni接口中查找RegisterNatives,注册相应的类以及方法
10)然后实现动态注册JNI_OnLoad,最后的c层代码如下
11)c层代码编写完成后,将两个mk文件拖到jni目录下,更改Android.mk文件的模块名称和源文件。然后来到项目jni的路径下执行ndk-build,之后在java层加载so库,附上java层的代码
12)最后运行项目,完成实验
实验项目:
0x03:写在最后
本篇实验涉及的相关代码材料文件等在公众号后台回复“7.1.4材料”或加入星球即可获取。
团队公开知识库链接:
https://www.yuque.com/whitecatanquantuandui/xkx7k2
知识星球:
往期经典
安
全
扫描二维码 |关注我们
本文始发于微信公众号(WhITECat安全团队):Android逆向(教程更新)|NDK开发教程_动态注册
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论