吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2130|回复: 8
收起左侧

[Android 原创] Android逆向学习(番外四)native code类的操作调用

  [复制链接]
Rytter 发表于 2023-10-5 11:23

Android Native Code开发学习(三)对类进行操作

本教程为native code学习笔记,希望能够帮到有需要的人

我的电脑系统为ubuntu 22.04,当然windows也是可以的,区别不大

这个操作其实并不是很难,所以写的有点短了

对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,并且调用这个类,就可以看到我们的输出

//查询类名
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. 更改变量的值

通过这样我们就可以运行了,这样就可以得到最终的结果了

20230830143015.png

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
tomhex + 1 + 1 我很赞同!
Chenda1 + 1 + 1 我很赞同!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

正己 发表于 2023-10-5 13:45
到frida篇章可以看一下hooker
Cribug666 发表于 2023-10-5 19:31
Slimu 发表于 2023-10-5 22:51
 楼主| Rytter 发表于 2023-10-6 00:00
Slimu 发表于 2023-10-5 22:51
最近Android逆向多了起来

因为正己大大在更新Android逆向教程,所以相应的学习贴和讨论贴也多了起来
zjh889 发表于 2023-10-8 00:21
不错的东西,谢谢大师!
WJH0628 发表于 2023-10-8 19:31
谢谢分享
jsncy 发表于 2023-10-13 13:50
还不错,谢谢。
zhangsf123 发表于 2023-10-21 21:18
还可以,多谢了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 09:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表