服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

【车联网安全系列】安卓漏挖之“AS编写cmake生成so库”

日期: 来源:华云安收集编辑:专攻ASM的


摘要

安卓漏挖第4步,学会编写so文件。


环境配置

确定安装了ndk, cmake.


下载NDK: 在 file->settings->System Settings->Android SDK->SDK Tools中检查NDK是否下载,如果没有就需要下载并配置一下,除了需要NDK之外,还需要下载CMake这个编译工具。


安装ndk的时候有个坑,我解压完有两层目录,所以报错找不到配置文件。所以需要注意解压完,进入目录里看一下。如果报错了,就根据报错信息检查代码,一般是代码有一些失误。


新建项目的时候, 记得选择 Native C++



等待新建项目完成,会报错找不到ndk,所以我们配置一下

在Android视图下, 打开local.properties,加上ndk的路径



 声明native方法

新建一个类, 声明native方法. 这个类是java与C/C++交互的中介, 方法由java声明, 由C/C++实现


这里为了方便接下来的操作, 切换成Project视图


myJNI.java



myJNI.java

package com.example.a04;

public class myJNI { static { System.loadLibrary("JniTest"); } public static native String sayHello();}



编译与头文件的生成

使用javac编译上述文件, 生成class文件

myJNI类所在的目录,右键在终端打开。



javac myJNI.java 


确认自己的包名和类名。然后在java目录使用 javah -jni 包名.类名 命令生成.h头文件。注意一定要在java层目录下输入命令,不然会报错:找不到xxx类

javah -jni com.example.a04.myJNI

我java版本是1.8,如果是java11,用法应该是

javac -h .\ myJNI.java


将生成的com_example_test_myJNI.h拖到cpp目录下



然后删掉原来cpp目录下的native-lib.cpp




实现头文件的函数

在cpp目录下新建main.c



main.c中的内容, 首先是将头文件包括进来, 然后实现头文件中的sayHello方法


#include "com_example_a04_myJNI.h"

JNIEXPORT jstring JNICALL Java_com_example_a04_myJNI_sayHello (JNIEnv *env, jclass jobj) { return (*env)->NewStringUTF(env, "hello zjj!");}


由于我们使用CMake来生成so的, 所以要修改CMakeLists.txt来指定so名称和so的源文件的相对路径




然后,sync一下




生成so库


Build->Rebuild Project来生成so库


生成的so在app\build\intermediates\cmake\debug\obj\




配置so库

在app/src/main下新建jniLIB目录,并将生成的SO文件拷贝到该文件夹下




调用

打开MainActivity插入一条log来调用so中的sayHello方法,并连接手机调试


package com.example.a04;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;import android.util.Log;import android.widget.TextView;
import com.example.a04.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("开始调用so中的方法",myJNI.sayHello()); }}




参考链接

https://blog.csdn.net/A807296772/article/details/102298970    





相关阅读

  • XRD、BET、Origin、SEM、TEM等相关知识汇总

  • 大家好,我是科研小哥!这里为大家汇总了实用的科研知识和技巧,包含软件使用、数据分析、SCI论文写作、论文配图配色、仪器操作等,相信会对大家有所帮助。英文摄氏度℃符号的正确
  • 赵鼎新主编新刊《历史与变革》(创刊号)上市

  • 刊物简介《历史与变革》的目标是尝试建立一个开放的学术平台,或更准确地说是一座临时的桥梁,来实验如何重新建立过去、当下和未来之间的联系。在这个意义上,历史是一种方法,亦是
  • 一次失败的SQL注入经历

  • 目录一次失败的SQL注入经历0x00 前言0x01 WAF识别0x02 篇章: Bypassed 0x2.1 漏洞证明 0x2.2 无限制注入0x03 后续:无疾而终0x04 总结某天,聚合扫描器推送了一份SQL注入的漏
  • 普及健康知识 传授急救技能

  •   2月28日,市红十字志愿服务队走进鲍沟镇闵楼小学开展了“急救相伴,安全‘童’行”活动,通过案例讲述、模拟操作等方式,生动形象地给学生们普及了健康知识,传授了急救技能。 

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • Xposed检测绕过

  • 本文为看雪论坛优秀文章看雪论坛作者ID:那年没下雪分享一些Xposed检测绕过的总结,很多加壳软件检测到xposed就会杀死当前软件进程。1、绕过jar Class检测// 过防止调用loadCla
  • 绒绒说安全:黑客的隐藏术之跳板攻击

  • 新一期的绒绒说安全又和大家见面了,今天我们为大家介绍下什么是跳板攻击。跳板攻击是黑客入侵目标网络的一种常用手段。黑客在实施攻击时,通常不会直接从自己的系统向目标发动