2009-08-26 14 views
4

効果的な結果を持つ、文書化されていないAPIを使って裏返しにいくつかのiPhoneアプリがあります。説明されていないiPhone API - 発見と使用

  1. 文書化されていないiPhone APIのリストを取得するにはどうすればよいですか?

  2. これらのAPIには、サードパーティ製のオフザフーフのドキュメントがありますか?

+0

これは楽しいことですが、App Storeに登録したいアプリで使用することはお勧めできません。他の人が入ってくるだけで、それは良いアイデアにはなりません。しかし、私は自分の個人的な(公開されていない)アプリでも一緒に遊ぶのが好きです。 – jbrennan

答えて

2

Erica Sadun、よく尊敬されているiPhoneのハッカーの1人が、正確にこれについての本を持っています。文書化されていないヘッダファイルのほとんどは、彼女のウェブサイトからも引き出す​​ことができます。

4

あなたはiPhone SDKのリストを取得するためにclassdumpを使用することができますが、私は、サードパーティのドキュメントの(非)存在を知りません。あなたはおそらく、メソッドが名前を読むことによって何をするかという考えを得ることができます。

0

iPhone SDKのパブリックフレームワークとプライベートフレームワークのヘッダーのフォルダを作成するperlスクリプト(source = arstechnika)が見つかりました。しかし、私はそれを実行すると、私はエラー(クラスダンプ失敗した、返す16777215 )を取得します。

#!/usr/bin/perl 
# 
# 24 November 2008 
# Framework Dumping utility; requires class-dump 
# 

use strict; 

use Cwd; 
use File::Path; 

my $HOME = (getpwuid($<))[7] || $ENV{'HOME'} 
    or die "Could not find your home directory!"; 

# This command must be in your path. 
# http://www.codethecode.com/projects/class-dump/ 
my $CLASS_DUMP = 'class-dump'; 

# Public Frameworks 
dump_frameworks('/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/System/Library/Frameworks', 
       'Frameworks'); 

# Private Frameworks 
dump_frameworks('/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/System/Library/PrivateFrameworks', 
       'PrivateFrameworks'); 

sub dump_frameworks 
{ 
    my($dir, $subdir) = @_; 

    opendir(my $dirh, $dir) or die "Could not opendir($dir) - $!"; 

    # Iterate through each framework found in the directory 
    foreach my $file (grep { /\.framework$/ } readdir($dirh)) 
    { 
    # Extract the framework name 
    (my $fname = $file) =~ s/\.framework$//; 
    print "Framework: $fname\n"; 

    my $headers_dir = "$HOME/Headers/$subdir/$fname"; 

    # Create the folder to store the headers 
    mkpath($headers_dir); 

    # Perform the class-dump 
    my $cwd = cwd(); 
    chdir($headers_dir) or die "Could not chdir($headers_dir) - $!"; 

    system($CLASS_DUMP, '-H', "$dir/$file"); 

    if(my $ret = $? >> 8) 
    { 
     die "$CLASS_DUMP failed, returning $ret\n"; 
    } 

    chdir($cwd) or die "Could not chdir($cwd) - $!"; 
    } 
} 
関連する問題