首页
社区
课程
招聘
[求助]IOS下如何用frida修改返回值?
发表于: 2019-4-16 04:35 16711

[求助]IOS下如何用frida修改返回值?

2019-4-16 04:35
16711
IDA里面的代码是这样的

NSString *__cdecl -[XXXXXX deviceId](UserExtraInfo *self, SEL a2)
{
  return self->_deviceId;
}

我的理解是:
-[UserExtraInfo deviceId] 的返回值是一个NSString

但是用如下代码打印出来的返回值类型是__NSCFString
var device_id = ObjC.classes.XXXXXX["- deviceId"];
   Interceptor.attach(device_id.implementation, {
         onEnter: function(args) {
             console.log("---------- deviceId enter ---------------");
                  },
         onLeave: function(retval) {
            var ret = new ObjC.Object(retval);
	    console.log("type : " + ret.$name);
            console.log("---------- deviceId levea ---------------");
   }                  
});


我用如下代码hook返回值的时候,app直接闪退了

var device_id = ObjC.classes.XXXXXX["- deviceId"];
   Interceptor.attach(device_id.implementation, {
         onEnter: function(args) {
             console.log("---------- deviceId enter ---------------");
                  },
         onLeave: function(retval) {
            newret = ptr('20636CCB-7EB9-4510-B24B-ESW23E34945');
            retval.replace(newret);
            console.log("---------- deviceId levea ---------------");
   }                  
});

萌新求教该怎么写来修改这个返回值才对???

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-4-16 04:41 被酷伯编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2443
活跃值: (464)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
newretval = ObjC.classes.NSString.stringWithString_("piaoyun")
retval.replace(newretval)
2019-4-16 10:33
1
雪    币: 187
活跃值: (182)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
飘云 newretval = ObjC.classes.NSString.stringWithString_("piaoyun") retval.replace(newretval)
多谢大佬指教!
2019-4-16 16:28
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5

遇到的问题:
函数的返回值应该为字符串。
retval 打印值为:0x60c000038f40  是个地址,

请问怎么样 返回原始字符串呢? 谢谢
2020-5-13 17:53
0
游客
登录 | 注册 方可回帖
返回
//