购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 第一个NDK项目

接下来我们创建第一个NDK项目来完成案例的演示。

2.1.1 使用Android Studio创建NDK项目

首先打开Android Studio,在菜单栏中依次选择File→New→New Project...来打开新建项目向导,选择相应的项目模板创建NDK项目,如图2—1所示。

之后配置项目属性,如图2—2所示,单击Next按钮进入下一步。

在Activity界面选择默认配置即可,直接单击Finish按钮,如图2—3所示。

接下来耐心等待Gradle配置完成,界面如图2—4所示。

图2—1 Android Studio新建项目选择模板

图2—2 Android Studio配置项目属性

图2—3 Android Studio配置Activity界面

图2—4 Android Studio NDK项目界面

2.1.2 编写自己的so业务代码

首先打开activity_main.xml,添加一个Button控件,如图2—5所示。

编写MainActivity.java代码,添加md5()方法并编写Button按钮的单击事件来调用该方法,如图2—6所示。

图2—5 打开activity_main.xml,添加Button控件

图2—6 MainActivity.java代码

可以发现md5()方法名报红,这是因为编译器没有找到方法相应的实现。单击报红的函数名,然后使用组合键<Alt+Enter>选择Create JNI function for md5,如图2—7所示。

Android Studio会自动在native-lib.cpp中生成一个md5()方法的空实现,如图2—8所示。

图2—7 自动创建JNI函数

图2—8 自动生成的md5()方法空实现

在GitHub上找一份md5()方法的相应实现,代码链接为https://github.com/pod32g/MD5,将代码粘贴到上述的空实现处,如图2—9所示。

连接模拟器或者真机并运行,APK会自动编译并安装到目标计算机上。单击MD5按钮,TextView的内容会改变,如图2—10所示。

经过CyberChef的验证,程序的计算结果是正确的。

接下来我们开始通过unidbg来模拟执行自己编写的so文件中的md5()方法。

图2—9 native-lib.cpp代码

图2—10 自编写App运行界面 iTFiZxaXxtNuvOVvHIeCGB5K7g0EQ2gAxJNMt0F979zzqI61obEFCt40L4o8bByr

点击中间区域
呼出菜单
上一章
目录
下一章
×