リバースエンジニアリング目的ではなく、誤操作で消してしまった自作コードの復元に(´Д⊂ヽウェェェン

深夜三時……寝ぼけた状態でファイル整理をやっていた時にそれは起こりました。
Eclipseのワークスペースから消すつもりが、ディスク上から削除(ゴミ箱にも残らなかった)
寝ぼけているのに、涙が止まらない、という異常な精神状態に。

夜が明けて、途方にくれるのにも飽きた頃
まず思い出したのはファイル復元ツール
→消去済みのファイルを復元するツールを何個か試してみましたが……
 ファイル名までは復元できたものの、内容までは戻りませんでした。
 (HDDの頃は正常に動作したので、SSD特有の問題かもしれません)

次に思い出したのは、逆アセンブル(デコンパイル)ツール
難読化ツール(ProGuard)を使用していても、難読化されるのはクラス名やメソッド名のみ。
「小説家になろうダウンローダー」の中心である正規表現文字列は全て残っていると踏みました。

●apktool
公式?なAPKファイルの復号ツールです。
ソースコードの復元機能はありませんが、レイアウトXML等のリソースを100%復元可能です。
→入手先 https://code.google.com/p/android-apktool/
→使用方法 http://techbooster.org/android/environment/7754/

使用方法
対象のapkファイルをapktool.batと同じフォルダに入れて
「apktool d hogehoge.apk」

まぁそういうツールなのであれですが、リソースファイルの復元は完璧ですね。
(ProGuardは関係ないのでしょうか?)

ただし
@+id/text_title
となっている部分が
@id/text_title(+が無くなる)
となり、そのままでは大量のエラーが出ます。
手動で+を追加してください。

●dex2jar,jd-gui
→入手作(dex2jar) https://code.google.com/p/dex2jar/
→入手先(jd-gui) http://www.softpedia.com/progDownload/JD-GUI-Download-92540.html
※海外のDLサイトは無関係なリンクだらけなので気を付けてください。

apk(Dalvik)形式からjarに変換するツールと、Jarをソースコード(.java)に復元するツールです。

ProGuardを利用している場合、クラス名、メソッド名、変数名等が
短縮されてしまう(難読化)ので、完全な状態への復元は原理的に不可能です。

逆にいえば、ProGuardを使用していても処理の流れ、定数文字列等は読めてしまいます
(ProGuardを使ってるから、暗号・復号処理をAndroidアプリ内でやっても大丈夫とはなりません)

使用方法
apkファイルをdex2jarと同じフォルダに入れて実行
「dex2jar hogehoge.apk」
Jarファイルが出力される

jd-gui
GUI形式のツールなので、普通に起動してjarを読み込ませればOKです。
jd-gui

変数名がa,b等1文字のアルファベットに置き換えられていますが、クラス型や、定数文字列は残っています。
処理の流れも十分に把握可能です。

セキュリティを考えた場合、例えばAESの鍵値をソースコードに埋め込むのは、全く駄目ですね。
暗号化が必要な場合は、RSAにような非対称の暗号方式を使って、秘密鍵はソースに埋めこまない。
パスワード等の変化値を鍵値にする等が必要になります。