apkファイルを端末に入れたりデコンパイルして新しくapkファイルを作成する

Trend micro CTFでそういう問題があって、はじめてやったけど
結構簡単かつ、便利そうだったのでメモ

※ちなみにMacOSX 10.10です。

apkファイルを端末にインストールする。

僕はエミュレータだけどPCと接続さえしていれば、同じ手順でできるはず。

adb というコマンドで行います。
AndroidSDKをインストールしていれば付属しています。

以下がコマンド

adbはそれぞれAndroidSDKをインストールした場所によって違うし
パス通している人もいると思うので適宜読み替えて下さい。
これだけです。

apkファイルをデコンパイルして中身を見たい、変えたい。

dex2jarとかjd-guiとか使ってもいいです。
ただ、そうするともう一度apkファイルにするの面倒な気がするんですが
何かいい方法ってありますか?

ここで紹介するのはapktoolというコマンド。

インストールは簡単なのでぐぐってください。

以下コマンド

dオプション(おそらくデコンパイルのd)つけます

これで各種Manifestファイルやら、画像リソースやら、そしてそれと一緒に中間コードのソース(smali)
が展開されます。
あとはそれを好きに編集するだけ

デコンパイルしたファイル郡を再びapkにしたい。

これもapktoolでできます。

bオプション(おそらくビルドのb)をつけます

上記手順で作成したapkファイルをアンドロイド端末にインストールしたい。

一番最初の手順を行う前に、このapkファイルに署名しなくてはいけません。
(署名なしのapkを許可する設定もありますが)

これはjava開発環境(おそらくAndroidSDKをインストールしている方なら、大体入ってるはず)
に含まれるkeytoolとjarsignerを利用します。

下記コマンド

オプションいっぱいなので最低限(それ以外はとりあえず↑をコピペでいいと思う)

  • keystore: keystoreファイルの名前
  • keypass: 鍵のパスワード、最低6文字
  • storepass: 鍵のパスワード、最低6文字
  • alias : 署名の名前?後でも使うから覚えておいてください。
  • validity: 有効期限(とりあえず動かしたいなら大きめの数字でOK)

これでhoge.keystoreというファイル(署名を行うのに必要なもの)が出来上がります。
次はjarsignerで実際に署名します。

これも長いので必要なところだけ

  • -signedjar application.apk : 署名後のapkファイル名(署名前のものと同じでいいと思う)
  • -keystore hoge.keystore application.apk hogeapp : 署名用のkeystoreファイル名 署名前のapkファイル名 keystoreファイルで指定したailias

これでapkファイルに署名されました。
あとはこの記事の一番最初の手順でインストールできます。
(もともと入ってるアプリと同じ名前だと、それアンインストールしないとエラー出るので注意)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です