2017-01-25 12 views
0

私はproguardを使用してクラスとメソッドの難読化を行っています。調査の結果、私は侵入試験器の見通しからクラス名の難消化を行うこのツールを見つけました。推薦部でセキュアメソッドを使用してクラス名の難読化を行う方法は?

https://github.com/HamiltonianCycle/ClassNameDeobfuscator

、著者はソースコードから線の下に削除することを提案:

-keepattributes SOURCEFILE LineNumberTable

さて、これは今、適切なリバースエンジニアを行うには、攻撃者ができるようになりますjavaファイルの元のクラス名をすべて取得します。

ここまでは、十分です。しかし、このソリューションを実装すると、私には1つの問題が生じます。私の開発者は、以下のような生地で例外処理を管理している:私は、このソリューションを実装する場合は、開発者が追跡し、エラーを解決するために、正確なファイル名を取得することはありません

enter image description here

。彼らは例外リストで難読化されたファイル名を取得するので、例外を追跡して解決するための多くの混乱が生じます。

私はこれらの両方のタスクを達成するために他の方法がありますか?

答えて

0

できません。 Javaのパブリッククラスhave toは、それらの名前が付けられたファイルで定義されます。スタックトレースのファイル名を公開する必要がある場合は、必ずパブリッククラス名を公開します。

もちろん、ソースコードを変更してできるだけパブリッククラスを使用しないようにすることもできますが、既存のコードを難読化し、手作業で難読化する時間を失うことはありません。

技術的には、ソースコードレベルで動作する難読化ツールを作成し、ファイル名とクラス名の両方をマングルすることが可能でなければなりません。 ProGuard seemsはそのような機能を提供します。

2

例外リストで難読化されたファイル名を取得するため、例外を追跡して解決するための多くの混乱が生じます。

have cake and eat cakeを同時に使用することはできません。それでも、ここでリリースビルドを気にかけているとすれば、リリースされたビルドごとにプロガードマップファイルをアーカイブすることをお勧めします。それはちょうどこのマップファイルを見てクラスa.c.d.eが何であるか把握することができます。各ビルドでは、ProGuardのは、次のファイルを出力します

  • をdump.txtは - APK内のすべてのクラスファイルの内部構造を説明します。
  • mapping.txt - 元のクラスと難読化されたクラス、メソッド、およびフィールド名の間の変換を提供します。
  • seeds.txt - 難読化されていないクラスとメンバーをリストします。
  • usage.txt - APKから削除されたコードを一覧表示します。

これらのファイルは<MODULE-NAME>/build/outputs/mapping/<FLAVOUR>/に保存されます。

このドキュメントも参照してください。Shrink Your Code and Resources

関連する問題