请教几处IDA反编译代码的含义

需求: IDA反编译的代码中有4处不理解,大部分是NSRange的问题,来请教下大佬。

  1. 为什么会有0LL, 4LL, 0LL? NSRange不是应该就只是locationlength吗?
  2. v73应该是char *类型吧,怎么转成unsigned __int64和整数比较的?
  3. 还是range不理解,(char *)&v73->isa + 4 到底是什么鬼,怎么连isa指针都出现了
  4. &v16[1], v72 这又是怎么组成range的。。

代码: v12NSData的实例

操作步骤: IDA + F5

我调整了一下权限,你看看能不能上传截图了?

可以了,已上传

结合其他方式Hook推测了下,大差不差了
1应该就是NSMakeRange(0, 4),即取data的前4字节。至于为啥会显示0LL, 4LL, 0LL,不知道是不是IDA F5插件的bug
2和4属于我C语言彩笔了,取data的指定位置的4字节转无符号整型
3这个写法我还是无解

第三个是取紧接着的后面4个吧,你最好是把汇编一块放上来

1 个赞

建议你看一下汇编和CFG,伪代码看得够累的

如果没搞错的话对应的应该是这块

我主业开发iOS的,逆向新手,看汇编要了我的老命了 :joy:

看不了你的图,不知道什么情况,手机打不开本网站,电脑打开看不了图片而且奇慢,科学上网也不行

CDN出了点问题,正在排查修复呢;临时解决方案是在新窗口里打开图片,然后把图片URL里的cdn去掉,就可以看到图了

1 个赞

ok,感谢

2 个赞