cafebabe.jp 日々のよしなしごとをのたまうブログ.

84月/110

難読化手法 ― 名前難読化

プログラム中の名前の定義部分を変更し,意味のない名前に変更する.例えば,maxという変数名をv1のような名前に変更する.このアルゴリズムは,現在発表されている難読化ツールのほとんどが実装しており,変換後の名前の決め方に各難読化ツールの特色が表われている.

例えば,Dash-ODotfuscator には オーバーロード誘導 (Overload induction) というアルゴリズムが採用されている.これはオブジェクト指向のオーバーロードを巧みに利用しており,変換後の名前空間が最小になるように多くのメソッドにオーバーロードの関係を持たせる.

他にも,変換後の名前を予約語にしたり,また,非印字文字にする方法も考えられる.実際の難読化ツールの例では,個人的には,数値の連番か,文字の連番(aaa, aab, aac, ...)が多いように思う.

 
74月/110

難読化手法 ― 文字列暗号化

プログラム中に現われる文字列リテラルを予め暗号化しておき,実行時に復号することで,プログラム中から解析の手掛かりを隠す難読化手法である.

この手法は実装が簡単であるため,多くの難読化ツールで実現されている.バイナリをダンプしただけでは意味のないデータしか出てこないため,カジュアルハッキングを防止するためにも有効であろう.

 
64月/110

Redmineのデータベースをsqlite3からMySQLに変更 (Snow Leopard)

sqlite3で運用していたが,重くなってきたので,MySQLで運営しようとしてハマった記録.
最終的にMySQL 5.1.x for Mac OS X 10.6 (x86 64bit)を使った場合に移行できた.
最新のMySQLを使った場合,MySQLへのデータのインポートでこける.

以下は試行錯誤の記録.MacでRedmine+MySQLで動かしたい場合は最新のMySQL 5.5ではなく,MySQL 5.1を使うこと.

 
54月/110

maven-site-plugin 3.0-beta-3のpoweredByタグ

poweredBy以下のlogoタグのimgがbannerLeftもしくはbannerRightのsrcになる.困る.
つまり,以下のようなsite.xmlを記述する.

<project name"Example">
  <bannerLect>
    <name>${project.name}</name>
    <src>images/example.png</src>
    <href>http://example.com</href>
  </bannerLeft>
  <poweredBy>
    <logo name="Build with Maven 2"
          href="http://maven.apache.org"
          img="images/logos/maven-feather.png" />
  </poweredBy>
    :
</project>

これで,siteドキュメントを作成すると,左の柱の下に images/logos/maven-feather.png の画像が表示されるはずが,images/example.png が表示されてしまう.maven-feather.png だけなら,poweredByタグを使わなくても良いのだが,他のロゴも使いたいとき,非常に困る.

で,maven-site-pluginのバージョンを2.0.1変えてみると,期待通りの動作をする.
それ以上のバージョンだと同じようなバグに当たる.

仕方がないのでpoweredByタグを使わないようにしているけど,なんでこのバグについて,情報が一切ないんだろうか.スキンを変えるとうまくいったり,私の環境の問題なのかなぁ?

ちなみに,Mavenのバージョンは3.0.1 for Windows.Javaのバージョンは1.6.0_20.

 
34月/110

難読化ツールDonQuixote公開

拙作の難読化ツールDonQuixote 3.0.0を公開しました.
文字列暗号化とAPI呼び出し難読化の2つの手法をJavaクラスファイル,jarファイルに対して適用できます.

なお,このツールはフリーソフトウェアではありません.
検証や実験用に使うのに特に制限はありませんが,商用で使う場合には私まで連絡してください.

http://se.naist.jp/DonQuixote/

 
2 / 212