0

私はいくつかのコードを扱っています.2つのオプションがあります:

いずれか: メソッドを使用する

[オブジェクト doSomethingWithOffset:0x12345];

または: 関数を使用するdoSomething(0x12345);

私はオフセットを扱っているので、実際には誰も見ることができないので、それらを難読化する必要があります。を使用して__attribute__((visibility("hidden")))、メソッド/関数の名前を非表示にすることができます。

しかし、バイナリ出力ファイルを逆アセンブルすると、次のようになります。

LDR     R2, =0xOFFSET
LDR     R3, =0xDATA

したがって、PARAMETER として設定したオフセットを見つけることができます。

関数/メソッド呼び出しのパラメーターを非表示にする便利な方法はありますか?

助けてくれてありがとう。

ジャック

4

2 に答える 2

0

コードを逆アセンブルする人から何かを隠そうとしている場合、それはできません。男を混乱させるのに十分なものを難読化することはできますが、それは本当に良いセキュリティではありません.

難読化することを選択した場合、最善の方法は、完全に有用で必要でありながら退屈なことを行う他の同様の名前のメソッドの中に、偽の名前でメソッドを埋め込むことです。

「男」が渡されたメソッド呼び出しを知っている場合、データを非表示にする良い方法はありません。操作の組み合わせを使用してこの秘密の値を「構築」できますが、アプリの特徴から外れていると思われる場合、実際に注意を引くリスクがあります。

(しかし、そのような計算を隠そうとするなら、GUI でのオフセットの計算のように見せて、実際のそのような計算の中に隠そうとするでしょう。値の一部をオフセットとして隠しておくことさえあります。隠しラベルなど)。

于 2013-09-24T20:13:52.633 に答える