はなおか じった 世界遺産の近くに住んでます。 Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011 x64 環境なのかどうかの判定をする方法。 OS のバージョンを見ても、x64 なのかどうかはわかりません。例えば、32ビット版 Windows XP のバージョンは 5.1 ですが、64ビット版の場合は 5.2 になります。しかし、Windows Server 2003 も、5.2 です。なので、別の方法で調べます。 MSDN を調べると、IsWow64Process 関数(英語)が見つかります。しかし、「64ビット OS 上で動く64ビット アプリケーションの場合は、この関数は FALSE を返す」のだそうです。一応、それなりに作り込めば、32ビット アプリケーションと64ビット アプリケーションは、同じコー
SpiderMonkey JavaScript Shell SpiderMonkey is the JavaScript engine used in Firefox 2.0. On this page, you can download the SpiderMonkey engine as a stand-alone JavaScript shell. Download SpiderMonkey for Windows: To download the JavaScript shell, download the SpiderMonkey executable and the Cygwin DLL to the same folder. SpiderMonkey executable Cygwin DLL Download SpiderMonkey for Mac OS X: To do
こんにちは!近頃咳と痰と鼻水と鼻づまりがすごく多い、金曜日の天使ことhasegawayosukeです。 ActivePerlで任意のx86バイナリを実行しているようなときには、バイナリ部分のデバッグに結構手間取るときがあります。あまり準備に手間をかけずに気合いだけでad-hokに修正したいときは my $x86 = "\x8b\x44\x24\x08......"; print unpack( 'H2' x length( $x86 ), $x86 ); のように、実行するバイナリコードを目視で確認すればよいのですが、jmp命令が入るとアドレスの計算などがけっこう面倒になります。そんなときはやはりデバッガを使ってデバッグしたくなるのが人情なので、ActivePerlとデバッガをうまく連携させる方法を考えました。 Visual Studioがインストールされた環境では、「C:\Windows
This document provides instructions on how to use Perl on Windows and call functions between Perl and x86 code. It discusses using ActivePerl to run Perl on Windows, calling DLL functions from Perl using Win32::API, calling x86 code from Perl using signal handlers, and calling Perl subs from x86 code. Examples are provided for each technique.Read less
昨日開催された Shibuya Perl Mongersテクニカルトーク#11で「Windowsユーザのための初めてのPerlプログラミング」というテーマでLTしてきました。なかなかゆっくり説明はできなかったので、デモとして用意しておいたコードを貼っておきます。 (追記)プレゼンテーション資料もアップロードしておきます。 http://www.slideshare.net/hasegawayosuke/windowsperl-1330816 ちなみに、「そのPPTのテンプレよく見つけたね」と言われたんですけど、手頃なテンプレがなかったので自分でハートとか並べて作ったやつです。 Perlからx86コードを呼びたいときの例。Win32 APIの SetConsoleCtrlHandler を使ってバイナリコードをシグナルハンドラに設定し、GenerateConsoleCtrlEvent で C
ワームアラート:Big Yellow ■ 原版: Worm Alert: Big Yellow http://research.eeye.com/html/alerts/AL20061215.html ■ 原版リリース日: 2006年12月15日 (太平洋標準時) ■ 翻訳日: 2006年12月18日 (日本標準時) ■ 重要度: 高 ■ 対象システム: Symantec Client Security for Windows 3.1 - 3.1.0.394 3.1 - 3.1.0.400 3.0 - 3.0.2.2000 3.0 - 3.0.2.2001 3.0 - 3.0.2.2010 3.0 - 3.0.2.2020 3.0 - 3.0.1.1007 3.0 - 3.0.1.1000 Symantec Antivir
C#のように実行環境が高度に抽象化された言語でプログラミングしているとき、実行マシンのCPUを判別してプログラムの処理を分岐したいときがよくでてくると思います。 そういうときに困ってしまわないように Acme::x86::CPUID みたいなのを作ってみました。 using System; using System.Runtime.InteropServices; class Acme_x86_CPUID { [DllImport("user32")] private extern static UInt32 EnumWindows(UInt32 p, UInt32 lParam); [DllImport("kernel32")] private extern static UInt32 VirtualAlloc( IntPtr lpAddress, UInt32 dwSize, UInt
ActivePerl (Windows版) には DynaLoader が付属しているので、今日からすぐに DynaLoader::dl_install_xsub を利用したプログラミングが出来ます。 簡単なメッセージボックスを表示するPerlプログラムは以下になります。 #!/usr/bin/perl use DynaLoader; sub GetProcAddress { my ($DLL, $API) = @_; my $path = "$ENV{SystemRoot}\\system32\\$DLL"; my $libref = DynaLoader::dl_load_file($path); pack "L", DynaLoader::dl_find_symbol($libref, $API); } my $x86 = "" . "h\0\0\0\0" . "h" . pack(
とあるプログラムがDEP(データ実行防止機能)に引っかかって動かないのでインストーラでこのプログラムだけDEP無効にしようと思ったのですが挫折しました。 最初はInstallScriptでぜんぶやろうと思ったのですが,ハードウェアDEPのON/OFFを取得するところでExecQuery("Select * From Win32_OperatingSystem")から返ってくるオートメーションのコレクションにアクセスする方法がないので中止。もっと詳しく言うと,Itemメソッドの引数に食わせるべきパスが環境ごとに異なるのでまったく現実的でないのです。しょうがなくVBScriptで実装することに。 特定のプログラムでDEPを無効にするにはHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\L
こんにちは。阿久津です。早いものでもう2月も終わり、Windows Vistaがプリインストールされたコンピュータも少しずつ登場してきました。しかし、そのなかには販売価格を抑えるためなのか、物理メモリが512MB程度しか実装されていないデスクトップPCや、パフォーマンスに首をかしげざるを得ないGPUを実装したノートPCなども盛りだくさん。 もちろん万人が最速のGPUや、多数の仮想環境を満足に扱える大量の物理メモリを必要としないのは言うまでもありませんが、Windows VistaをWindows XPと同じようなパフォーマンスレベルに近づけるには、やはりVista Premium Readyで定義されているシステム要件を満たしているべきではないでしょうか。 もっとも、このような仕掛けはWindows XP時代も同じように多く見かけました。当時も発売当初は、Windows 2000が動作する
Perl で Win32::API プログラミング入門 を参考にしました。 Python 2.5以降には、ctypes が付属しているので、 今日からすぐに Win32API を利用したプログラミングが出来ます。 # ctypesは、動的リンク/共有ライブラリ内の関数呼び出しを可能にします。 # Linuxなど、Windows以外のOSでも使用することができます。 簡単なメッセージボックスを表示するPythonプログラムは以下になります。 #!C:\Python26\python # -*- coding: cp932 -*- import ctypes ctypes.windll.user32.MessageBoxA(0, 'Hello, World!', 'Message', 0) # ユニコード版 # ctypes.windll.user32.MessageBoxW(0, u'Hel
前の記事『VB.NETでマシン語を使う3』を書いていて思ったのだが、これは要するにvbscriptからマシン語を呼び出していることだということに気が付いた。ならばいっそのこと、vbscriptからマシン語を呼び出すためのCOMオブジェクトを用意しておけば、将来的にもしかしたら有用になるかも(?)しれない。で、作ってみた。 次のようなコードで、vbscriptからマシン語が扱えるようにした。ここでは、ebx, edx に与えた値の積を、eaxとして返すようなマシン語を扱ってみた。 option explicit dim ml,label1,label2,ebx,edx set ml=CreateObject("dwtools.NET.MachineLanguage") ebx=cInt(InputBox("ebx?")) edx=cInt(InputBox("edx?"
ActivePerl (Windows版) には Win32::API - Perl Win32 API Import Facility - metacpan.org が付属しているので、今日からすぐに Win32::API を利用したプログラミングが出来ます。 簡単なメッセージボックスを表示するPerlプログラムは以下になります。 #!/usr/bin/perl use Win32::API; my $MessageBox = Win32::API->new("user32", "MessageBoxA", "NPPN", "N"); $MessageBox->Call(0, "Hello, World!\n", "Message", 0); このプログラム実行すると、「Hello, World!」と書かれたWindowsメッセージボックスが表示されます。 これを Win32::API
これは嬉しい!Growl for Windowsの2.0 BETAがリリースされています。 これまではGoogle Codeにあるプロジェクトの物を使っていましたが、どうやらこれの正式版がリリース(とは言ってもBETAですが)されていました。 試しにこれまでのコードで試してみてもNetGrowlであれば問題なく動作しました。 そして気になっていたアイコンですが... 出るようになっています! ただ、MacのGrowlの様にMac専用のインタフェースを使っているのではなく、TCP/IP接続による独自プロトコルGNTPを使っています。 ちょっと調べた感じだと、簡単なソケット通信で実現出来そうだったので適当ですがコマンドラインプログラムを作ってみました。 /** * msvc: cl growlc.c * mingw32: gcc -o growlc.exe growlc.c -lws2_32
はじめに Windowsアプリケーションは、通常APIを利用することによって実現されています。たとえ.NETやMFCなどを利用して作成されたプログラムであったとしても、内部的にはすべてWindowsAPIが呼び出され処理されているというのは周知の事実です。プログラムがWindows上で動作している限り、何かしらのカタチでAPIが使われていることは確かなのです。では、今回はそのAPIをフックすることを考えてみます。「Wizard Bible vol.15」の「リバースエンジニアリング」にて、私はAPIフックについて少しだけ触れましたが、今回はそのAPIフックについてのさらに深い話題となります。あらかじめ必要な知識は、Windowsプログラミングに多少の知識があることと、特にDLL関連に詳しいことです。あと「Wizard Bible vol.10」の「常駐プログラム隠蔽テクニック」も読んでおい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く