xcode反汇编调试iOS模拟器程序(二)看懂反汇编

这里当然不会从零开始讲汇编代码了,零基础的话可以看看 王爽 写的书《汇编语言》,请自己找度娘或谷哥要了。其实只为了iOS调试的话并不需要学多少,懂几个命令和明白寄存器的作用就行。建议遇到不懂的时候再搜索看看。

这一节主要讲讲书上没有的东西。


在xcode中看到的汇编语法不是熟悉的intel格式,而是叫AT&T汇编。基本上只要懂intel,at&t会很快上手。两者的区别请参考这篇文章:

AT&T汇编http://blog.csdn.net/bigloomy/article/details/6581754

例如,在前一节的截图中,会看到movl这样的指令,比熟悉的mov多了个l。这个l表示本次操作是长字型(4字节)数据,操作数是32bit。

这里要注意,lldb和gdb看到的结果会有些差别,下面是对同一个C++函数的截图:

这个是lldb:

这个是gdb:


可以看到lldb会比gdb在AT&T的格式表示上更规范化,gdb只会在一些特定的地方才加l。

lldb以十进制表示常量;左侧内存地址省略了0;

gdb在尖括号内多显示了函数内的偏移。

其实最新版的gdb又会显示得不同,但是apple在强推lldb,不再升级gdb了……


如果实际的代码是在处理浮点数,则在反汇编中会看到xmm0,xmm1等的寄存器,如:

这些寄存器叫xmm寄存器,是为SSE指令服务的,所以也叫sse寄存器。操作他们的指令会有ss后缀。度娘给出了更多信息:http://baike.baidu.com/view/2679650.htm

sse寄存器是一组128bit的寄存器,其值有很多种可能性,可通过gdb查看,详情请查看下一节


总结一下,主要明白这几个概念就行:

1. mov xxx, yyy 表示把xxx的值赋给yyy

2. call xxx 表示调用某函数

3. jmp xxx 表示直接跳转到某内存地址,一般是函数的入口地址

4. ret 表示要返回下一层堆栈了,如果函数有返回值,会存在eax寄存器里。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Xcode是苹果公司开发的一款集成开发环境(IDE),用于开发iOS和macOS应用程序。要创建iOS模拟器,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Xcode。您可以在App Store中搜索Xcode并进行安装。 2. 打开Xcode后,选择“创建新项目”或使用快捷键Command + Shift + N。 3. 在弹出的窗口中,选择“iOS”选项,并选择您想要创建的应用程序类型,例如“Single View App”。 4. 在下一步中,您需要为您的项目选择名称、组织标识符和语言。 5. 在“设备”下拉菜单中,选择“iOS Simulator”。 6. 在“iOS Simulator”下拉菜单中,选择您想要模拟的iOS设备版本。 7. 点击“下一步”并选择您想要保存项目的位置。 8. 最后,点击“创建”按钮,Xcode将为您创建一个新的iOS模拟器项目。 现在,您可以使用Xcode创建的iOS模拟器来运行和测试您的应用程序。请注意,您可以在Xcode中选择不同的iOS设备版本来模拟不同的设备和操作系统环境。 #### 引用[.reference_title] - *1* [xcode ios 模拟器安装运行](https://blog.csdn.net/weixin_50408263/article/details/126480094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Xcode模拟iPhone教程!](https://blog.csdn.net/weixin_43219158/article/details/87627576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hursing

来一个五羊香芋甜筒~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值