タグ

アセンブラに関するsakefのブックマーク (9)

  • ハードウェアの知識が無い人向けのアセンブリ言語の話(draft)

    記事は書きかけなので内容(タイトルすらも)は随時書き換わっていきます。ドラフトのうちは内容の正確性や文書全体としての整合性についても荒っぽい部分が多々あります。ご容赦ください。 はじめに 記事はソフトウェア開発者がハードウェアに近い低レイヤといわれる領域に入門するとき、とくにアセンブリ言語に出会ったときにつまずきがちなことを紹介します。主な対象読者はJavaScriptPythonなどのスクリプト言語などによるアプリ開発からソフトウェア開発に入った、それより下のレイヤになじみのない人です。 筆者は常々アセンブリ言語は技術的にものすごく難しいわけではないものの、学習につまずく人が非常に多いという印象を持っています。その主な原因の一つは、みなさんが普段慣れ親しんでいる人間に使いやすいように作られた高級プログラミング言語(以下高級言語)と、機械に解釈させやすいように作られているアセンブリ言

    ハードウェアの知識が無い人向けのアセンブリ言語の話(draft)
  • セルフホスト可能なCコンパイラを書く

    最近、コンパイラを書くことが流行っているようだ。流行に乗ってやってみたらいろいろな知見が得られたので紹介したい。 コンパイラを書くと一口に言ってもいろいろなスコープがある。ここではC言語を用いてCコンパイラを書くことを選択した。C言語は言語仕様的にコンパクトで広く知られている。また、ツールとしてのCコンパイラも普及している。その場合、自分が書いたCコンパイラで、自分が書いたCコンパイラのソースコードをコンパイルすることが原理的には可能だ。これをセルフホストという。ひとつの到達目標として非常に興味深い。 当初は冬の間に終わらせる予定だったのだが春まで伸びてしまった。しかし、春になっても寒かったり雨で家に居る日が多く、アウトドアシーズンまでに目標のセルフホストを達成することができた。 昔、Cのインタプリタを書いたことがあったが、コンパイラを書くのは、はじめてである。時代も進んで開発手法が変わっ

  • セキュリティキャンプ応募課題で学ぶアセンブリ言語 - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    セキュリティキャンプ応募課題で学ぶアセンブリ言語 - Qiita
  • コンパイラ言語をコンパイルして出来たマシン語の互換性について

    こんにちは。 アセンブラについて調べていたら、機械語はどのようなCPUを使っているか等に強く依存するので互換性が低いということを知ったのですがそれについて疑問な点があったので質問させてください。 ###疑問点 1 コンパイルされ機械語になった時点でほかのCPUとの互換性が無くなるのか? コンパイルされたC言語などの実行ファイルは機械語で出来ておりCPU等に依存するかと思いきや、EXEファイルであればどのCPUを積んだWindwosでも動くので互換性が無くなっているように感じないのですが、最初に書いたように機械語に互換性が無いのであれば動くはずがないということになります。 この質問の答えが「無くなる」だった場合次の質問にお答えください。 ###疑問点 2 コンパイルされた"機械語"であれば、なぜEXE等の機械語で配布して動かすことができるんでしょうか? たとえばSkypeの配布サイトではOS

    コンパイラ言語をコンパイルして出来たマシン語の互換性について
  • アセンブリに触れてみよう - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    アセンブリに触れてみよう - Qiita
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • FLARE Script Series: Reverse Engineering WebAssembly Modules Using the idawasm IDA Pro Plugin

    Introduction This post continues the FireEye Labs Advanced Reverse Engineering (FLARE) script series. Here, we introduce idawasm, an IDA Pro plugin that provides a loader and processor modules for WebAssembly modules. idawasm works on all operating systems supported by IDA Pro, and can be obtained from the idawasm GitHub project. Motivation You may have competed in this year’s Flare-On challenge a

    FLARE Script Series: Reverse Engineering WebAssembly Modules Using the idawasm IDA Pro Plugin
  • シェルコード解析に必携の「5つ道具」

    リバースエンジニアリングのスタンダード「IDA Pro」 リバースエンジニアリングには、逆アセンブラである「IDA Pro」がよく用いられます。IDA Proは逆アセンブラのデファクトスタンダートといっても過言ではありません。正規版はHex-Rays社から販売されていますが、非商用の利用に限っては、旧バージョン(Ver.5.0)を無償版として利用することができます。 最新版(Ver.6.1)と比べ、無償版では対応しているファイルフォーマットやCPUアーキテクチャが少なかったり、組み込まれているプラグインやデバッガの数が少なかったりと、いくつか機能的に劣っている部分があります。とはいえ、シェルコード解析やマルウェア解析をこれから始めてみよう、という方であれば問題ないかと思います。解析をバリバリ行えるようになり、無償版では物足りないと思ったときに最新版の購入を検討するとよいでしょう。 IDA

    シェルコード解析に必携の「5つ道具」
  • 第1回「レジスタ」を知るとCPUの細かな処理が見えてくる

    全5回の予定で,アセンブラによるプログラミングを解説します。アセンブラを理解すると,コンピュータを見る視点がぐっと深くなります。この連載では,私が「なんでキャット」というの姿になり,担当のTデスクと一緒にアセンブラの世界をご案内しましょう。 矢沢 久雄/グレープシティ なんでキャット(以下,キャット):Tデスクはどんなプログラミング言語ができるのニャ? Tデスク:C言語とJavaです。 キャット:な~んだ,高水準言語だけだニャ。アセンブラはできないのかニャ? Tデスク:今どきアセンブラを使っている人なんてほとんどいませんよ。 キャット:確かにそうだけど,アセンブラを知っていれば,コンピュータの理解が深まり,高水準言語で記述するプログラムの品質も向上するんだニャ! Tデスク:どうしてですか? キャット:たとえば,「obj」というオブジェクトが持つ「myField」フィールドに10を加える処

    第1回「レジスタ」を知るとCPUの細かな処理が見えてくる
  • 1