iOS汇编代码

我想尝试一些与苹果iOS的ARM汇编代码只是为了教育目的。 我想从Xcode中的一些行代码开始。 我的理解是,我需要编译一个iOS设备,例如我的iPhone,这意味着我需要支付99美元/年的会员资格。 我不认为我可以在iOS手机模拟器上使用ASM汇编代码。 我很难在Xcode环境下用iPhone查找有关ARM汇编代码的示例,书籍或文档。 我做错了吗? 也许iOS不是学习ARM组件的用户最友好的环境。

备份…

你想学什么? arm组装或iOS编程? 选一个…

你有什么组装经验?

你认为你想用armassembly学习什么? 跳入并写一些完整的gui应用程序? 您需要学习将立即数放入寄存器add和or和xor并将答案保存在寄存器中。 然后读写一些内存位置。 学习如何使用堆栈,进行调用等。然后用C语言编写应用程序,然后使用asm进行手动调优,或者使用asm技能来debugging编译器和/或代码。 在asm中编写应用程序或操作系统等是为了想要发表声明,或者有特定原因的人,而不是为了教育目的。

给这几分钟或者半小时,不用花很长的时间,如果你认真对待,也许是一个晚上。

http://github.com/dwelch67/lsasim看看learnasm.txt文件。

它是免费的,开源的,应该用C编译器工作大多数地方(linux,unix,windows等),如果你还不是程序员,没有基本的编译工具或编程技能,那么去学几种语言出来python的硬性方式http://learnpythonthehardway.org/ ),当然C,并回到汇编工作。 上面的东西不是一个arm,但有很多熟悉的function。 让我知道我做了多less工作。

现在这是ARM,但拇指指令集:

https://github.com/dwelch67/thumbulator

不是教程,而是简单的指令集模拟器。 这应该是显而易见的,在模拟器中你可以添加/修改/打印任何你想看到的帮助debugging。 您可以使用gcc,gnu汇编器和/或llvm clang作为交叉编译器,使用embedded式,拇指,cortex-m类似的ARM寄存器, 按照其中一个例子,然后开始修改它。

有一些倾向于统一的ARM汇编语言,既适用于基于ARM的内核,也适用于基于thumb2的内核。 不是所有的汇编语言所需要的,但是你可能想写一个代码模块的地方,而不是有很多如果拇指elses乱抛垃圾的代码。 你当然可以在这里弄个脚步,在其他一些平台上直接读取一些代码给完整的32位ARM指令。 thumbulator只是拇指,基于ARM的内核和基于thumb2的内核之间的通用指令集,基本上就是便携式的ARM指令集,一次编写代码,几乎可以在所有内核上运行。

你会在github上看到我有许多其他项目,样本以汇编开始,然后进入引导代码进入C.许多但不是所有的ARM为基础。 硬件成本从10美元到50美元左右。 你可以看看yagbat的东西,并获得免费的视觉男孩提前模拟器和模拟32位arm指令或16位拇指或任何,并有一个模拟显示,等等。或者,如果你有的Gameboy的硬件或nds或nd lite和正确的墨盒,您可以在真正的硬件上运行程序。

我把所有的东西放在那里供人们学习。 克服对第一次embedded的东西的恐惧,不知道如何交叉编译等等。我从其他许多类似的例子中学到了东西,我只是回来了。

如果你的目标是学习iOS编程,那么拿到工具箱或者其他东西,然后用你想学的语言学习,熟练掌握,学习apis等等。然后,如果你做了一些上面的汇编程序,那么你就可以开始考虑从iOS程序调用asm函数或内联汇编程序等。 多less汇编程序,您的select。 我不希望看到在该平台的汇编程序中编写的应用程序,而是search如何从我的ios应用程序调用此汇编代码,或者如何执行内联汇编。 (不要学习内联汇编,直到你擅长真正的汇编)。

没有任何理由支付访问模拟器,有许多arm模拟器在那里,有一个在mame,arm臂gdb和其他地方,一些gameboy advance和任天堂DS simultators等,等等当然有qemuarm。 还有更多的模拟器比你愿意花时间去尝试,我自己大约10年左右,而不是所有的尝试。

学习汇编不是像C或Python或Java,我会写一个扫雷游戏来学习这种语言。 你正在学习移动位的机制,小步骤,而不是写可用的应用程序。 例如,使用16位处理器添加两个128位数字是一个有价值的汇编语言项目。 将两个数字(任意大小)乘以一个没有乘法指令的处理器,这是另一个汇编器types学习项目。 是的,我同意你可以通过从iOS应用程序调用asm来学习这些东西,但是如果你还没有iOS开发工具包,并且知道如何编写iOS应用程序,那么在开始考虑汇编程序之前,你有很多学习要做。

如果我的方式与你所要求的没有问题,我会很乐意删除这个答案…

即使没有代码签名证书,我认为你应该可以进入schemepopup式菜单(右侧)并select“iOS设备”

一旦你这样做,那么你可以在你的项目中select任何.c或.m(或.cpp或.mm)文件,打开助理编辑器,并从助理编辑跳线select“大会”。 然后你可以并排看到你的源代码和汇编代码。

或者你可以去产品菜单和生成输出 – >组装

你可能会发现从C代码开始比较容易,其中函数调用比Objective-C方法调用更容易跟踪。

您需要的是一个带有基于Linux的编程工具包的ARM开发工具包。 然后,您可以在Mac上安装VirtualBox,创buildLinux虚拟机并在虚拟Linux机器上安装ARM开发工具。 确保购买ARM开发套件时,它附带ARM CPU,完整的开发/testing板,用于软件传输/debugging的USB电缆和完整的Linux工具链。 你可以find这样的套件less于99美元。

ARM汇编和逆向工程的另一个快速介绍:http: //yurichev.com/writings/RE_for_beginners-en.pdf