こんにちは、Sleipnir Mobile for Android 開発担当の西田です。 Sleipnir Mobile for Android の開発を始めて数ヶ月、様々な罠にハマってきました。 今日はその中から、Proguard でハマった事例を紹介します。 Proguard とは Java クラスファイルを難読化・最適化するツールです。未使用のコードを削除し、残りのコード中のクラス名、フィールド名、メソッド名を意味のない短い文字列に変換します。Android SDK に含まれているので、Android 界隈では一般的に使われているツールです。 さて、この Proguard がどのような罠となるのか・・・ ここで WebView の登場です。 WebView は Android で Web ページを表示するためのクラスです。WebView には JavaScript にインターフェース
GingerbreadことAndroid2.3のリリースに合わせて公開された新しいSDKとEclipseプラグイン、個人的に一番興味があったのは難読化ツール「ProGuard」が統合されたことです。 少々解説しておくと、Javaは比較的リバースエンジニアリングに弱いというか、コンパイル済みのファイルから結構なところまでソースコードが復元できてしまうので、リバースエンジニアリングから防御するためには、変数名やメソッド名を意味のない値にする(例えばgetDate()というメソッドをa()にしてしまう)ツールが有効で、そんなツールがProGuardです。変数名やメソッド名が短くなることにより、アプリケーションのファイルサイズが小さくなるというメリットもあります。 さて、新しいSDK+Eclipseプラグイン環境でProGuardを使うためには、まずプロジェクト内のdefault.properti
はじめに このエントリでは、Androidアプリという知的財産を守る方法の一つとして、難読化ツールであるProGuardを紹介し、実際にAndroidアプリに組み込む方法を示します。 ソフトウェアの価値 ソフトウェアでは処理の流れ(アルゴリズム)を記述したソースコードが大きな価値を持つため、(特に商用のソフトウェアは)ソースコードを非公開とし、コンピュータで実行可能な必要最小限の中間コードやネイティブコードに限って配布することで、ソフトウェアビジネスを成立させています。つまり、処理の流れを「隠す」ことにより、その会社(あるいは人)にしか解決できないという「情報に対する付加価値」を与え、ソフトウェアビジネスを成立させていると言えます。一方で、何らかの形でこの「隠した部分」が明らかになり白日の下に晒されると、類似したソフトウェアが流通するなど、もはや処理の流れという情報としての「価値」は失われ
Android SDKのサンプルSampleSyncAdapterを読んでみたのだが、結構初心者には難解なコードだった。SampleSyncAdapter自身はAndroidが提供する2つの機能を使って実現している。1つはインターネット上のサービスなどにログインするアカウントの管理機能を提供するAccount Managerと、もう一つはデータの同期を実現するSynchronization Manager。サンプルプログラムとしてはこれらの2つの機能を組み合わせた方が現実的なサンプルになるのだが、両方の機能の詳細を理解していない初心者には難解になってしまう。 補足:2010/10/17 このサンプルがとっつき難い理由として、どうやって動かすか解らない、という面もあった。 SampleSyncAdapterの動かし方については“Android SDKのSampleSyncAdapterの使い
Java™ Platform, Standard Edition 6u20 Source Snapshot Releases March 10, 2010 Build b01 Previous Snapshot Releases Java Documentation Summary of changes in Java SE 6u20 build b01 Feedback forum Java SE 6u20 Binary Snapshot Releases Please note: Some browsers may require you to right-click/CTRL-click to save these files to your computer. JDK 6u20 Source under the JRL license jdk-6u20-ea-src-b
kobadroidのオリジナル曲紹介 概要 この記事は2011年頃の記事です(日付不 詳) アプリケーション内で作成したデータは、ContextクラスのopenFileOutputとopenFileInput、それと ストリームクラスを使って、バイナリデータとして保存することができます。当記事はバイナリデータを保存する際に、暗号化して保存し、ロードする際に復号 してロードを行うサンプルです。 暗号化部分は、LVLのオブファスケータを参考にしています。LVLは共通鍵暗号とBASE64エンコードを用いてテキストデータを 暗号 化していますが、当記事はそこをアレンジしてバイナリデータを直接暗号化しています。 注:当tipsは情報の完全な隠蔽を保障するものではありません。各自の自己責任において ご利用ください。 暗号化について 暗号化ファクトリにPBE(パスワードベース暗号化)を選択し、アプリケー
Java言語による暗号化をサンプルと共に説明しています。 JDK1.5以上には、JCE(Java 暗号化拡張機能)が含まれており、この機能を利用すると、共通鍵方式による暗号化や公開鍵方式による暗号化機能を実装できます。 このページでは、以下の手法を説明しています。 ・ 共通鍵を自動生成して暗号化する ・ 共通鍵を作成して暗号化する(その1)[htt://www.trustss.co.jp/Java/JEncrypt122.html] ・ 共通鍵を作成して暗号化する(その2)[htt://www.trustss.co.jp/Java/JEncrypt123.html] ・ パスワードベース暗号化[htt://www.trustss.co.jp/Java/JEncrypt124.html] また、Windowd APIとの連携として以下の説明もあります。 ・ Javaで暗号化したデータをWin
今作っているアプリでRSA暗号を使おうとしているんですが、ハマりました。 問題はAndroidで暗号化した文字列をGAE(Mac)で復号化しようとすると、復号できないというもの。 そもそもテスト用に作ったMacのjavaプログラムで暗号化したデータと、Androidで暗号化したデータが一致しない。 同じ文字列を同じキー値で暗号化したならば同じ暗号データが手に入るはず パディングにランダムな文字列を使えば異なるデータになります なぜか。 Mac(GAE)のJDKに搭載されているJCE(暗号化拡張機能)とAndroidに搭載されているJCEのプロバイダが異なるためのよう。 プロバイダが異なっていても、モード・パディングを揃えれば暗号化/復号化できます JCEってのはざっくりいうと暗号化/復号化エンジンのインターフェイスみたいなもの*1 実装されているJCEの事をプロバイダって言う。 それぞれど
a]:flex [&>a]:flex-row [&>a]:justify-between [&>a]:py-[18px] [&>a]:border-t [&>a]:border-lightgray [&>a]:border-opacity-20 [&_li]:my-1 [&_li]:list-['-_'] [&_li]:py-[18px] [&_li]:border-t [&_li]:border-lightgray [&_li]:border-opacity-20 [&_.Label]:transition-all [&_.Label]:w-fit [&_.content]:transition-all [&_.content]:h-0 [&_.content]:pt-0 [&_.content]:px-5 [&_.content]:overflow-hidden [&_.toggle:
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く