You can inspect the MIME type of any file on a GNU/Linux OS and on Mac OS with the command file -mime-type. For example, say you wish to replace Pistol's internal text previewer with that of bat 's, you'd put the following in your pistol.conf: text/. bat -paging=never -color=always%pistol-filename%. Many games and apps are built with Windows in mind, often leaving Mac users wondering if versions of the software will ever be developed for Apple's operating system. With the recent release of Apple's newest version of its OS— MacOS Catalina —all 32-bit applications were marked as obsolete and can no longer run on Mac computers.
- ⚠ Fairly Demanding: You'll need a recent Mac. System requirements: OS X 10.9.5, 2.2 Ghz Intel Core i3, 4 GB RAM, 10 GB HD space, NVIDIA Geforce 330M, ATI Radeon HD 3870, or Intel HD 3000 with 256 MB of Video Memory. Role-Playing: Medium: No: Wasteland 2: Director's Cut: Wasteland 2: Director's Cut.
- MAC 10 for sale. For roughly a 20-year period from the mid-1970s to the mid-'90s the MAC 10 for sale submachine gun was everywhere. At least that's what you might think if your only exposure to the weapon is action films and T.V. Shows from the era.
Many assembly tutorials and books doesn't coverhow to write a simple assembly program on the Mac OS X.Here are some baby steps that can help people whoare also interested in assembly to get startedeasier.
Mach-O file format
To get started on writing OSX assembly, you need tounderstand OSX executable file format – the Mach-Ofile format. It's similar to ELF, but insteadof sections of data, bss, and text, it has segments thatcontains sections.
A common assembly in Linux like
would translate into this in Mach-O
Mach-O is pretty flexible. You can embed acstring
section in your __TEXT
segment insteadof putting it in __DATA,__data
. Actually this isthe default behavior that compiler does on your Mac.
Hello Assembly
Now we know how to translate common linux assemblyto mac, let's write a basic program – do a system callwith an exit code.
On x86 you do a system call by int x80
instruction. On64 bit machine, you do this by syscall
. Here's the samplecode:
Now we know how to translate common linux assemblyto mac, let's write a basic program – do a system callwith an exit code.
On x86 you do a system call by int x80
instruction. On64 bit machine, you do this by syscall
. Here's the samplecode:
you can compile the code by the following commands:
To perform a system call, you put the system call number in%eax
, and put the actual exit code to %ebx
. The systemcall number can be found in /usr/include/sys/syscall.h
.
The system call number need to add an offset 0x2000000
, becauseOSX has 4 different class of system calls. You can find the referencehere XNU syscall.
Mac Os Versions
System call by using wrapper functions
If you're like me that had no assembly background, you mightfeel that syscall
is alien to you. In C, we usually usewrapper functions to perform the call:
Now we call a libc
function instead of performing a systemcall. Seal of darkness mac os. To do this we need to link to libc by passing -lc
to linker ld
. There are several things you need to doto make a function call.
Call frame
We need to prepare the stack before we call a function. Elseyou would probably get a segmentation fault.The values in %rsp
and %rbp
is used to preserve frame information.To maintain the stack, you first push the base register %rbp
onto the stack by pushq %rbp
;then you copy the stack register %rsp
to the base register.
If you have local variables, you subtract %rsp
for space.Remember, stack grows down and heap grows up.When releasing the frame, you add the space back to %rsp
.
A live cycle of a function would look like this:
The stack size can be set at link time. On OSX, below are theexample parameters you can pass to ld
to set the stack size:
When setting the stack size, you also have to set the stack address.On the System V Application Binary Interface it says
Although the AMD64 architecture uses 64-bit pointers, implementationsare only required to handle 48-bit addresses. Therefore, conforming processes may onlyuse addresses from 0x00000000 00000000
to 0x00007fff ffffffff
I don't know a good answer of how to chose a good stack address.I just copy whatever a normal code produces.
Parameters passing
The rules for parameter passing can be found in System VApplication Binary Interface:
- If the class is MEMORY, pass the argument on the stack.If the size of an object is larger than four eight bytes, orit contains unaligned fields, it has class MEMORY.
- If the class is INTEGER, the next available register of the sequence
%rdi
,%rsi
,%rdx
,%rcx
,%r8
and%r9
is used. - If the class is SSE, the next available vector register is used, the registersare taken in the order from
%xmm0
to%xmm7
.
The exit()
function only need one integer parameter, therefore we putthe exit code in %edi
. Since the parameter is type int
, we use 32 bitvariance of register %rdi
and the instruction is movl
(mov long) insteadof movq
(mov quad).
Hello world
Now we know the basics of how to performa system call, and how to call a function.Let's write a hello world program.
The global variable str
can only be accessed through GOT(Global Offset Table). And the GOT needs to be access fromthe instruction pointer %rip
. For more curious you canread Mach-O Programming Topics: x86-64 Code Model.
The register used for syscall
parameters are a littlebit different than the normal function call.It uses %rdi
, %rsi
, %rdx
, %r10
, %r8
and %r9
.You cannot pass more than 6 parameters in syscall
, norcan you put the parameters on the stack.
Hello world using printf
Now you know the basics of assembly. A hello worldexample using printf should be trivial to read:
Conclusion
The 64 bit assembly looks more vague than the tutorialswritten in X86 assembly. Once you know these basic differences,it's easy for you to learn assembly in depth on your own,even if the material is designed for x86. I highly recommendthe book 'Programming from the ground up'. It is well writtenfor self study purpose.
References
- OS X Assembler Reference Assembler Directives
- Book: Programming from the ground up.
So, you've decided to download an older version of Mac OS X. There are many reasons that could point you to this radical decision. To begin with, some of your apps may not be working properly (or simply crash) on newer operating systems. Also, you may have noticed your Mac's performance went down right after the last update. Finally, if you want to run a parallel copy of Mac OS X on a virtual machine, you too will need a working installation file of an older Mac OS X. Further down we'll explain where to get one and what problems you may face down the road.
A list of all Mac OS X versions
We'll be repeatedly referring to these Apple OS versions below, so it's good to know the basic macOS timeline.
Cheetah 10.0 | Puma 10.1 | Jaguar 10.2 |
Panther 10.3 | Tiger 10.4 | Leopard 10.5 |
Snow Leopard 10.6 | Lion 10.7 | Mountain Lion 10.8 |
Mavericks 10.9 | Yosemite 10.10 | El Capitan 10.11 |
Sierra 10.12 | High Sierra 10.13 | Mojave 10.14 |
Catalina 10.15 |
STEP 1. Prepare your Mac for installation
Given your Mac isn't new and is filled with data, you will probably need enough free space on your Mac. This includes not just space for the OS itself but also space for other applications and your user data. One more argument is that the free space on your disk translates into virtual memory so your apps have 'fuel' to operate on. The chart below tells you how much free space is needed.
Note, that it is recommended that you install OS on a clean drive. Next, you will need enough disk space available, for example, to create Recovery Partition. Here are some ideas to free up space on your drive:
- Uninstall large unused apps
- Empty Trash Bin and Downloads
- Locate the biggest files on your computer:
Go to Finder > All My Files > Arrange by size
Then you can move your space hoggers onto an external drive or a cloud storage.
If you aren't comfortable with cleaning the Mac manually, there are some nice automatic 'room cleaners'. Our favorite is CleanMyMac as it's most simple to use of all. It deletes system junk, old broken apps, and the rest of hidden junk on your drive.
Download CleanMyMac for OS 10.4 - 10.8 (free version)
Download CleanMyMac for OS 10.9 (free version)
Download CleanMyMac for OS 10.10 - 10.14 (free version)
STEP 2. Get a copy of Mac OS X download
Normally, it is assumed that updating OS is a one-way road. That's why going back to a past Apple OS version is problematic. The main challenge is to download the OS installation file itself, because your Mac may already be running a newer version. If you succeed in downloading the OS installation, your next step is to create a bootable USB or DVD and then reinstall the OS on your computer.
How to download older Mac OS X versions via the App Store
If you once had purchased an old version of Mac OS X from the App Store, open it and go to the Purchased tab. There you'll find all the installers you can download. However, it doesn't always work that way. The purchased section lists only those operating systems that you had downloaded in the past. But here is the path to check it:
- Click the App Store icon.
- Click Purchases in the top menu.
- Scroll down to find the preferred OS X version.
- Click Download.
This method allows you to download Mavericks and Yosemite by logging with your Apple ID — only if you previously downloaded them from the Mac App Store.
Without App Store: Download Mac OS version as Apple Developer
If you are signed with an Apple Developer account, you can get access to products that are no longer listed on the App Store. If you desperately need a lower OS X version build, consider creating a new Developer account among other options. The membership cost is $99/year and provides a bunch of perks unavailable to ordinary users.
Nevertheless, keep in mind that if you visit developer.apple.com/downloads, you can only find 10.3-10.6 OS X operating systems there. Newer versions are not available because starting Mac OS X Snow Leopard 10.7, the App Store has become the only source of updating Apple OS versions.
Purchase an older version of Mac operating system
You can purchase a boxed or email version of past Mac OS X directly from Apple. Both will cost you around $20. Rusty mac os. For the reason of being rather antiquated, Snow Leopard and earlier Apple versions can only be installed from DVD.
Buy a boxed edition of Snow Leopard 10.6
Get an email copy of Lion 10.7
Get an email copy of Mountain Lion 10.8
The email edition comes with a special download code you can use for the Mac App Store. Note, that to install the Lion or Mountain Lion, your Mac needs to be running Snow Leopard so you can install the newer OS on top of it.
How to get macOS El Capitan download
If you are wondering if you can run El Capitan on an older Mac, rejoice as it's possible too. But before your Mac can run El Capitan it has to be updated to OS X 10.6.8. So, here are main steps you should take:
1. Install Snow Leopard from install DVD.
2. Update to 10.6.8 using Software Update.
3. Download El Capitan here.
'I can't download an old version of Mac OS X'
If you have a newer Mac, there is no physical option to install Mac OS versions older than your current Mac model. For instance, if your MacBook was released in 2014, don't expect it to run any OS released prior of that time, because older Apple OS versions simply do not include hardware drivers for your Mac.
But as it often happens, workarounds are possible. There is still a chance to download the installation file if you have an access to a Mac (or virtual machine) running that operating system. For example, to get an installer for Lion, you may ask a friend who has Lion-operated Mac or, once again, set up a virtual machine running Lion. Then you will need to prepare an external drive to download the installation file using OS X Utilities.
Mac Os Mojave
After you've completed the download, the installer should launch automatically, but you can click Cancel and copy the file you need. Below is the detailed instruction how to do it.
STEP 3. Install older OS X onto an external drive
The following method allows you to download Mac OS X Lion, Mountain Lion, and Mavericks.
- Start your Mac holding down Command + R.
- Prepare a clean external drive (at least 10 GB of storage).
- Within OS X Utilities, choose Reinstall OS X.
- Select external drive as a source.
- Enter your Apple ID.
Now the OS should start downloading automatically onto the external drive. After the download is complete, your Mac will prompt you to do a restart, but at this point, you should completely shut it down. Now that the installation file is 'captured' onto your external drive, you can reinstall the OS, this time running the file on your Mac.
- Boot your Mac from your standard drive.
- Connect the external drive.
- Go to external drive > OS X Install Data.
Locate InstallESD.dmg disk image file — this is the file you need to reinstall Lion OS X. The same steps are valid for Mountain Lion and Mavericks.
How to downgrade a Mac running later macOS versions
If your Mac runs macOS Sierra 10.12 or macOS High Sierra 10.13, it is possible to revert it to the previous system if you are not satisfied with the experience. You can do it either with Time Machine or by creating a bootable USB or external drive.
Instruction to downgrade from macOS Sierra
Instruction to downgrade from macOS High Sierra
Instruction to downgrade from macOS Mojave
Instruction to downgrade from macOS Catalina
Handgun Hoedown Mac Os X
Before you do it, the best advice is to back your Mac up so your most important files stay intact. In addition to that, it makes sense to clean up your Mac from old system junk files and application leftovers. The easiest way to do it is to run CleanMyMac X on your machine (download it for free here).
Visit your local Apple Store to download older OS X version
If none of the options to get older OS X worked, pay a visit to nearest local Apple Store. They should have image installations going back to OS Leopard and earlier. You can also ask their assistance to create a bootable USB drive with the installation file. So here you are. We hope this article has helped you to download an old version of Mac OS X. Below are a few more links you may find interesting.