Android逆向学习(番外四)native code类的操作调用
# Android Native Code开发学习(三)对类进行操作本教程为native code学习笔记,希望能够帮到有需要的人
我的电脑系统为ubuntu 22.04,当然windows也是可以的,区别不大
这个操作其实并不是很难,所以写的有点短了
## 对java中的对象变量进行操作
首先我们新建一个java的类
```java
public class ClassForJNI {
public int a;
public int b;
public void add(){
System.out.println("a+b is :"+(a+b));
return;
}
}
```
我们的目标就是更改里面的a和b,并且调用这个类,就可以看到我们的输出
```cpp
//查询类名
jclass clz_2 = env->FindClass("com/example/nativecodelearn/ClassForJNI");
//查询构造函数的id
jmethodID jcmid_2 = env->GetMethodID(clz_2, "<init>", "()V");
//创建对象
jobject = env->NewObject(clz_2, jcmid_2);
jfieldID fid_a =env->GetFieldID(clz_2,"a","I");
jint num_a =env->GetIntField(jobject,fid_a);
env->SetIntField(jobject,fid_a,9);
jfieldID fid_b =env->GetFieldID(clz_2,"b","I");
jint num_b =env->GetIntField(jobject,fid_b);
env->SetIntField(jobject,fid_b,10);
//获取方法id
jmethodID jmeid_2 = env->GetMethodID(clz_2,"add","()V");
env->CallVoidMethod(jobject,jmeid_2);
```
其实这个步骤一共就这几步
1. 找到类名
2. 准备构造函数
3. 创建对象
4. 获得fieldID
5. 得到对应的变量
6. 更改变量的值
通过这样我们就可以运行了,这样就可以得到最终的结果了
到frida篇章可以看一下hooker hooker有些问题,在哪里反馈 最近Android逆向多了起来
Slimu 发表于 2023-10-5 22:51
最近Android逆向多了起来
因为正己大大在更新Android逆向教程,所以相应的学习贴和讨论贴也多了起来 不错的东西,谢谢大师! 谢谢分享{:1_927:} 还不错,谢谢。 还可以,多谢了。
页:
[1]