概述

本文没有什么实在的技术含量,主要是为了照顾不会使用IDEA&maven配置环境的小伙伴写的一篇文章。如果对本篇文章不感兴趣,可以直接查看下一篇文章《[浅谈RASP技术攻防之实战[代码实现篇]]()》,文章中有什么不懂得地方,大家可以来我博客[Sky's自留地]一起讨论。笔者sky(iiusky)目前就职于《安百科技》,欢迎大家一起来探讨RASP攻防技术。

浅谈RASP技术攻防之实战[环境配置篇] 和 浅谈RASP技术攻防之实战[代码实现篇]中的代码已经上传到github,地址为:java_rasp_example

IDEA开发环境配置

初始化项目

首先我们在IDEA中新建一个maven项目
-w992

取名为JavawebAgent
-w992
-w992
然后当前的目录结构如下:
-w354

删除src目录,然后右键新建Module
-w730

依然选择Maven项目
-w992

然后在ArtifactId处填入agent
-w992

然后确定即可
-w992

然后再次重复一遍上面的新建Module的操作,将第二小步中的ArtifactId改为test,第三小步中的Module Name 改为test-struts2,如下图所示

-w992

-w992
这时候的目录结构如下
-w328
其中agent目录为我们要实现agent的主要代码区域,test-struts2为测试web代码区域。(注:test-struts2不是必选的)

test-struts2模块基本配置

test-struts2部分的代码这边就不进行复述了,大家可以去本项目的地址中直接下载test-struts2内容。

agent模块基本配置

pom.xml包配置

agent这个pom包配置的话有坑,这个以后在说,先看pom.xml内容吧。

<dependencies>

        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-all</artifactId>
            <version>5.1</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>agent</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <archive>
                        <manifestFile>src/main/resources/MANIFEST.MF</manifestFile>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <includes>
                                    <include>commons-io:commons-io:jar:*</include>
                                    <include>org.ow2.asm:asm-all:jar:*</include>
                                </includes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.21.0</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

将上述内容复制到agent模块下的pom.xml中

-w874

创建MAINFEST.NF文件

在resources目录下创建MAINFEST.NF文件,文件内容如下

Manifest-Version: 1.0
Can-Retransform-Classes: true
Can-Redefine-Classes: true
Can-Set-Native-Method-Prefix: true

maven自动打包配置

在idea中右上部分找到Add Configurations,然后点击此按钮

-w902

在弹出的窗口中点左上角的+,选择maven
-w400

然后点下图①的位置选择工作目录,在②的位置选择agent,在③的位置填入clean install
-w1323
完成以后如下图所示,然后点击OK保存即可
-w1232
这时候右上角已经可以看到我们刚刚配置的maven自动打包功能了,agent每改一处都需要重新build,不然无法生效。
-w991

创建Agent主要实现代码包

在agent包下面的java文件夹下右键选择新建package,然后填入你的包名,我这边的包名为

cn.org.javaweb.agent

-w319

到目前为止,我们已经将基本环境以及目录结构配置完成了,下篇文章我们接着说代码实现部分的内容。

最后修改:2021 年 11 月 22 日
如果觉得我的文章对你有用,请随意赞赏