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

  • 相关阅读:
    java三种实现线程的方法比较
    java基础
    java闭包
    android 设置textview跑马灯效果
    android控制系统音量
    android 查找某个特定文件后缀名
    android 歌词解析
    textview滑动效果
    puporwindow
    android 网络通讯
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/4256046.html
Copyright © 2011-2022 走看看