タグ

ブックマーク / codezine.jp (117)

  • x86系CPUのネイティブコードを解析する:CodeZine

    はじめに 今回はPC市場で一般的に採用される、x86系のCPUの機械語に迫ります。最新技術が次々と現れる昨今ですが、実はx86の規格はあまり目新しいものではありません。クロック周波数は上がるものの、機械語の形態は昔から引き継がれています。x86 CPUの種類 x86ネイティブコードを解読できるCPUには、下記のようなものが挙げられます(※AMD64を除く)。もはや説明はいりませんね。Intel Pentium 4Intel Pentium 3Intel Pentium 2Intel MMX PentiumIntel PentiumIntel 486/386AMD AthronAMD DuronAMD K-6  ここからは、32ビット以降のx86系 CPUに関する話題を扱っていきます。8ビットCPU、16ビットCPUに関するテクニックは出てきませんので、ご了承ください。

    westlife
    westlife 2007/04/22
    Windows実行ファイルの内部構造について。
  • プログラミングと開発者のためのCodeZine:プログラムからEXEファイルを生成してみよう(EXEファイル, Windows, 実行ファイル)

    はじめに これまで解説してきたEXEファイルにまつわる情報をもとに、オリジナルのEXE生成プログラムを作ってみましょう。 「EXEを生成するなんて、とてつもない量のコードが必要なんじゃっ!?」 このように心配される方がいるかもしれませんが、ご安心ください。前回解説した構造体の各メンバに値を指定してファイルに流しこめば、知らず知らずのうちにEXEファイルが出来上がります。 誤解を招くとマズいので初めに言っておきますが、コンパイラを作るワケではありません。コンパイラはソースコードをネイティブコード(機械語)に変換するためのツールであり、今回挑戦する内容とは異なります。今回は、あらかじめ用意する少量のネイティブコードを実行するためにEXEファイルを生成するのだということを念頭に置き、作業に取り掛かってみましょう。 使用するソフトウェア Visual C++ 2005 Express Editio

    westlife
    westlife 2007/04/22
    Windows実行ファイルの内部構造について。
  • EXEファイルの内部構造(セクション):CodeZine

    はじめに 前回で解説したPEヘッダに引き続き、今回もEXEファイル内のデータフォーマットの一部分「セクション」に関する話題で突き進みます。 それにしても、EXEファイルは調べ手に休ませる余地を与えません。PEヘッダという大きな構造体をクリアしたと思ったら、お次は複数個も存在するセクションが登場するのです。PEヘッダは大きくても1つしかなかったのでまだ良いのですが、セクションだけは更に細分化されたデータ構造を指定するため、少々厄介です。更に、セクションにはデータサイズ・RVA(イメージベースからの相対オフセット)など、生データに関するより詳細な情報が保持されます。 経験豊富な方はこのような文章を読んでお気づきかもしれませんが、薄い資料でセクションに関するリサーチを行うと、メモリダンプと睨めっこという状況に陥ります。筆者は数週間の間、セクション周りのメモリダンプと暮らしたことがあるので間違いあ

    westlife
    westlife 2007/04/22
    Windows実行ファイルの内部構造について。
  • EXEファイルの内部構造(PEヘッダ):CodeZine

    はじめに 皆さんは、アプリケーションを起動させるEXEファイルの中身について考えてみたことはありますか? 稿では、EXEファイルの内部構造について解説していきます。特にEXEファイルに関する日語の資料が少ないのが現状です。そのため、解析に手を出してみたいと思っても挫折してしまった方も少なくないのではないでしょうか。稿は、筆者自身の経験を踏まえ、実際にEXEファイルの解析ができるようになるための資料となるよう解説していきます。 前回、第1回では、EXEファイルの概要として、MZシグネチャ、マシンタイプ、ネイティブコード、リソース、デバッグ情報などについて説明しました。これらの一部はPEヘッダと呼ばれる場所に格納されています。また、そのPEヘッダより前にあるEXEファイルの先頭には、IMAGE_DOS_HEADER構造体、MS-DOS用スタブなどがあり、それらがWindowsの元となった

    westlife
    westlife 2007/04/22
    Windows実行ファイルの内部構造について。
  • Windows実行ファイルのバイナリ概要:CodeZine

    はじめに アプリケーションを起動させるEXEファイルを、普段何気なく実行していることと思います。皆さんは、このEXEファイルの中身について考えてみたことはありますか? 連載は、そのEXEファイルの内部構造がどのようになっているのかを解説していくものです。 EXEファイルには具体的に、どのような情報が格納されているのでしょうか。通常、Visual C++やVisual Basic、Delphiなどのコンパイラが自動的に生成してくれるので、考えることはありませんが、今回はこの疑問に真っ向から勝負を挑んでいきます。EXEは魔法の箱? 筆者は「ActiveBasic」というネイティブコンパイラ搭載型の統合開発環境を開発しています。コンパイラ開発イコール、EXEファイルの仕様をかなり細かい部分まで理解しなければならないという状況に置かれることを意味します。 Javaや.NETが騒がれる昨今、あえて

    westlife
    westlife 2007/04/22
    Windows実行ファイルの内部構造について。
  • CodeZine:RegexDesigner.NETを使って.NETでの正規表現をマスターする

    はじめに 正規表現(Regular Expression)とは、コマンドプロンプトのワイルドカードのように、テキストを解析して特定の処理をする機能です。正規表現は便利で強力な反面、パターンと呼ばれる記号と文字列の組み合わせ方法を学習する必要があるため、最初は難しく感じることがあります。そこで、稿では「RegexDesigner.NET」という正規表現のパターンを簡単にテストできるフリーウェアを使いながら例を紹介していきます。 正規表現は、PerlRubyといった言語や、Unix系のツールで利用するものと思われがちですが、.NETにおいても同様に高度な機能を使うことができますので、正規表現をマスターして高度なテキスト処理(マッチング、抽出、置換)を行ってみましょう。対象読者 Visual Studio(.NET)にて開発を行っていて、.NETの正規表現に興味がある方を対象としています。ダ

    westlife
    westlife 2007/04/15
    RegexDesigner.NETを使って.NETでの正規表現をマスターする
  • WCF(Windows Communication Foundation)チュートリアル 前編:CodeZine

    対象読者 記事はC#でのプログラミングを行ったことがある方を対象としています。サンプルを動作させるための環境設定等は「WPF(Windows Presentation Foundation)+XAML入門 前編」ご覧ください。関連記事WPF(Windows Presentation Foundation)+XAML入門 前編WPF(Windows Presentation Foundation)+XAML入門 後編 WCF登場の歴史的経緯 WCF(コードネーム:Indigo)は、.NET Framework 3.0の通信部分を司るコンポーネントです。さて、WCFについて考える前に、これまで存在したネットワーク分散サービスのフレームワークをいくつか列挙してみましょう。

  • ASP.NET AJAX版ColorDialogコントロールを作成する:CodeZine

    はじめに ASP.NETには標準の色選択ダイアログコントロールがありません。この記事ではASP.NETとAjax Control Toolkitを利用してColorDialogコントロールを作成する方法について説明します。入手方法 ASP.NET AJAX、Ajax Control Toolkitは公式サイトより入手することができます。コントロールの要件定義 コントロールに要求される機能は以下のものを考えました。選択可能な色をユーザー独自にカスタマイズ可能ヘッダー部分をハンドルしてドラッグ可能選択した色のプレビュー機能取得した色コード(#ccddff)を、テキストボックスのvalue、background-color、colorプロパティのいずれかにセット可能選択後の処理をユーザー独自にオーバーライド可能  これらの機能を持ったコントロールを作成します。イメージは下のようになります。

  • WebサービスをバインドしたDataGridViewでソート処理を実装する:CodeZine

    はじめに WindowsフォームでDataGridViewを利用した一覧表示を実装すると表示項目の幅をユーザーが自由に変更したり、列の入れ替えを行ったり自由に表示をカスタマイズすることができます。また項目を選択してデータをソートすることも可能です。しかしこのソート機能は通常のオブジェクト配列をそのままバインドしただけでは利用することができません。スマートクライアントで利用されることが多いWebサービスなどで取得できるオブジェクトもオブジェクト配列を利用することが多いので、これでは不便です。稿ではDataGridViewへバインドしたオブジェクトでソート機能を利用できるようにする手軽な方法を紹介します。 ASP.NETを利用してXML Webサービスを構築する場合、インターフェイスするデータの型にDataSetを利用することもできます。その場合は今回ご紹介する方法を使わなくともソート機能を

  • GUIのダイアログを使ったエンドユーザ向け対話バッチの実現:CodeZine

    はじめに 「エンドユーザーのPCにバッチファイルを置き、クリックして実行してもらう」といった局面が、頻度としては少ないものの、たまにあります。 そのような時によく使われるのはWSHやHTAでしょう。特に、HTAの場合は、HTMLを使ってユーザーフレンドリーなGUIのアプリケーションを簡便に作成することができます。 しかし、ここではあえてコマンドラインのバッチにこだわって話を進めてみたいと思います。対象読者 仕事でバッチファイルを作成したり修正したりする必要がある人。必要な環境 Windows 2000/Windows XPが対象です(Vistaは未検証)。なぜバッチファイルを使うのか 理由は単純で、筆者のように「バッチの方が書き慣れている人」の場合、同じ処理を書くにしても、工数を抑えることができるからです。 NT以降のDOSのバッチであれば、IF分岐やFORループが使えますし、環境変数ER

  • CodeZine:楽々ERDレッスン 第2回:「図書館の予約申込書」編

    はじめに おかげさまで、前回の記事は多くの方々からご好評をいただけたようでほっとしております。あちこちのブログなどを拝見していますと、記事をきっかけにして身近な例でERDを書いてみた方も見受けられます。今回も身近な題材でデータベース設計というものを考えていきたいと思います。 合言葉は、「量は質に転化する」。では、今回も張り切って行きましょう。 対象読者 データベース設計の初心者~中級者。 必要な環境 以下のいずれかのRDBMS。 PostgreSQL 8.0以上 MySQL 4.0以上 HSQLDB 1.7.2以上 MaxDB 7.5以上 Oracle 10g以上 SQL Server 2000以上 題材 今回の題材は、近所の図書館にあった書籍の予約用紙(図1)です。子供たちとを借りに行った際にカウンターに置いてあったので早速利用することにしました。では、デー

  • 楽々ERDレッスン 第1回:「お持ち帰りご注文用紙」編:CodeZine

    はじめに システム構築においてデータベース設計は不可欠です。そこで多くの方がデータベースの設計技法について書籍で学んだりするのですが、なかなか身についたと感じられないことも多いのではないかと感じます。 その理由は、実務で任せられる機会というのが少ないからというのが大きなものとして挙げられます。データベース設計というのは、やはり重要な箇所ですから自然と経験のある人に任せられることが多いのが実態です。しかもデータベース設計を担当するのはプロジェクト全体の中でもごく少数だけになりますから、なかなかチャンスが巡ってきません。 しかし、それを嘆いているばかりではスキルが身につかないのも道理です。そこで身近にあるものを何でも手当たり次第にデータベース設計のネタにしてしまうことで、コツコツと地力をつけていこうというのがこのシリーズの主旨です。 合言葉は、「表組みを見たらERDを描け!」 。では、

  • DataGridViewコントロールを操作する101の方法 :CodeZine

    前回は、実行時にユーザーの手で単一行表示から、複数行表示にレイアウトを変更する形で、エンドユーザーを巻き込んだ検索画面のモックアップを作成する手順を紹介しましたが、今回はそれに続き受注画面のモックアップを作成します。受注画面は、新規データの入力と既存データの表示が行えるものとし、今回もまた、実行時にユーザーの手でレイアウトを変更していただきます。

  • SQLで数列を扱う:CodeZine

    はじめに 関係モデルのデータ構造には、「順序」という概念がありません。必然的に、その実装であるリレーショナル・データベースのテーブルやビューにも、(たてまえ上)行列の順序がありません。同様にSQLも、順序集合を扱うことを直接的な目的とはしていません。 そのため、SQLでの順序集合の扱い方は、最初から順序を扱うことを目的とした手続き型言語とファイルシステムのアプローチとはかなり異質なものになります。しかし、異質ではあるものの、そこに確固たる原理が存在することも確かです。一言で言えば、集合と述語――特に「量化子」(quantifier)と呼ばれる特別な述語の使い方が鍵になります。 稿では、SQLを使って、数列や日付などの順序を持つデータを扱う方法を解説します。単にTipsを列挙するだけでなく、できれば、解法に共通する基的な原理を取り出し、未知の問題に取り組むときにも適用できる一般的な指針と

    westlife
    westlife 2007/03/21
  • ASP.NETでCometを利用したチャットを実装する:CodeZine

    はじめに 記事では、『CometとAjaxを利用したチャットサーバの実装』で紹介したCometを利用したWebチャットを、ASP.NET上で実現する方法を説明します。CometというWebアプリケーションのアーキテクチャや、クライアントとサーバーの動作については、前掲の記事を参照してください。対象読者 記事は中級以上のWebアプリケーション開発者を対象に、ASP.NETの非同期ハンドラのデザインを説明します。記事の関心の対象は、ASP.NETの非同期ハンドラというデザインパターンのため、対象読者を必ずしもASP.NETを対象として開発されている方に限定していません。 ただし、開発環境としてWindows XPまたはWindows 2003 Serverと、Visual Studio 2005またはVisual Web Developer 2005 Express Editionの利用

  • CUnitによるテスト駆動開発:CodeZine

    はじめに CodeZineでの僕のデビュー記事『Cで実現する「ぷちオブジェクト指向」』、おかげさまでなかなか好評だったようです。まだまだCは現役だと実感しました。 前回に引き続きCのお話です。テストをよりどころに実装をすすめ、信頼できるコードを書くためのプラクティス「テスト駆動開発」(TDD:Test Driven Development)を、Visual C++ 2005 Express EditionとUnit Test Framework: CUnitで行います。対象読者 そこそこのコードは書けるようになったけれど、どうも詰めが甘い/くだらないバグに出くわす/あっちを直すとこっちが壊れ、ぐだぐだになってしまう…そんな症状に悩まされている脱ビギナを目指すプログラマ。テスト、してますか? 「プログラムは思ったとおりには動かない、作ったとおりに動く」 思ったとおりに作ってないと思ったとおり

  • CodeZine>.NETでIEツールバーを作る

    はじめに 今までは、IEツールバーを作成するためには、C++, ATL などといった知識が必要でした。.NETでは、そういった知識は必要なく、Pavel Zolnikov氏が作成したBandObjectsというフリーのクラスライブラリを利用することで、簡単にツールバーが作成できます。 ここでは、サンプルとして、C#でPerformanceCounterを使ったLANの転送速度メーターを作成します。 必要な環境 Visual C# 2003(Visual Studio.NET 2003)以降 BandObjects BandObjectsの入手・ビルド CodeProjectの記事「Extending Explorer with Band Objects using .NET and Windows Forms」より、BandObjectsを入手します。ソースコードにて配布さ

  • GUIツールを利用した「patterns & practices Enterprise Library」の構成:CodeZine

    はじめに 「patterns & practices Enterprise Library」(以下、「Enterprise Library」と表記)は、Microsoftの「patterns & practices」によって提供される、エンタープライズアプリケーションを開発する際によく用いられる機能を提供するライブラリです。 稿では、Enterprise Libraryの使用方法を例を挙げて説明します。 対象読者 .NET frameworkを用いたエンタープライズアプリケーションの開発者。 必要な環境 Microsoft Visual Studio .NET 2003上で動作確認しています。 インストール 以下にEnterprise Libraryのインストール方法を示します。 Enterprise Libraryの入手 Enterprise Libraryは、Mi

  • Windowsフォームの入力チェックを効率化する:CodeZine

    前回は、実行時にユーザーの手で単一行表示から、複数行表示にレイアウトを変更する形で、エンドユーザーを巻き込んだ検索画面のモックアップを作成する手順を紹介しましたが、今回はそれに続き受注画面のモックアップを作成します。受注画面は、新規データの入力と既存データの表示が行えるものとし、今回もまた、実行時にユーザーの手でレイアウトを変更していただきます。 最近のWeb開発は、次々と新しいテクノロジーやコンポーネントが登場し、ますます使い勝手がよく、見栄えのするWebページが作れるようになりました。Infragistics社のNetAdvantage for .NETも、.NET環境で動作する洗練されたUIを提供する上で便利なさまざまなコンポーネントを統合していますが、このたび「2008 Volume 1 日語版」にバージョンアップし、新しいコントロールが追加されています。今回は、その中からWeb

  • JavaScriptでMP3を再生するライブラリの作り方:CodeZine

    はじめに JavaScriptMP3を再生するライブラリ「playmp3.js」の作り方を解説します。MP3の再生にはFlashの機能を利用し、JavaScriptからFlashの関数を呼び出すなど、JavaScriptとFlashの連携方法も併せて紹介します。 Flashファイルの作成には、フリーのFlashコンパイラMTASCを利用しますので、Flashを持ってない人でも応用ライブラリを作成できるでしょう。Flashと連携することでJavaScriptの可能性が広がります。 以下のサイトで、MP3再生のサンプルを試せます。JavaScriptMP3再生するサンプル 対象読者JavaScriptで効果音やBGMを鳴らしてみたい人JavaScriptとFlashを組み合わせて面白いことをやってみたい人 必要な環境FirefoxまたはIE 6以降フリーのFlashコンパイラ MTASC