タグ

binaryに関するkoko1000banのブックマーク (6)

  • 4命令プロセサで"どう書く" - .mjtの日記復帰計画

    あらすじ : http://d.hatena.ne.jp/mjt/20110125/p2 というわけで、JCC / ADD(C) / NOR / STOREの4命令しかないプロセサで各種操作をどう書けるのかを考えるコーナー。 以下の例を見れば、この4命令が如何にギリギリかわかるはず。。 (命令の紹介) 元ネタ( http://read.pudn.com/downloads42/sourcecode/embed/145720/mcpu-doc.pdf )では以下の4命令を紹介している。 JCC = (Jump if Carry Clear) キャリーフラグがセットされていなかったら、ジャンプする。どちらの場合もキャリーフラグをクリアする。 ADD = レジスタに、指定された番地のメモリ内容を加算し、キャリーフラグをアップデートする。 NOR = レジスタと指定された番地のメモリ内容のNORを

    4命令プロセサで"どう書く" - .mjtの日記復帰計画
  • めくるめくギリギリCPUの世界 - .mjtの日記復帰計画

    追記 : ↓のmcpuがネタ元にしているmprozは拡張され、SCSIインターフェースやビデオ出力、マルチタスクOSさえ備えたxprozになっている。http://www.bitlib.de/pub/xproz/ 詳細はドイツ語PDFしかないが、アーキテクチャは英語txtで読める。 prev: http://d.hatena.ne.jp/mjt/20100912/p2 世間には、MISC - Minimal Instruction Set Computerと呼ばれるジャンルのCPUが有る。RISCのRはReducedなので、Minimalというくらいならどれくらい少いのか。 まず、OISC - One Instruction Set Computerが有る。 http://en.wikipedia.org/wiki/One_instruction_set_computer コンピュータを構

    めくるめくギリギリCPUの世界 - .mjtの日記復帰計画
  • バイナリ解析に関するツラツラ - Dlog 隔離館

    「実行ファイルの解析ってどーやるのっ!」 「解析やってみたいよー」 「どこの学科に行けば勉強できるの?!」 などのような質問をよく受けるので、ひとつの個人的な道筋を書いてみます。 とりあえず今回は実行ファイル解析編。アセンブリ楽しいよアセンブリ。 (最後の方には実行ファイルに限らず、いろいろな解析系のリンクをまとめています。) 最初の入門 なんだかんだで一番分かりやすくて「解析してる!」っていう実感が沸きやすそうなのは、crackmeかなあと思うのです。 解析魔法少女美咲ちゃん マジカル・オープン! このは実にいやらしいすばらしい・・・入門の入門と言えようぞ・・・((( 実際問題とても分かりやすく、「16進数って何?」というレベルの人でも頑張れば問題ない構成だと思います。途中までは。 とりあえず半分ぐらいまで熟読してみると、第一歩を踏み出す準備ができるのではないでしょうか。 むしろ、2歩

    バイナリ解析に関するツラツラ - Dlog 隔離館
  • Pythonでいろんなバイナリファイルを覗いてみる – taichino.com

    プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく

  • Wataru's memo(2008-03-05)

    ● [Thoughts] プログラマの教養は manual pages に宿る (その4) Linux/GNU 開発環境の役者が揃ったところで、実際にプログラムのビルドに挑戦してみましょう。 最初に binutils ありき 全ての環境において、もっとも原始的かつ基的な開発ツールは、アセンブラとリンカです。昔のアセンブラは、そのまま実行可能ファイルを出力できていたのですが(a.out の名前は Assembler OUTput に由来)、GNU 開発環境ではアセンブラ (as: ASsembler) が出力したオブジェクトファイルから、リンカ・ローダ (ld: linker LoaDer) が実行可能ファイルを出力します(Netwide Assembler: NASM を利用すれば、アセンブラ単体で実行可能ファイルを生成可能)。 アセンブラ (as) とリンカ・ローダ (ld) は、GN

  • バイナリファイルを解析する

    Perlといえばテキスト処理や正規表現が得意で、バイナリを扱うような話についてはあまり聞かない印象があります。Perlが持つ関数pack/unpack等でもバイナリ処理は可能ですが、今回はData::ParseBinaryを使ってバイナリファイルを気軽に解析してみましょう。 基 ファイルからストリームを作る 解析したいファイルをData::ParseBinaryで扱えるストリームに変換します。 use Data::ParseBinary; my $stream = CreateStreamReader(File => $file_handle); 解析したい構造を定義する Struct関数で解析したい構造を定義します。Struct以下には基データ型やコンテナ型、ビット/バイトパディング型、制御構文型等を使用できます。各型に指定したラベルが解析結果として得られるハッシュのキーとなります。

  • 1