Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <stdlib.h>
- #include "jni.h"
- #include "jvmti.h"
- void check_jvmti_error(jvmtiEnv *jvmti, jvmtiError errnum, const char *str) {
- if (errnum != JVMTI_ERROR_NONE) {
- char *errnum_str;
- errnum_str = NULL;
- (void)(*jvmti)->GetErrorName(jvmti, errnum, &errnum_str);
- printf("ERROR: JVMTI: %d(%s): %s\n", errnum,
- (errnum_str == NULL ? "Unknown" : errnum_str),
- (str == NULL ? "" : str));
- }
- }
- void printProperty(jvmtiEnv *jvmti, const char *prop) {
- char *value;
- jvmtiError err = (*jvmti)->GetSystemProperty(jvmti, prop, &value);
- check_jvmti_error(jvmti, err, prop);
- printf("%s = %s\n", prop, value);
- (*jvmti)->Deallocate(jvmti, (unsigned char*)value);
- }
- JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {
- jvmtiError err;
- jvmtiEnv *jvmti;
- size_t len;
- char *bcp;
- char *temp;
- (*vm)->GetEnv(vm, (void **)&jvmti, JVMTI_VERSION_1_1);
- err = (*jvmti)->GetSystemProperty(jvmti, "sun.boot.class.path", &bcp);
- check_jvmti_error(jvmti, err, "GetSystemProperty");
- len = strlen(bcp) + 20;
- temp = (char*)malloc(len);
- sprintf_s(temp, len, "C:\\patch\\java.base;%s", bcp);
- (*jvmti)->Deallocate(jvmti, (unsigned char*)bcp);
- err = (*jvmti)->SetSystemProperty(jvmti, "sun.boot.class.path", temp);
- check_jvmti_error(jvmti, err, "SetSystemProperty");
- free(temp);
- printProperty(jvmti, "sun.boot.class.path");
- printProperty(jvmti, "jdk.boot.class.path.append");
- printf("Calling AddToBootstrapClassLoaderSearch\n");
- err = (*jvmti)->AddToBootstrapClassLoaderSearch(jvmti, "C:\\XWork\\MinAgent\\target\\MinAgent.jar");
- check_jvmti_error(jvmti, err, "AddToBootstrapClassLoaderSearch");
- printProperty(jvmti, "sun.boot.class.path");
- printProperty(jvmti, "jdk.boot.class.path.append");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement