7

iOSアプリケーションのバイナリからデバッグシンボルを削除して、ハッカーがバイナリを変更するのをより困難にしようとしています。xcodeのシンボルストリッピング(ストリップリンク製品とデプロイメント後処理を有効にする)と「strip-S-x」の両方を試しました。どちらもシンボルの数を減らしますが、「文字列」を介してバイナリを実行すると、ヒットの負荷が返されます。

それらを削除する方法はありますか?

4

2 に答える 2

15

Objective-Cは動的言語です。メソッド呼び出しは、セレクター(事実上、文字列としてのメソッド名)に基づいて実行時に解決されます。これは、コンパイル/リンク時にメソッド呼び出しをバインドするC++のような言語とは異なります。

バイナリからメソッド名(セレクター)を削除すると、アプリケーションが使用できなくなります。

Objective-Cで書かれたアプリケーションは、その内部に関してはほとんどオープンな本です。、、F-ScriptotoolDTraceなどのツールを見て、実行中のObjective-Cアプリケーションでアクセスおよび変更できる量を確認してください。class-dump

P_LNOATTACHただし、実行中のアプリケーションへのDTraceの接続を停止するリンカーフラグ( )があります。旗ptraceを持って電話することもできます。PT_DENY_ATTACHiTunesは、これを行うアプリの例です。Appleは、DRM内をいじくり回したくないからです。

Objective-Cコードの難読化に関する以前の投稿があるようです。iPhone / iPadアプリコードの難読化を参照してください-それは可能ですか?価値がある?詳細については

于 2012-11-01T04:52:49.500 に答える
1

Objective-cランタイムはそれらに依存しているため、それらを削除することはできません。(タイプ「SEL」は一意の文字です*)

于 2012-11-01T04:51:47.507 に答える