修改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数组,而且,最后一位位"\0",即字符串结束标志),比如

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

 

转载于:https://www.cnblogs.com/larrylawrence/p/4256046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值