c++ - 关于 DefineClass 和我尝试使用它的问题
问题描述
我正在尝试通过将 DLL 注入进程并使用 JNI 与 java 交互来在 java 进程中创建类/注入类。
我遇到了一个名为 DefineClass 的函数,但我无法让它按照我的预期工作,所以我对函数采用的参数有一些疑问:
就我而言,我将什么作为类加载器传递?
它接受一个字节数组及其长度作为类的“内容”,获取这些字节的正确方法是什么?
类的哪些部分将包含在字节数组中?我是包括所有东西还是去掉部分?
到目前为止,我所做的一切都导致函数返回 null,所以我不确定从哪里开始寻找。如果有人会包含一些示例用法或有关用法的重要说明,那将是惊人的!
jobject defined = jni->DefineClass("ChatFormatting", NULL, reach_buf, 4132);
if (defined == nullptr) {
std::cout << "Defined is NULL." << std::endl;
} else {
std::cout << "Success!" << std::endl;
}
解决方案
您只能获取类名,并且其成员条目地址不正确。在注入之前,您必须通过注入模块地址更改条目地址。
推荐阅读
- c# - 将空值设置为列表中最接近的最后一个非空值 - LINQ
- javascript - Vuetify,动画 v-data-table tr
- python - Selenium Webdriver Python 不会通过 xpath 找到要单击的元素,尽管它存在于页面上
- javascript - JavaScript中字符串和数字的比较
- c# - iText 7 PDF 解析器在 C# 中返回不可读的字符
- excel - Excel Mac VBA 编辑器 - 无法添加引用
- php - 加载 PHP7.2 时,Apachectl 打印出奇怪的错误并死掉。为什么?
- python - pandas.DataFrame.join() 在加入时改变了我的值的顺序
- java - 使用蛮力将所有可能的二进制数组合生成为数组?
- mysql - 将具有两个由空格分隔的字符串的变量传递给另一个 shell 脚本