zoukankan      html  css  js  c++  java
  • 修改SO

    1.如果在jni中定义的是int型的数据,比如:

    JNIEXPORT jint JNICALL Java_com_ggndktest1_JniGg_getCoin
      (JNIEnv * env, jobject this)
    {
    int c=100;
    return c;
    }

    这个int类型的c可以通过那么可以通过查看opcode来查看,如下图,64 20。这样从C04处找到64就可以修改int数值。

    2.如果在jni中定义的是char(C语言中 string 相当 char数组,而且,最后一位位"",即字符串结束标志),比如

    char* vip= "Gold Vip";  

    那就不能像上面那样改了,可以直接在so中搜索这个string然后修改,但是好像只能改短,剩下的用空格代替。

    3.BEQ/BNE之类的指令,可以在IDA中找到然后修改。步骤是先选中BEQ,然后打开HEX-VIEW,修改成BNE所代表的两个16进制数。

    另外,如果想要旁路掉这个句子(专业名词好像叫nop),那么把两个16进制数改成00 00,再返回,发现指令变成了MOVS R0,R0;这个句子似乎就不起作用了。

    hey,想了解关于opcode,看这里:http://www.cnblogs.com/wanyuanchun/p/3707907.html#3111053

  • 相关阅读:
    Django REST framework
    容器平台自动化CI/CD流水线实操
    VUE--webpack
    vue动态路由匹配
    VUE学习---vue基础与vue-router
    MYSQL-创建测试数据
    MYSQL-主键、外键
    MYSQL-数据库、表、数据操作
    MySQL-添加环境变量 及MySQL服务启停
    MYSQL-命令行
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/4256046.html
Copyright © 2011-2022 走看看