- MobileSubstrate is using a simple way of patching C functions where multiple patches for the same function will conflict.
- The way of patching Objective C methods used by MobileSubstrate is puzzling me. Instead of just swapping the IMP addresses of the functions, it does that, but also adds a new method into the class methods list. While I can understand, why (it's easier for the developer to write [self orig_patchedFunction:arg1] than gPatchedFunction(obj, sel, arg1);) but in the end it causes a separate call to objc_msgSend resulting in 50 to 400 extra instructions to be executed just to call the original function. Talk about speed, huh.
- The way MobileSafety works (it controls the Safe Mode commonly seen in the SpringBoard) is okay for a UN*X diehard - but it relies on some assumptions it shouldn't. For example, it traps common signals sent when the app is crashed (SIGSEGV, SIGBUS, etc) but doesn't passes the extra information to next handlers in chain! Hello, this is 21st century, and we're not talking of command line tools here - it's done inside a full-fledged GUI app, and who knows, that extra information MobileSafety discards may be useful - you never know!
- The loader itself is written in Objective C which means it is much more slower than compared to the one written in pure C - and that affects every application launch.
Recently in installer Category
- Updated category is now only show when something is actually updated.
- Update All button for the Updated category.
- ChangeOwner(path, owner[, group]) script command is now recursive.
- ChangeModeRecursive(path, mode) script command added.
- Each category now lists a number of packages in it.
- Dramatically reduced memory footprint.
- Package information is now properly scrollable.
- More info button in the package information page is now much (much!) easier to hit.
- Better handling of repositories with a large amount of packages.
- Fixed a few Lua commands that were a little broken in the introductory release.

Dear iPhone users,
In leu of the recent release of firmware 2.2, I think it is a good time to tell you what we were working on in the past 2.5 months. Today, a number of updates are being released, along with a completely new product that should simplify your use of the iPhone, expand a whole new world of possibilities without compromising security of your phone.
I'll start from the beginning. You probably are all aware what jailbreak means, but I will reiterate just to make it clear. By default, each iPhone has two partitions: system one and user one. The system one is where the system files and system applications are stored. The user one holds your contacts, SMS, AppStore applications, music, videos and so on. Historically, for security purposes, the system partition was always in the "read-only" mode, to prevent malicious access and modification of the system files. Jailbreak process was created to facilitate the need of unlocking of the phone as initially it was only working with AT&T network, and user partition didn't allow execution of programs - in a nutshell, it simply allowed the system partition to be writable - so one could add and run third-party applications on it.
Now, more than 1.5 years later, jailbreak has became a synonym of something "hackish", and moreover, some Apple outlets are not servicing the jailbroken phones. Granted, jailbreak is needed to make certain tools work - such as BSD Subsystem, SSH, and some others, but overall nowadays (largely because of the tools mentioned) it actually makes your phone less secure! Why? Because it allows anyone to contact your iPhone via SSH with root (superuser) access and gain access to any file on it - this being your contacts, mail, photos, music and whatnot - and what's worst, you will not even know it happened! SSH is a commonly known protocol, so almost anyone could get onto your phone as long as you're in the same WiFi network. How? Two things: default installation uses the same root password, "alpine" (and 99% of the users never change it), and SSH actually advertises itself over Bonjour! So all someone has to do is open up a Bonjour-compatible SSH client (such as Terminal.app on Mac or almost any SFTP client), pick the iPhone they want, and start rocking!
I won't argue that BSD and SSH are needed by some people who actually need BSD/SSH access on their iPhone - but let's face it, this is mostly the über-geeks. About the only use for SSH for a casual user is an ability to upload files to the iPhone - and, since it's not the only available method, I strongly believe the possible security risk is honestly not worth it.
So my point is simple - jailbreak is no longer needed in its "traditional" form for most people. This is why we have developed a tool that does something else... and it's absolutely amazing. Here's what it does: it puts some tools (including our own Installer) onto the user partition of the phone without opening the system partition up! You get Installer, a whole world of third-party tools that didn't got into the AppStore for some reason, such as Kate, Qik, Snapture, and dozens of others, all that without compromising your security!
The tool is named Pusher (mostly because it pushes some things onto the iPhone, and because we found the allusion funny). It works for both 2G and 3G phones running 2.0.2, 2.1 and 2.2 firmwares. Simply download it, launch and follow the instructions on-screen - the whole process takes about 3 minutes.
To make your life even sweeter, we went ahead and added a few things for free that we thought might be useful - an alternative system font, an ability to set your SpringBoard background, two alternative Cyrillic keyboards, and a few other extras that might become useful. The Mac OS X version is available for download immediately, with a Microsoft Windows one following shortly after.
Of course, because Pusher's process of installing tools onto your user partition leaves the system one locked, some tools will not install - to name a few, that's BSD Subsystem, SSH Server, and maybe some more. But the majority of apps will just work - so you can get the best of both worlds - AppStore and Installer.
You can download Pusher at its homepage - give it a try.
Also a new thing for today is Installer 4.0b10. Other than stability improvements, we have embedded a scripting language named Lua that is used in such applications as Adobe Lightroom and World of Warcraft. Lua makes it possible to write more sophisticated install scripts and we're taking full use of it for our updated products.
Oh, and we are also releasing updates to Kate and Russian Project to make them 2.2-compatible.
Stay tuned for more updates and news!

- Added user-driven ratings. We encourage you to submit your votes for various packages. Once more data will be collected (in a few days), that will be reflected on the Featured page.
- SpringBoard is no longer terminated after the software was installed or removed.
- Proxies are (again) supported. The support was broken after we moved to libcurl.
- Introduced download timeouts (again) that were disabled after the move to libcurl.
- Reworked many parts of the engine in an effort to get rid of the occasional GUI stalls.
- If a particular source fails to update, it will be moved to "disabled" state for 6 hours and will not be included in the all sources refresh process. The disabled state is listed as the source icon with a red "stop" sign over it. This is done to prevent unnecessary stalls at the sources refresh if one of the sources goes offline for whatever reason. If you'd like to retry it before 12 hour interval, open its info and hit Refresh button there.
- Removed customInfo support as it was mostly used for unnecessary ads that were disturbing many people. These pages are normally reachable from the "More Info" link.
- Much better error reporting. Forget these "error 3"s and such. The descriptions are much more human readable now. And for script errors, it will show an actual script command that caused an error.
- Installer will prevent iPhone/iPod touch from sleeping when it's downloading or installing something.
- The app icon badge should behave better now.
- Lots of smaller fixes and optimizations I won't list.
Proudly presenting you the new beta of Installer - 4.0b6.
New and changed:
- Search. It searches among packages from the repositories you have added, and, if you let it sit for 5 seconds, will query our server and return packages that are available from repositories you don't have added (that we know about) with an option to automatically add and install. Repository owners, upgrade to the latest version of the repo code (below) to have your repository added to the search engine.
- Uninstall now works correctly.
- Fixed a lot of locking issues especially with custom HTML info pages.
- Updated the Categories and Tasks icons so they are less ugly.
- Fixed a bug with multiple copies of Installer appearing in Installed Packages under some circumstances.
- Installer will now correctly check and prompt for an update of itself.
Also, to accompany the Installer release, a new edition of the Repository code is up. Grab it here: repo-r1114.zip
What's new in the repo code?
- Added an option to ping the Installer search server so it reindexes your repository. The ping occurs during regenerate.php run.
- Much better handling of ZIP archives, since this is what most people had troubles with. It now attempts to determine which way to use to unzip your files (PEAR::ZipArchive, zip_open or shell_exec("unzip")). Please note that we didn't test zip_open piece of the code as we don't have a server with that plugin compiled in PHP.
- DOMDocument::load() should work under PHP4. We hope.
- Slightly better handling of the multiple versions of the same package.
Don't forget to regenerate your repositories once upgraded, and also don't forget to put 2.0.2 into POSSIBLE_FIRMWARE_VERSIONS array so people on the new firmware can see your packages!
Thanks. :)

What's new?
- Many visual enhancements and fixes in regards to source and packages display.
- Fixed an issue with failing installs with dependencies under some circumstances.
- Fixed a bug causing package information to be displayed incorrectly (size 0 bytes) on the first access, or when the custom information HTML page (such as packages from Big Boss' repository) was not displayed.
- When updating a package, and one of its dependencies also has an update available, the dependency will be updated as well.
- The package icons will only be downloaded when on the Wi-Fi to help you save on bandwidth.
- The repositories are being refreshed upon Installer.app launch so you always stay on the bleeding edge with the updates. This is exeperimental behavior and we're not yet sure it will make it to the final release.
- Fixed a script command Confirm that was returning invalid button index for the "OK" button.
- Lots and lots of both cosmetic and internal application core fixes that improve the overall performance, presentation and stability of the application.