iOSアプリケーションのバイナリからデバッグシンボルを削除して、ハッカーがバイナリを変更するのをより困難にしようとしています。xcodeのシンボルストリッピング(ストリップリンク製品とデプロイメント後処理を有効にする)と「strip-S-x」の両方を試しました。どちらもシンボルの数を減らしますが、「文字列」を介してバイナリを実行すると、ヒットの負荷が返されます。
それらを削除する方法はありますか?
iOSアプリケーションのバイナリからデバッグシンボルを削除して、ハッカーがバイナリを変更するのをより困難にしようとしています。xcodeのシンボルストリッピング(ストリップリンク製品とデプロイメント後処理を有効にする)と「strip-S-x」の両方を試しました。どちらもシンボルの数を減らしますが、「文字列」を介してバイナリを実行すると、ヒットの負荷が返されます。
それらを削除する方法はありますか?
Objective-Cは動的言語です。メソッド呼び出しは、セレクター(事実上、文字列としてのメソッド名)に基づいて実行時に解決されます。これは、コンパイル/リンク時にメソッド呼び出しをバインドするC++のような言語とは異なります。
バイナリからメソッド名(セレクター)を削除すると、アプリケーションが使用できなくなります。
Objective-Cで書かれたアプリケーションは、その内部に関してはほとんどオープンな本です。、、F-Scriptotool
、DTraceなどのツールを見て、実行中のObjective-Cアプリケーションでアクセスおよび変更できる量を確認してください。class-dump
P_LNOATTACH
ただし、実行中のアプリケーションへのDTraceの接続を停止するリンカーフラグ( )があります。旗ptrace
を持って電話することもできます。PT_DENY_ATTACH
iTunesは、これを行うアプリの例です。Appleは、DRM内をいじくり回したくないからです。
Objective-Cコードの難読化に関する以前の投稿があるようです。iPhone / iPadアプリコードの難読化を参照してください-それは可能ですか?価値がある?詳細については
Objective-cランタイムはそれらに依存しているため、それらを削除することはできません。(タイプ「SEL」は一意の文字です*)