私はアプリを書いていますが、セキュリティ上の理由から、静的メソッドから返される値を難読化したいと思います。から静的メソッドを呼び出した結果は次のようにClassA
なりますBOOL
が、攻撃者がリターンの実際の値を取得するのをできるだけ難しくしたいと思います(つまり、リターンしたくないBOOL
、ジャンクを返したい)それはランダムに見えますが、どういうわけか意味があります)。
// in ClassA
returnValue = [ClassB staticMethod];
BOOL actaulReturnValue = // some magic to de-obfuscate returnValue
例:1024ビットのほとんどランダムなジャンクを返しますが、どこかに1つの意味のある数字があります(おそらく毎回異なるビット)。
別の例:10程度の一見ランダムな数字を返しますが、それらの10桁が円周率の最初の1000桁に現れる場合、実際の値はTRUE
(10,000,000,000分の1の偽陽性率があるという事実を受け入れる)です。
これらは私が考えることができる2つの例ですが、これを行う他の(おそらくより良い)方法を考えるのを助けるためにstackoverflowコミュニティに任せています。コードも提供できる場合はボーナスポイント。
編集:リバースエンジニアリングが難しいほど良い。cycriptを実行して、ゲームオーバーの秘密を判断できれば。
編集2:攻撃者が私が戻り値を難読化する方法を知っていても、実際の値を理解するのは(不可能ではないにしても)難しいはずです(これは私の2番目の例でも問題です)
編集3:私は生活のためにiOSアプリの侵入テストを実行します。私はクライアントのために毎日それをしているので、私は記憶の中の何でも読むことができることを理解しています。また、難読化とセキュリティが同じであることを暗示しようとはしていません。そうは言っても、攻撃者が単一のAPI呼び出しにパッチを適用して常にFALSEを返すのを防ぐ方法を見つけようとしています。
ありがとう!