调试的时候遇到一个奇怪的问题?

同一个APP的同一段代码

一台机器显示的汇编是这样的:
| .byte cf fa ed fe |
| .byte 0c 00 00 01 |
| udf #0x0 |
| udf #0x2 |
| udf #0x56 |
| udf #0x2290 |

一台机器显示的汇编是这样的:

| stp x20, x19, [sp, #-0x20]! |
| stp x29, x30, [sp, #0x10] |
| add x29, sp, #0x10 |
| mov x19, x0 |
| adrp x20, #0x5018c000 |
| ldr x0, [x20, #0x120] |

请问大神!这是啥原因?

(帖子已被作者删除)

基础太差, cf fa ed fe/0c 00 00 01 这俩行的macho头不够明显吗?而且显然不可能是同一个地址,第一段就是个macho头,第二段才是一个函数头的汇编啊,不够明显?

1 个赞

我知道啥是macho,啥是汇编!我是问为啥有的app能显示正常汇编,有的app不行?到底是啥原因导致的?

包不同吧,你用上1机器脱壳下来;然后再另1机器上安装; 要同1包;尤其是APPStore下载的包,不同机型因为解密映射可能有差异

你回复的帖子为啥删了,那么不自信吗?

现在应该没有处理了,测试了几个不同APPStore下载情况,现在xcode上架没有APP bitcode优化了,同1个版本下载的App __TEXT Beyond对比应该是一致的; 除非你架构不一致;版本不一致;

你可以dump出来对比下2个文件看看; beyond compare对比下

首先问题问明白,哪里来的汇编?ida/lldb还是其他工具产生的汇编。“一台机器显示的汇编”过于笼统,如果是ida那属于操作错误或者文件格式不对,如果lldb那是地址错了。而且你这贴的2段不是同一个地址生成的汇编,从哪个角度都是低级错误