Well, i've gotten pretty "far", sort of. Creating a faux 1.2 root on the iPhone and instructing dyld to load libraries and framework from this path. This is practically what Shirk has also done, and we get the same results. The problem is this:
Referenced from: /System/Library/Frameworks/Foundation.framework/Foundation
Expected in: /var/root/Aspen/Library/Frameworks/CoreFoundation.framework/CoreFoundation
What happens is that 1.1.4 dyld can't load the 1.2 Foundation framework, and thus reverts back to 1.1.4, which in turn is totally different symbol-wise from 1.2, and therefore shuts down. Eg, it doesn't find the 1.1.4 symbols defined in Foundation in the new frameworks. When trying to force dyld to only load 1.2 Foundation, it spits out something like "Unknown required load command: 0x800000F". I'm not entirely sure, since resources on dyld are scarce, but i would guess this means that the 1.2 dyld supports some new load commands that 1.1.4 dyld doesn't understand. Getting through this hassle would probably require patching the frameworks to allow 1.1.4 dyld to load them. I spent alot of time in a hex editor trying to figure out what to patch, but right now, for me at least, this is nearly impossible, since i haven't been able to find any detailed specifications for the frameworks binary structure, or an ARM dissasembler, both would make everything a lot easier. I know the theoretical structure of the frameworks and libraries (Apple has this documented on ADC under mach-o binary format), but this doesn't really translate into actual code for the different load commands, so i'm stuck at looking at hex code i haven't got a clue to what means.
On the subject of tutorials, i would love to do that, but until we have an actual tap-and-the-SDK-compiled-app-just-runs solution it's not much fun.
If you wan't to mess around and help, here's a few pointers:
Create a copy of the 1.2 frameworks and other files on the iPhone, these files are found in the Aspen-1.2 SDK. I put mine under /var/FauxRoot.
Instruct dyld to use these libraries and frameworks when loading an application. You can do this at runtime by using the env command, like this:
env DYLD_ROOT_PATH=/var/FauxRoot /Applications/Some1.2App.app/Some1.2app
But as i said, this isn't much fun yet, since we need to either patch up the frameworks, or figure out how to use the 1.2 dyld under 1.1.4. I did try using the new dyld to load the frameworks, but it simply refuses to run, i guess that it is in some way incompatible to the 1.1.4 kernel.
Anyone sitting around with a reference sheet for ARM6 binary code?



LinkBack URL
About LinkBacks








Reply With Quote


Bookmarks