Monday, January 18, 2010

CrashReporter 0.2f available for testing; iKeyEx 0.3 sneak peak

CrashReporter 0.2f has been available for testing. This version should fully eliminate the crash caused by fat binaries. Also, it has a hidden preference enabling "Email crash report to developer" within CR. But to avoid swarm of emails by stupid users blaming the tertiary suspects without any grounds you're required to read the source code of CR to know how to enable it ;).

Also, I have put up iKeyEx 0.3~beta1 for anyone who needs the new feature to test. 0.3 is an intermediate version between 0.2 and 0.5 to address some keyboard developers' requests, in particular:
  • When the key is a combining character, NFC is automatically applied.

  • variantType = "immediate-accents" (e.g. Thai and Arabic) is available via "text with traits".

  • more-after and shift-after (e.g. Zhuyin keyboard and the apostrophe) can be explicitly turned on and off via the "after" traits.


(0.5 shall support the "image" traits again, and thus keyboard theming; and the "star" operator in .cin IME.)

And, I'd like to point out that, if you want to change the text of Return and Space in your keyboard, you can already do so by strings.plist. This is supported from the start, not a new feature.

Wednesday, January 6, 2010

Two IDA Pro 5.x Scripts for iPhoneOS binaries

If you use IDA Pro to disasseble iPhoneOS binaries (Mach-O/ARM), you may find these scripts useful:
  • dyldinfo: This script lets IDA Pro understands the DYLD_INFO[_ONLY] command introduced in firmware 3.1. Running this recovers some missing symbols.

  • fixobjc2: For binaries built with Objective-C ABI 2, this script can find and label all Objective-C functions and ivar offsets.


The result will look like this:


Because IDA doesn't allow "-" and spaces in names, the Objective-C function names are renamed like this:
  • -[Foo bar:baz:] → Foo.bar:baz:
  • +[Foo bar:baz:] → @Foo.bar:baz:
  • -[Foo(Cat) bar:baz:] → Foo(Cat).bar:baz:


(Note: Try not to run fixobjc2 before dyldinfo, some information cannot be found.)