マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

C#

Raw Socket?

C#

このブログによると2006年あたりにC#でRaw SocketというかRaw IPを使ったプログラムを作っていたらしいが、そのソースコードはすでに紛失済みである。結構貴重なコードを紛失した気がするがすぐに作れそうな気もするので気にしない。theSpokeで公開してたら…

レジスタビュー

なんとなくレジスタビューをつけてみた。あとステップ実行なんかもできるようにした。BreakPointなんかも付けてみようか

Hello World!

C#版x86エミュレータでHello Worldした。 また mov al, [si] inc si という命令をHello Worldのアセンブリ内に見つけたので lodsb に変えておいた

作り方がよくわからない

Visual C#使ってるけど、まだ慣れてないのでGUIプログラムをどうやって作っていけばいいのかよくわかってない。Java版と微妙に構造が変わったりしてる。大丈夫かな?特に意味はないけどスクリーンショットを載せておく

ModR/Mを乗り越えた

ModR/Mを実装したので、ようやく命令の実装に移れる。Java版を追い抜くぐらいの勢いが必要

ModR/M実装中 その2

Modが0のときでR/Mが0〜7の場合の処理を実装した。Modが1、2のときはMod0のときにModR/Mの後ろにある値を取ってきて足すだけなので楽できる。Modが3のときはR/M番目のレジスタを取ってくるだけなので、ものすごく楽である。頑張ろう!

ModR/M実装中

C#版x86エミュレータでModR/Mを実装しているところ。早く命令実装に移りたい

準備が出来上がりつつある

GDT、IDT、PIC、Pagingなどの準備を行った。あとはModR/M用のクラス郡を作ったら命令実装へと向かう

EFlagsはこんな感じに

とりあえずアクセサメソッドはプロパティで using System; namespace vm.register { public class EFlags { private Int32 eflags; public Int32 Value { set { this.eflags = value; } get { return eflags; } } public bool Carry { set { Int32 carryFlag…

移植中...

就職活動で提出する作品の関係でx86エミュレータをJavaからC#に移植中。上2つがJavaのコードで下2つがC#に直したコード。プロパティやインデクサを使っていけばいいのだろうか?C#はあまり使ってないのでよくわからん。C#版ではToStringはオーバーライドし…

プレイヤー認識

C#

KinectSensorのDepthStream.Enable()やSkeletonStream.Enable()を呼び出して機能を有効にして、DepthFrameReadyに追加したイベントハンドラからDepthImageStreamのCopyPixelDataToでデータを受け取るだけ。以下のようにやった DepthImageStream depthStream …

ModR/M対応...

C#

ModR/Mに対応した。画像の2番目の命令でModR/Mを使っている。今回は32bitモードで動かしている

FDD失敗

C#

Fav Driven Developmentに失敗した。ModR/Mが実装できてなかったので、せこい手段にでたが無理だった。80個の命令を実装する予定が40命令しか実装できなかった。しかもせこい! 50〜5F B0〜BF 90〜97 を実装したが、ModR/Mがまだ出来上がってないので、そち…

明日に備えて

C#

TwitterでFav Drivenをした結果、現時点で79命令を明日中に実装しなければいけなくなった。まだ、ModR/Mを実装してないので、かなりキツイ戦いとなる。なんとしてでも今日中にModR/Mを実装しなければ!

今日はここまで進んだ

C#

VMの機能が十分でないので命令の実装がなかなか進まないのだが、それも近いうちに解決するだろう...多分。あとPEヘッダの解析してアプリケーションの解析をしたいものだ

逆アセンブル開始

C#

一部の命令を逆アセンブルしてみた

独自のコントロールを作って描画してみた

C#

UserControlを継承したクラスを作り、OnPaintをオーバーライドして文字列を描画した。こんなやり方でいいのかはわからないけど、とりあえず進めてみた。ファイルを読み込んで、1行に全てのバイナリの16進数表現を描画してみた。次は逆アセンブルした結果を…

久しぶりのC#

C#

WindowsでGUIしたくてC#を久しぶりに使った。ここから始まる新しいプログラム。今はファイル選択ダイアログで選んだファイルの先頭1Byteを16進数を表示してるだけである。

デスクトップにTwitterのTLを表示させてみる

C#

TwitterのTLをデスクトップに表示させてみた。結構邪魔なので使えなさそう。折り返しを入れれば使えるのだろうか? TwitterのTL取得部分 String userName = "hoge"; String password = "hogehoge"; //HttpWebRequestの作成 HttpWebRequest webreq = (HttpWeb…

デスクトップに文字列を描画する

C#

デスクトップの右上に文字列を描画するプログラムを作った。 using System; using System.Drawing; using System.Runtime.InteropServices; namespace Desktop{ class Desktop [DllImport("user32.dll")] private static extern IntPtr GetDC(IntPtr hwnd); …

パケットを組み立てたい

C#

HTTPでサーバーとのやりとり(CookieやPostで送ったデータなど)をプロキシサーバーをたてずに取得したくてRawSocketを使ってるけど送受信してるデータを全て取得するには分割されているパケットを組み立てないと難しそう。できないこともないけど、HTTPヘッダ…

RawSocket

C#

まだほとんど使ってないけど、C#だとRawSocketが簡単に使えることがわかった。でも、IPヘッダやTCPヘッダに簡単にアクセスできるような構造体やクラスは用意されてなさそうなので、ビット演算などを使ってデータを取り出さなければならない。ただ、そのおか…

C# C#

プロフィールにC#を使ってると書いておきながら、このブログでは全く触れてきてなかった。Javaを使いだすとC#をほとんど使わなくなり、C#を使いだすとJavaを全く使わなくなる。これから、C#でRawSocketを使おうとは思ってる。