2011年2月22日 星期二

在 iPhone 3G, iOS 4.2.1, JB 安裝 libgcc 和 iphone 2.0 Toolchain

沒想到 JB 後,從 Cydia 更新到最新時,對於手上這台 iPhone 3G 來說,有些軟體不會顯示出來或無法安裝,之前還被強者主管說怎可能沒有 XD 花點時間仔細看看,有一些好用的工具都需要 libgcc ,但是預設沒有 libgcc 可以安裝,查看一些資訊可能是因為 iOS 版本不同會產生一些問題,因此軟體清單被過濾掉了吧?!總之,就是要花點力氣弄一下,我的目標是安裝 iphone 2.0 Toolchain ,更仔細來說是使用 otool 這種東西。


解法,就在 Cydia 作者網站: http://apt.saurik.com/debs/,上頭有 libgcc_4.2-20080410-1-6_iphoneos-arm.deb,只要透過 wget 抓到 iPhone 上面安裝就行了



  1. 透過 Cydia 安裝 OpenSSH, 別忘了登入後要改一下 root 密碼,以免被盜用

  2. 透過 Cydia 安裝 wget

  3. 手動安裝 libgcc

    • # cd /tmp

    • # wget http://apt.saurik.com/debs/libgcc_4.2-20080410-1-6_iphoneos-arm.deb

    • # dpkg -i libgcc_4.2-20080410-1-6_iphoneos-arm.deb




如此一來就可以透過 Cydia 安裝 iPhone 2.0 Toolchain 囉!


提一下額外的,其實我是要用 otool 這個工具,此工具可以用來查看軟體到底用了哪些 framework 囉,藉以研究實作上的方向,例如以 iPhoneApp 這套軟體來看,可以先從 /User/Applications 裡頭看到一些序號目錄,想辦法找到 ooxx 這套軟體,並切換進去:


# cd /User/Applications/xxxxxxxxxxxxxxxxxxxxxx
# ls 
Documents  Librarys   iPhoneApp.app  iTunesArtwork  iTunesMetadata.plist tmp
# cd iPhoneApp.app
# ls -la iPhoneApp
# otool -L iPhoneApp
iPhoneApp:
        /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 359.16.0)
        /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 678.60.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
        /System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1.6.0)
        /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (compatibility version 1.0.0, current version 289.0.0)
        /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 1100.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.1.0)
        /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
        /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 478.61.0)


可惜的,超強主管已離職了,在這之前我也被分配到作其他案子,也來不及去驗證某個程式是不是用某個方向實做的。當初我是以測資方向去驗證,例如用刪減法處理,餵特定資料給程式,看其結果來猜,馬上被主管唸了,說要更謹慎處理,才有上述使用 otool 的足跡啊,只不過上述問題用 otool 也還不能解掉。


另外,我也在 Ubuntu 把 ooxx 的 binary 檔進行反組譯,是啦,可以看到組語,但我更該珍惜時間 :P 所以沒有衝下去人腦分析,也順便記一下指令:


$ arm-elf-objcopy -I binary -O elf32-littlearm iPhoneApp out.elf && arm-elf-objdump -marm9 -D out.elf


沒有留言:

張貼留言