首页
社区
课程
招聘
未解决 [求助] frida hook精度丢失解决办法 50.00雪花
发表于: 2020-2-21 17:38 3197

未解决 [求助] frida hook精度丢失解决办法 50.00雪花

2020-2-21 17:38
3197
0x0问题系统
安卓9.0, magisk root环境
0x1问题描述
java层hook,目标函数入参是long类型,当输入大整数,比如6791443766394045000后调用目标函数,目标函数会出现精度丢失的现象,如前一个6791443766394045000的在被hook目标函数内会变为6791443766394034555。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 82
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
安卓部分代码
// 安卓部分代码。hook alterText方法修改num,frida输入参数为6791443766394045000,出现精度丢失现象
private void alterText(long num) 
{
    textView.setText(String.valueOf(num));
}
frida部分代码
my_class.alterText.overload('long').implementation = function () {
    //打印替换前的参数
    console.log("args:", arguments[0]);
    var ret_value = this.alterText(7791443766394045000);
    return ret_value;
}

最后于 2020-2-21 18:10 被mrmoney编辑 ,原因:
2020-2-21 18:10
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
this.alterText(7791443766394045000L);
这样呢?
2020-2-22 08:35
0
雪    币: 82
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
js 不支持 7791443766394045000L,安卓部分alterText(7791443766394045000L)在view内可以获取正确显示。
2020-2-22 09:50
0
雪    币: 2307
活跃值: (1013)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
console.log(Java.use('java.lang.String').valueOf.overload('long').call(Java.use('java.lang.String'), Java.use('java.lang.Long').parseLong.overload('java.lang.String').call(Java.use('java.lang.Long'), "6791443766394045000")))
2020-2-22 12:20
0
雪    币: 82
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
感谢飞虫兄弟,虽然回帖并不是我原本需求,不过思路已经解释清楚,后面这类情况知道解决办法了,附上我修改后的代码,问题已解决
alterText.call(this, Java.use('java.lang.Long').parseLong.overload('java.lang.String').call(Java.use('java.lang.Long'), "4891443766394045000"));

最后于 2020-2-22 15:48 被mrmoney编辑 ,原因:
2020-2-22 15:48
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
帮顶
2020-2-23 12:55
1
游客
登录 | 注册 方可回帖
返回
//