タグ付けされた質問 「proguard」

ProGuardは、Javaクラスを縮小、最適化、難読化、および事前検証するためのツールです。これはAndroidSDKに含まれています。

30
APKファイルのリバースエンジニアリングを回避する方法
Android向けの支払い処理アプリを開発していますが、ハッカーがAPKファイルのリソース、アセット、ソースコードにアクセスできないようにしたいと考えています。 誰かが.apk拡張子を.zipに変更すると、解凍してアプリのすべてのリソースとアセットに簡単にアクセスでき、dex2jarとJavaデコンパイラーを使用して、ソースコードにもアクセスできます。Android APKファイルのリバースエンジニアリングは非常に簡単です。詳しくは、Stack Overflowの質問APKファイルからプロジェクトへのリバースエンジニアリングをご覧ください。 Android SDKに付属のProguardツールを使用しました。署名付きキーストアとProguardを使用して生成されたAPKファイルをリバースエンジニアリングすると、難読化されたコードが表示されます。 ただし、Androidコンポーネントの名前は変更されず、アプリで使用されるKey-Valueなどの一部のコードは変更されません。Proguardのドキュメントに従って、このツールはマニフェストファイルに記載されているコンポーネントを難読化できません。 今私の質問は: Android APKのリバースエンジニアリングを完全に防ぐにはどうすればよいですか?これは可能ですか? ハッカーがAPKファイルをハッキングできないように、アプリのすべてのリソース、アセット、ソースコードをどのように保護できますか? ハッキングをより困難または不可能にする方法はありますか?APKファイルのソースコードを保護するには、他に何ができますか?

26
Androidアプリのリリースバージョンをビルドする前に、すべてのデバッグログ呼び出しを削除するにはどうすればよいですか?
Googleによると、AndroidアプリをGoogle Playに公開する前に、「ソースコードのLogメソッドへの呼び出しを無効にする」必要があります。公開チェックリストのセクション3からの抜粋: リリース用のアプリケーションをビルドする前に、ロギングを非アクティブにし、デバッグオプションを無効にしてください。ソースファイルのLogメソッドの呼び出しを削除することで、ロギングを非アクティブ化できます。 私のオープンソースプロジェクトは大きく、リリースするたびに手動で行うのは面倒です。さらに、ログ行の削除は、たとえば次のようにトリッキーになる可能性があります。 if(condition) Log.d(LOG_TAG, "Something"); data.load(); data.show(); Log行をコメントにすると、条件が次の行に適用され、load()が呼び出されない可能性があります。そのような状況は、私がそれが存在するべきではないと判断できるほどまれなものですか? それで、それを行うためのより良いソースコードレベルの方法はありますか?または、すべてのログ行を効率的かつ安全に削除するための巧妙なProGuard構文ですか?

14
アプリケーションでプライベートAPIキーを保存および保護するためのベストプラクティス[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 10か月前に閉鎖。 ほとんどのアプリ開発者は、いくつかのサードパーティライブラリをアプリに統合します。DropboxやYouTubeなどのサービスにアクセスする場合や、ロギングをクラッシュさせる場合。サードパーティのライブラリとサービスの数は驚異的です。これらのライブラリとサービスのほとんどは、なんらかの方法でサービスを認証することによって統合され、ほとんどの場合、これはAPIキーを介して行われます。セキュリティ上の理由から、サービスは通常、公開鍵と秘密鍵を生成します。これらの鍵は秘密鍵とも呼ばれます。残念ながら、サービスに接続するには、この秘密鍵を使用して認証する必要があるため、おそらくアプリケーションの一部である必要があります。言うまでもなく、これは巨大なセキュリティ問題に直面しています。公開および秘密のAPIキーはAPKから数分で抽出でき、簡単に自動化できます。 私がこれに似たものを持っていると仮定すると、秘密鍵をどのように保護できますか? public class DropboxService { private final static String APP_KEY = "jk433g34hg3"; private final static String APP_SECRET = "987dwdqwdqw90"; private final static AccessType ACCESS_TYPE = AccessType.DROPBOX; // SOME MORE CODE HERE } あなたの意見では、秘密鍵を保存するための最良かつ最も安全な方法は何ですか?難読化、暗号化、どう思いますか?


9
プロガード地獄-参照されたクラスが見つかりません
だから、私はいくつかのソフトウェアをリリースしようとしていますが、プロガードは私に頭痛を与えています。 proguardを使用してエクスポートしようとすると、「参照されているクラスが見つからない」など、多くの警告が表示されます 例えば: [2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent [2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces. [2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'), [2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' …
125 android  proguard 

3
NameNotFoundException Webビュー
一部のデバイスにcom.google.android.webviewがないことを示すCrashlyticsからエラーが発生します。それはどうして可能ですか? java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.app/com.myapp.ReaderActivity}: android.view.InflateException: Binary XML file line #29: Error inflating class com.myapp.MyWebView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: android.view.InflateException: Binary XML file line #29: Error inflating class …

5
Android版EclipseでのProGuardの有効化
Android用ProGuardの新しいドキュメントでは、プロジェクトのホームディレクトリにあるdefault.propertiesファイルに行を追加するように指示されています。しかし、このファイルを開くと、私は最初に読みました: # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 何か不足していますか? また、Eclipseからのプロダクションビルドに対してのみProGuardを有効にする方法はありますか(つまり、完成した製品をエクスポートする場合)?

4
proguardを使用するときに特定のパッケージパスを保持/除外するにはどうすればよいですか?
ProGuardから一部のファイルパスを除外したい。例com.myapp.customcomponents これどうやってするの?このディレクトリにあるすべてのカスタムコンポーネントファイルに-keepフラグを付けるのは嫌です。 私は以下を試しましたが、うまくいきません: -keep public class com.myapp.customcomponents.*
110 android  proguard 

6
Android StudioでProGuardを使用する方法
これはAndroid Studioでの最初のプロジェクトであり、アプリのコードは難読化されていません。私はbuild.gradleファイルでこの構成を使用しています: [ビルド]> [署名済みAPKを生成...]を使用しており、[Proguardを実行]がオンになっています。また、Apk_OneClick.v4.2を使用してテストしたところ、コードは非常に読みやすくなっています。 私を助けてください。:(

11
transformClassesAndResourcesWithProguardForReleaseが失敗しました
コンソールでGradleを使用してAndroidアプリケーションをビルドしようとしています。しかし、タスク ':app:transformClassesAndResourcesWithProguardForRelease'に関するエラーを下回っています: build.gradle: buildscript { repositories { jcenter() maven { url "https://jitpack.io" } } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.google.gms:google-services:3.0.0' } } allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } } task clean(type: Delete) { delete rootProject.buildDir } app / build.gradle apply plugin: 'com.android.application' android { compileSdkVersion …

4
ProGuard:ライブラリクラスの定義が重複していますか?
AndroidプロジェクトでProGuardを実行すると、次の警告が表示されます。 Note: duplicate definition of library class [org.apache.http.conn.scheme.HostNameResolver] Note: duplicate definition of library class [org.apache.http.conn.scheme.SocketFactory] Note: duplicate definition of library class [org.apache.http.conn.ConnectTimeoutException] Note: duplicate definition of library class [org.apache.http.params.HttpParams] Note: duplicate definition of library class [android.net.http.SslCertificate$DName] Note: duplicate definition of library class [android.net.http.SslError] Note: duplicate definition of library class [android.net.http.SslCertificate] …

1
ProgruardとR8は廃止予定-Android Studio 3.6
Android Studioを3.6にアップグレードした後、ProguardとR8に関して非推奨の警告が表示されます。それは、プロジェクトで難読化を使用してはならないということですか、それともリリースモードでビルドするときに考慮する必要がある同等のオプションが他にあるのでしょうか。 オプション 'android.enableR8'は非推奨であり、今後は使用しないでください。Android Gradleプラグインの将来のバージョンでは削除され、R8を無効にすることはできなくなります。影響を受けるモジュール:など

2
Gradle badass-runtime-pluginおよびProGuard Gradle Plugin
jPackageの前にproguardを実行する方法は? 前書き Gradleプラグインを使用してJavaFxでアプリを開発し、jPackagerでパッケージ化します。また、gradleプラグインを使用します。 私が使用している主なプラグインは次のとおりです。 id 'org.openjfx.javafxplugin' version '0.0.8' id 'org.beryx.runtime' version '1.7.0' id "com.github.johnrengelman.shadow" version "5.1.0" 私の現在のgradleバージョンはgradle-5.6.2-allです 問題の説明 jPackageが機能する前にコードを難読化および最適化するために、どのようにプロガードを使用しますか? proguardタスクを実行できますが、jPackageを実行してもコードが難読化されません。 古いGradleバージョンのチュートリアル(チュートリアル)を見つけましたが、これを現在のプラグインとどのように組み合わせるかわかりません。私はいくつかのコードスニペットを試しましたが、それらはすべてビルドに失敗し、このトピックを機能しないコードの束で乱雑にしたくありません。 私の現在働いているbuild.gradle // 1. Include proguard dependency buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'net.sf.proguard:proguard-gradle:6.2.0' } } plugins { id 'java' id 'application' id 'org.openjfx.javafxplugin' version '0.0.8' …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.