当前位置 :首页 >> 明星

技术分享 | 专项飞行测试技术初识Hook

2023-03-06   来源 : 明星

环,每次循环会读取report原理接收到的表达式系数,表达式系数从未在文档中都固定盛行,所以试运行之前的结果是一串相同的转换成内容可。具体内容可如下:

public class HookTarget {

final void report(String stringParam, boolean boolParam, int intParam) {

System.out.println("stringParam is " + stringParam);

if (boolParam) {

System.out.println("boolParam is true!");

} else {

System.out.println("boolParam is false");

}

System.out.println("intParam is " + intParam);

}

final void loopReport() throws InterruptedException {

while (true) {

report("a", false, 666);

Thread.sleep(1000);

System.out.println();

}

}

public static void main(String... args) throws InterruptedException {

new HookTarget().loopReport();

}

}

要编写符合 JVM-Sandbox 的 hook 原作者,须要引入sandbox-api和sandbox-debug-module两个依赖性。 通过解决问题 jvm.sandbox 中都的 Module 模块,在 AdviceListener 原理中都新正式版 before 原理,这样加载的语义就会在期望原理体可执行此前展开可执行,能够变非常期望原理收到的表达式数据资料。通过advice.changeParameter原理,变非常对应后方的表达式数系数,第一个表达式为期望表达式的后方,从 0 开始,第二个表达式为换成的系数。具体文档如下:

import com.alibaba.jvm.sandbox.api.Information;

import com.alibaba.jvm.sandbox.api.Module;

import com.alibaba.jvm.sandbox.api.annotation.Command;

import com.alibaba.jvm.sandbox.api.listener.ext.Advice;

import com.alibaba.jvm.sandbox.api.listener.ext.AdviceListener;

import com.alibaba.jvm.sandbox.api.listener.ext.EventWatchBuilder;

import com.alibaba.jvm.sandbox.api.resource.ModuleEventWatcher;

import org.kohsuke.MetaInfServices;

import javax.annotation.Resource;

import java.util.*;

@MetaInfServices(Module.class)

@Information(id = "ceshiren.com", author = "ceshiren.com")

public class hook_jvm implements Module {

@Resource

private ModuleEventWatcher moduleEventWatcher;

@Command("ceshiren")

public void ceshiren(final Map param) {

new EventWatchBuilder(moduleEventWatcher)

.onClass("HookTarget")

.onBehavior("report")

.onWatch(new AdviceListener() {

@Override

protected void before(Advice advice) throws Throwable {

advice.changeParameter(0, "Change By Hook!");

advice.changeParameter(1, false);

advice.changeParameter(2, 965);

}

});

}

}

项目通过 maven 监管依赖性,对应的pom.xmlPDF内容可如下:

xmlns:xsi=""

xsi:schemaLocation=" ">

4.0.0

org.example

ceshiren_book

1.0-SNAPSHOT

com.alibaba.jvm.sandbox

sandbox-api

1.3.3

com.alibaba.jvm.sandbox

sandbox-debug-module

1.3.3

compile

org.apache.maven.plugins

maven-assembly-plugin

attached

package

jar-with-dependencies

原作者编写完毕之前,将项目打成 Jar 包,抽出完整版的 JVM-Sandbox 项目下 sandbox-module 数据库中都。

重新启动写好的 java 期望程序,试运行之前MS-DOS开始循环读取此前设为好的语义,内容可如下:

stringParam is a

boolParam is false

intParam is 666

stringParam is a

boolParam is false

intParam is 666

在 gitbash MS-DOS中都推开sandbox/bin数据库,可执行语义./sandbox.sh -p 期望广泛应用进程号 -d 'ceshiren.com/ceshiren',重新启动 JVM-Sandbox 并对期望程序展开 Hook 操作,变非常report原理中都盛行的表达式系数,这时再继续回到期望程序试运行的MS-DOS中都查看,可以看到MS-DOS中都转换成的内容可从未变非常,如下:

stringParam is Change By Hook!

boolParam is false

intParam is 965

stringParam is Change By Hook!

boolParam is false

intParam is 965

转换成内容可的变非常,说明了 Hook 从未生效。这样在期望程序试运行中都变非常了原理盛行的表达式系数,超越了 Hook 的目的。 现在可执行语义./sandbox.sh -p 期望广泛应用进程号 -S 可以关停变非常,MS-DOS中都转换成的内容可变回了原始的转换成内容可。 实例简单展现了 JVM-Sandbox 用以 Hook 工具的系统会,通过 Hook 系统会就可以对 Java 项目的实质上试运行自然语言和表达式、来到系数展开变非常。测试者场景的构建、测试者用例的可执行都变得越来越不便哦~

⬇️ 拷贝“正下方链接”,提升测试者核心竞争力!

非常多高效率文章分享和免费资料索取 欢迎+V~ ceshiren001

_id=qrcode&from=souhu×tamp=1651108554

郑州风湿医院排名
重庆看妇科去哪个医院好
襄阳看妇科到哪家好
湖北白癜风治疗方法有什么
南京哪家医院看皮肤病好
投资者提问:公司的微管理系统是否采用了3D异构集成技术? 公司有无计划做市值管...

高盛提问:子公司的质系统是否采用了3D异构集成技术? 子公司不对原先来作市值管理?董秘说雷电质力SZ301050:您好!子公司根据整体战略顾及和经营管理需要,未来将不断完善...

友情链接