home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

721 - 730 / 1320    [|<]  [|<]  [<]  71  72  73  74  75  76  77  78  79  80   [>]  [>|][>|]
タイトル/名前 更新者 更新日
日記/2010/07/03/"ソースコードリーディングから学ぶJavaの設計と実装"読書メモ msakamoto-sf 2010-07-03 12:32:08
日記/2010/07/02/"Working Effectively with Legacy Code"読書メモ msakamoto-sf 2010-07-02 09:55:59
日記/2010/07/01/cheap2el-1.1.1 リリース msakamoto-sf 2010-07-01 19:50:38
日記/2010/06/30/SetWindowsHookEx()の実験その2 msakamoto-sf 2010-06-30 17:46:13
日記/2010/06/30/SetWindowsHookEx()の実験その1 msakamoto-sf 2010-06-30 17:45:57
日記/2010/06/30/cheap2elで遊ぶ。 msakamoto-sf 2010-06-30 00:49:27
日記/2010/06/28/普通自動車免許取得した。 msakamoto-sf 2010-06-28 15:07:49
日記/2010/06/25/PEフォーマットで遊ぶためのミニライブラリ, "cheap2el" msakamoto-sf 2010-06-25 14:25:18
日記/2010/06/18/Pythonに慣れてきたな、と思う時。 msakamoto-sf 2010-06-18 10:55:35
日記/2010/06/16/VirtualAlloc(), VirtualProtect()のメモ2 msakamoto-sf 2010-06-16 17:42:31
ソート項目 / ソート順     1ページ 件ずつ表示

日記/2010/07/03/"ソースコードリーディングから学ぶJavaの設計と実装"読書メモ  

所有者: msakamoto-sf    作成日: 2010-07-03 12:31:29
カテゴリ: 読書 

購入してから4年近く、本棚で埃をかぶっていた本。・・・いままでごめんなさい、ようやく読み終えることが出来ました。読感についてはamazonのレビューと大差ないのでそちらを参照して下さい。
取りあげられているソフトウェアのバージョンは2006年当時のものです。しかし、本書はソフトウェアの使い方の説明ではなく、ソースコードで使われているデザインパターンやライブラリを活用した実装技法について書かれています。そうした技法はたかだか4年が経過したくらいで有用性が下がることはありません。2010年現在でも充分楽しめる内容になっています。

本書で取りあげられているソフトウェアと、そこで何を学べるかの対応表:

Jakarta Commons Logging 1.0.4
  • Adapterパターン
  • プロパティファイルとリフレクションによるクラス指定
Jakarta Commons Pool 1.3
  • Factoryクラスの使い方
  • オブジェクトプーリングの実装例
JUnit 3.8.2
  • リフレクションを使ったフレームワーク構築例
  • TemplateMethodパターン
Apache Struts 1.2.9
  • Commons Digester によるXML設定ファイルからのアプリケーション初期化
  • Front Controllerの実装例
  • Commons BeanUtils によるリクエスト値のFormオブジェクトへの変換
  • Tilesを例としたフレームワークの拡張性の確保
Eclipse 3.1.2
  • OSGi, Equinoxによるフレームワーク構築例
Apache Tomcat 5.5.17
  • JMXを使ったコンポーネントベースのフレームワーク構築例
  • リクエスト処理でのMaster-Slaveパターン, Leader/Folloersパターンの実装例
Jakarta Velocity 1.4
  • JavaCCによるドメイン特化言語(DSL)実装例
  • 言語処理、とくに抽象構文木(AST)の処理でのInterpreterパターン, Visitorパターン活用例
Sprint Framework 1.2.8
  • DIコンテナ実装例
  • 動的プロキシ(java.lang.reflect.Proxy)によるAOPの実現例
HSQLDB 1.8.0.5
  • 独自JDBCドライバの実装例
  • Proxyパターンによる通信先の隠蔽

プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-07-03 12:32:08
md5:188279af22d725f7d8e98a61a282485b
sha1:56cd7d1f71aeea225ac37b04175686dc9eeb9cf1

日記/2010/07/02/"Working Effectively with Legacy Code"読書メモ  

所有者: msakamoto-sf    作成日: 2010-07-02 09:50:29
カテゴリ: 読書 

ようやく読み終えました。日本語訳が出る前に購入してしまっていたので、折角なので原著のまま読破しようと挑戦したのですが、暇を見てダラダラ読んでいた為時間が掛かってしまいました。読書会で読み切った人達マジパネェっす。

ということで、読書感想文を「やるやらコンビ」でお送りします。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-07-02 09:55:59
md5:5545516fb78ac8428078243114e4d724
sha1:02e9b6c6f47f5d2aebf8c7d99f63fb37edb1efe6

日記/2010/07/01/cheap2el-1.1.1 リリース  

所有者: msakamoto-sf    作成日: 2010-07-01 19:48:15
カテゴリ:

インポートアドレスの書き換えによるAPIのHOOKに成功し、readmeファイルなども整理出来ましたので、cheap2el-1.1.1をリリースします。

インポートアドレスの書き換えサンプルは、SetWindowsHookEx()によりDLLをInjectするのと、直接LoadLibrary()をCreateRemoteThread()で叩いてDLLをInjectする二種類を作例としてUPしています。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-07-01 19:50:38
md5:e20e3bd75c6d024b017d6586bc0491e4
sha1:a8ef437f0f1a3b8c6076182945c98d605de4f4d4

日記/2010/06/30/SetWindowsHookEx()の実験その2  

所有者: msakamoto-sf    作成日: 2010-06-30 17:14:41
カテゴリ: Windows プログラミング 

前回( 日記/2010/06/30/SetWindowsHookEx()の実験その1 )に引き続きWindowsでの"HOOK"の実験です。

前回は同じデスクトップ上の全てのスレッドでHOOKが発動してしまいました。今回は任意のプロセスにのみHOOKできるようにしてみます。といっても、SetWindowsHookEx()APIにはそこまでの柔軟性はありません。global-hookを使う以上は、どうしても全てのプロセスでHOOK-DLLがロードされてしまいますし、HOOK本体も実行されてしまいます。

そこで、HOOK対象となるプロセスIDをDLLの共有メモリ機能を使って予め登録しておき、HOOK本体の中で現在のプロセスIDがHOOK対象と同じ場合にのみ、HOOK処理を実行するような分岐を組み込みます。他のプロセス内で発動した場合は、分岐により何もせずSKIPするようになります。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-30 17:46:13
md5:3983c0da12ba2bc22df90a7377226a2c
sha1:6585fbf5415feacbd04c9169e79b895e7a3bf14e

日記/2010/06/30/SetWindowsHookEx()の実験その1  

所有者: msakamoto-sf    作成日: 2010-06-30 16:03:23
カテゴリ: Windows プログラミング 

IAT書き換えの絡みでHOOKを使いますが、その前にHOOKってどうやって使うのかサッパリだったのでMSDNで軽く調べ、サンプルを作って遊んでみました。
HOOKにはglobal hook(同じデスクトップで動作する全てのスレッドに対してHOOK)と、thread-specific hook(特定のスレッドに対してのみHOOK)がありますが、今回はglobal hookのみ取りあげます。

参考MSDNは、2010/6月末時点で以下の階層になります。

  • "MSDN Library" > "Windows Development" > "Windows Application UI Development" > "Windows and Messages" > "Hooks"
(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-30 17:45:57
md5:ddb29027f0275a7bae35635df9b13e90
sha1:2654ad3ec8044e1adf4c105d344b5c3740ab92f5

日記/2010/06/30/cheap2elで遊ぶ。  

所有者: msakamoto-sf    作成日: 2010-06-30 00:37:52
カテゴリ:

簡単にcheap2elで遊べるサンプルを紹介。

  • DLLを外部プロセスのメモリ空間に展開し、エキスポート関数をスレッドとして実行
    • http://code.google.com/p/cheap2el/source/browse/#svn/trunk/samples/dllcopy
      • 「コードインジェクション」を意識してます。といっても、外部プロセスのメモリ空間に書き込む際には総合セキュリティソフトで検知される可能性があります(ウィルスバスター2010では検知された)し、Vista以降でASLRが有効な場合はDLLのロードアドレスが異なり、IATを調節出来ずDLLイメージを実行可能にできません。あくまでもcheap2elを使ったサンプルで、WinXPで動作確認しただけです。
      • コンセプトとしては、DLLを実行可能な状態のメモリイメージに展開(IATの調整と再配置の書き換え)、VirtualAllocEx()で外部プロセスメモリ空間上に仮想ページを確保、WriteProcessMemory()で書き込み、CreateRemoteThread()でエキスポート関数をスレッドとして外部からkick、という流れです。

バイナリ解析の記事でよく見かけるインポート関数のHookについても、近日中にcheap2elを使った作例をUPしたいと思います。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-30 00:49:27
md5:23980149a66ccc5352142ac42fb9695a
sha1:bed55b169be738842e8a1dc62346c413425bf574

日記/2010/06/28/普通自動車免許取得した。  

所有者: msakamoto-sf    作成日: 2010-06-28 14:59:40
カテゴリ:

こういう機会でも無いと取れないだろうからと、2月中頃から教習所に通い始め、3月は学生さんの混雑がすごかったので中休み、4,5,6とダラダラ通い、無事取得出来ました。

実家が千葉の田舎の方で、何かあった時に運転出来ないといろいろ面倒なんです。あと、TSUTAYA等の会員証の手続き周りで、一般的に受け付けてくれる住所証明書が欲しかったんです。

以下金額概算:

教習所代金 : 287,020円
免許センター試験・交付手数料 : 4,200円
---------------------------------------
合計 : 291,220円

大凡30万円、というところ。教習所は、技能教習で3時間ほどオーバーしてるのでその分上乗せされている。

これで一息つけます。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-28 15:07:49
md5:eb5db871089882d26482c43bf7dd30d1
sha1:4a1bb10a32832018928f6eea2c7b46b1459f203e

日記/2010/06/25/PEフォーマットで遊ぶためのミニライブラリ, "cheap2el"  

所有者: msakamoto-sf    作成日: 2010-06-25 14:17:37
カテゴリ: C言語 Windows 

今までPythonで弄っていたのを、C言語で組み直してみました。("C++"ではありません)

Cheap(安物)なPEフォーマットのLibraryということで、

cheap pe library
→
cheap2el

GoogleCode上にソースをUPしてます。

とりあえずCUnitのテストケースで、疑似ロードまでは動きます。お遊び用サンプルが出揃ったら、GoogleCodeのサイトの説明やWiki、バイナリダウンロード用のリリースファイルの準備などしてみます。

"アレ用の何か"( http://hp.vector.co.jp/authors/VA050396/index.html )でもサンプルコードがあるのですが、C++です。ちょっとC++を今すぐ弄るには復習が大変なので、とりあえずC言語レベルで弄れるのが欲しいなと思い作り始めました。まぁ良くある車輪の再発明ですが、勉強用の習作なのでご勘弁。
でもまぁ、どこかに目鼻立ち整えてUPっておけば、後々誰かしら(主に自分)が便利だろうな、ということでGoogleCodeの方にUPることにします。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-25 14:25:18
md5:60dcc82ed2bef3631927f407b8e84381
sha1:257d9818e8ba9179a06ae01072ebb51691c3a8b5

日記/2010/06/18/Pythonに慣れてきたな、と思う時。  

所有者: msakamoto-sf    作成日: 2010-06-18 10:52:09
カテゴリ:
  • セミコロン";"で文を終わらせる他の言語を書いている時、ついついセミコロンを忘れてコンパイラや実行時に怒られる時。
  • ifやforなど、ブロック文を書く時にブレース"{"を忘れる時。あるいは、":"を打ってしまう時。(Pythonでは関数やクラスのdefでは、":"を末尾に打つ)

例:

void foobar(int a, int b):
                         ^ アチャー

Pythonだと

def foobar(a, b):

になるので。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-18 10:55:35
md5:1fc2580402a20343076879fc92578624
sha1:6289da97fa5cf5f76aea3c50ba54e77f99679ea1

日記/2010/06/16/VirtualAlloc(), VirtualProtect()のメモ2  

所有者: msakamoto-sf    作成日: 2010-06-16 17:36:17
カテゴリ: C言語 Windows 

WinXP SP3 で、実際にEXEやDLLがロードされたアドレスがどうなっているか:
アドレス値は左から順にMEMORY_BASIC_INFORMATIONの

BaseAddress, RegionSize, AllocationBase
...
# ここからexe本体
#  PE Header
0x00400000, 0x00001000, 0x00400000 commit,ReadOnly
#  ".text"
0x00401000, 0x00009000, 0x00400000 commit,ExecutableReadOnly
#  ".rdata"
0x0040a000, 0x00002000, 0x00400000 commit,ReadOnly
"  ".data"
0x0040c000, 0x00003000, 0x00400000 commit,ReadWrite
# ここまでexe本体
0x0040f000, 0x7c3f1000, 0x00000000 free,Hidden
# ここからkernel32.dll
#  PE Header
0x7c800000, 0x00001000, 0x7c800000 commit,ReadOnly
#  ".text"
0x7c801000, 0x00084000, 0x7c800000 commit,ExecutableReadOnly
#  ".data"
0x7c885000, 0x00003000, 0x7c800000 commit,ReadWrite
0x7c888000, 0x00002000, 0x7c800000 commit,CopyOnWrite
#  ".rsrc" + ".reloc"
0x7c88a000, 0x000a9000, 0x7c800000 commit,ReadOnly
0x7c933000, 0x0000d000, 0x00000000 free,Hidden
...

という具合に、モジュール毎に"AllocationBase"が一緒。つまり、VirtualAlloc()した後に、各セクション領域に応じてVirtualProtect()で保護モードを変更したのと同じ状態になっているようだ。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-06-16 17:42:31
md5:a9e703d2ab566a47fe6271a4483e3683
sha1:77b668d8bd6f1d14ae05bab4915b59ac39dcf801