【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

Win32

MS Officeの数式をTeXに変換

Microsoft Officeで数式を書くのに慣れてTeX形式で入力するのが苦痛になって来たので、変換プログラムを作りました。Windows専用です。 mml2tex.fsx [Raw形式で表示] → 保存(UTF-8) 【注】自分の必要とする範囲しか実装していません。変換部は200行程度で不…

全部入りbinutils

スタート低レイヤー#2でid:shinichiro_hさんに全部入りのbinutilsが作れるということを教えて頂きました。さっそく試してみました。MSYS(MinGW)用のバイナリを置いておきます。 binutils-2.23.2-msys-cross-all.tar.xz (14.6MB) /usr/localに展開するだけで…

ELFの動的リンク(2)

前回はELFファイルの構造を示しながら、動的リンクに必要な処理を説明しました。 ELFの動的リンク(1) 今回はPythonで実装した簡易ローダを見ながら、実際の処理を追っていきます。 elf-simple.py 32bit Windows上でELFファイルを読み込み、動的リンクを解決…

PEの.idataをアセンブラで考える

PEの.idataをアセンブリ言語で記述しながら説明します。PEからDLLを参照するには.idataセクションにDLL名とシンボル名を記述します。実行時にWindowsのローダが.idataを見てLoadLibraryとGetProcAddressに相当する処理を行い、取得したアドレスを.idataに書…

PEの.idataを図解(ILTなし)

昨日.idataの記事を書きましたが、その図を眺めていて「ILTがなくても起動するのではないか?」と思ったので、試しに削ったら起動しました。図も少し簡単になります。これについてつぶやいたところコメントをいただきました。@7shi Delphi で作られたアプリ…

PEの.idataを図解

以前PE勉強会を開催したとき、.idataの構造をうまく説明できませんでした。最近また説明する機会があったので、改めて図を描いてみました。バイナリと並べて構造をフラットに描きました。この描き方は、Excel VBAで作成したコンパイラで使っていたものです。…

第5回 PE勉強会 MIPS編 完了報告

報告が大変遅くなりましたが、id:n7shi:20111112で告知した第5回 PE勉強会 MIPS編が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: peben05.pdf, peben05.docx, peben05.xlsx サンプル: https://bitbucket.org/7shi/peben/downloads (05-201…

第5回 PE勉強会 MIPS編

Windowsの実行ファイル (EXE/DLL) で使われているPE (Portable Executable) 形式についての勉強会です。バイナリいじりの基礎から始めて、EXEファイルやDLLファイルをコンパイラなしで作って動かすことを目標にします。PEをきっかけにして、各種マシンコード…

第4回 PE勉強会 完了報告

id:n7shi:20110418で告知した第4回 PE勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: peben04.pdf, peben04.docx サンプル: https://bitbucket.org/7shi/peben/downloads (04-20110618) 参加者のtwitterリスト: http://twitter.com/…

EXEを作る (4)

id:n7shi:20110421の続きです。リフレクションを用いて、クラスの中のクラスを追えるようにします。 https://bitbucket.org/7shi/peben/src/6368e0962f3f/04/04/

EXEを作る (3)

id:n7shi:20110420の続きです。フィールドを1つずつ指定して書き込むのは面倒なので、リフレクションで自動化します。 https://bitbucket.org/7shi/peben/src/6a8b74715084/04/04/

EXEを作る (2)

id:n7shi:20110419の続きです。バイナリの中をオフセット指定でベタ書きするのは問題があります。名前でアクセスするためクラスを定義します。まずDOSヘッダです。 https://bitbucket.org/7shi/peben/src/dd0d83d89032/04/04/

EXEを作る (1)

id:n7shi:20110418で告知した第4回 PE勉強会用にサンプルの準備を始めました。進捗状況は以下のリポジトリの04フォルダで確認できます。 https://bitbucket.org/7shi/peben/src 第3回(id:n7shi:20110416)では、簡単なプログラムならC++を本格的に勉強して…

第4回 PE勉強会

Windowsの実行ファイル (EXE/DLL) で使われているPE (Portable Executable) 形式についての勉強会です。バイナリいじりの基礎から始めて、EXEファイルやDLLファイルをコンパイラなしで作って動かすことを目標にします。PEをきっかけにして、x86のマシンコー…

第3回 PE勉強会 完了報告

id:n7shi:20110227で告知した第3回 PE勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: peben03.pdf(全ページ), peben03-1.docx(1ページ), peben03-2.xlsx(2ページ以降) サンプル: https://bitbucket.org/7shi/peben/src/902f63…

第3回 PE勉強会

Windowsの実行ファイル (EXE/DLL) で使われているPE (Portable Executable) 形式についての勉強会です。バイナリいじりの基礎から始めて、EXEファイルやDLLファイルをコンパイラなしで作って動かすことを目標にします。PEをきっかけにして、x86のマシンコー…

第2回 PE勉強会 完了報告

id:n7shi:20110117で告知した第2回 PE勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: peben02.docx, peben02.pdf (第1回目参加者のご意見を参考に書き直しました) 参加者のtwitterリスト: http://twitter.com/7shi/peben (私が把…

第1回 PE勉強会 完了報告

id:n7shi:20110108で告知した第1回 PE勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: peben01.xlsx, peben01.pdf 参加者のtwitterリスト: http://twitter.com/7shi/peben (私が把握している範囲内、他の回も含む) Togetter まとめ…

第2回 PE勉強会

※定員増強のため会場を変更しました。id:n7shi:20110108で初心者を対象としたバイナリいじり入門としてPE勉強会を企画したところ、予想以上の反響があり定員をオーバーしてしまいました。実習形式のため一度に説明できる人数にも限界があるので、一週間後に…

1.0リリース

独自言語Andromedaのコンパイラver.1.0をリリースしました。 ソース閲覧: https://bitbucket.org/7shi/andromeda/src/95cc549d01b4 ダウンロード: https://bitbucket.org/7shi/andromeda/downloads ライセンス: パブリックドメイン 開発当初から自分自身のコ…

第1回 PE勉強会

※定員増強のため会場を変更しました。※増強後もまたオーバーしたため、一週間後に同じ内容の勉強会を開催します。 ⇒ id:n7shi:20110117初心者を対象とした、Windowsの実行ファイル(EXE/DLL)で使われているPE(Portable Executable)形式についての勉強会を…

コンパイラ移植

Excelで動くコンパイラ(id:n7shi:20100519)をOpenOffice.org Calcに移植しました。マクロを使用しているため、セキュリティを中にしてご利用ください。 ooo-exe-4.ods (スクリーンショット) 以下のアーキテクチャのバイナリを出力できます。 Windows (x8…

Brainfuckコンパイラ

南関東開発機構さんがBrainfuckインタプリタを公開されています。 南関東開発機構 : Brainfuckのインタプリタを作ってみました これをコンパイラにしてみました。Win32(x86)ネイティブのEXEを出力します。 http://gist.github.com/531154 インタプリタ処理を…

マウスやキーボードの自動操作

WindowsではSendInput()というAPIでマウスやキーボードの自動操作が可能です。検索してもあまりサンプルが出てこなかったので、参考までにソースを貼ります。指定したスクリーン座標をクリックして[Ctrl]+[C]を押したことにするコードです。

二重起動禁止と通知

昨日C#で作ったものと同じようなものをC言語で実装してみました。二重起動判定はMutexではなくFindWindow()で行っています。なるべく簡単に実装するため、.NETリモーティングの代わりにWM_SETTEXTを投げています。

インポートライブラリ解析ツール

インポートライブラリからシンボル名と序数を調べるツールを作成しました。標準C++で作成したため、UNIX環境でも動きます。 ソース implib.cpp ライセンス パブリックドメイン ターゲット 汎用(標準C++)

カレントディレクトリを変更するラッパー

ちょっとした必要に迫られてカレントディレクトリを変更するラッパーを作りました。

Windows 2000 Serverに自動ログオン

Virtual PCのWindows 2000 Serverで実験していて、毎回ログオンするのが面倒になりました。レジストリでAutoAdminLogonを"1"に設定すれば次回起動時には自動ログオンできるのですが、1回きりで設定がクリアされてしまいます。 何か方法があるのかもしれませ…

JIT

なぜか無性にJITがやりたくなりました。原理としてはヒープに確保したメモリにコードを出力してcallするというものです。 Windows XP SP2からはNXビットが有効になったため、NXビットに対応したCPUではヒープに生成したコードを実行できません。しかしVirtua…