openrasp-v8 Java macOS环境编译

本文档详细介绍了如何在Mac系统中编译OpenRASP-V8的Java版本,包括所需的cmake、mvn和git指令。在编译过程中遇到jni.h缺失的问题,通过从JVM安装目录复制头文件到相应目录解决了这一问题。最终成功编译并打包成jar,可用于Java业务中的主动防御插件注入。
摘要由CSDN通过智能技术生成

前言

openrasp是百度开源的主动式防御插件,与业务松耦合,在Java语言是使用javaagent的方式注入的,笔者前几章讲过javaagent的实现原理,笔者在使用openrasp的时候,发现openrasp-v8是快照版,并且依赖JNI实现,需要对不同的硬件与操作系统编译特定的函数库。

1. 准备

cmake指令

macOS推荐brew安装,非常方便:brew install cmake

mvn指令

maven管理,配置maven的path即可,开发人员常识。

git指令

GitHub源码下载必须

2. 编译

查阅百度openrasp资料,源码编译:rasp-Java

示例是Linux的,各个平台略有区别。以macOS为例

1 、git代码

git clone https://github.com/baidu-security/openrasp-v8.git 

2、编译

# 编译 openrasp-v8
mkdir -p openrasp-v8/build64 && cd openrasp-v8/build64
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_LANGUAGES=java ..
make

编译过程会出现找不到jni.h的现象

jni.h这个在jvm安装目录,拷贝出来

jni.h和jni_md.h

拷贝到build64目录,再执行make

 3、复制编译函数库

mkdir -p ../java/src/main/resources/natives/osx_64 && cp java/libopenrasp_v8_java.dylib $_

因为是macOS环境,跟Linux有所区别

4、推送本地maven仓库

cd ../java

mvn install 

 至此jar就编译好了,可以编译agent的fatjar了,注入agent

<dependency>
    <groupId>com.baidu.openrasp</groupId>
    <artifactId>v8</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

总结

笔者只编译了openrasp-v8的Java版本,实际上还有PHP版本,不过使用PHP的业务几乎没有,笔者也写过小段时间的PHP,调试真方便😋。编译v8的jar关键是有C代码,使用了JNI技术,需要jni.h文件支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值