プログラミングメモ 以下の記述はすべて、当方が学習する際の備忘録として書いているものです。 記述には間違いがあるものとお考えください。 内容に対する保証は行いませんし、内容についていかなる責任も負いませんので、 その旨をご了承いただいた上で、お読みください。 IEで表示させた時に画面レイアウトが崩れ、横方向のスクロールバーが出る場合があります。 こうなった時はリロード(更新)してください。
プログラミングメモ 以下の記述はすべて、当方が学習する際の備忘録として書いているものです。 記述には間違いがあるものとお考えください。 内容に対する保証は行いませんし、内容についていかなる責任も負いませんので、 その旨をご了承いただいた上で、お読みください。 IEで表示させた時に画面レイアウトが崩れ、横方向のスクロールバーが出る場合があります。 こうなった時はリロード(更新)してください。
Phrack Magazine (http://phrack.org/phrack/55/P55-08) の off-by-one exploit を読みました。要約しておきます。 void func(const char* sm) { char buffer[256]; for(int i=0; i<=256; ++i) { // 255が正解 buffer[i] = sm[i]; } } int main(int argc, char** argv) { func(argv[1]); return 0; } このような、1バイトだけオーバーフローするbugのあるコードを書いてしまい、更に引数 sm に自由なバイト列を設定できる場合、それがどのようにして arbitrary code execution に繋がるかが書いてあります。 以下、簡単な解説です。 buffer[256] には
x86の解説をいざ始めてみると,どうもblogという媒体はやりにくいので別ページで進めることにしました.すいません.まとめ直すまでしばらくお待ちください.あと基本的なことばかり続いたので,ちょっとマニアックネタに走ってみます. というわけで突然ですがクイズです.そこそこ高い難易度に設定したつもりですが,いかがでしょう.初心者の方は全然分からなくても大丈夫です.あえて曖昧な記述をしている部分もあります.後半の答えは凄いものがあるといいなあ.あと,難問奇問募集中. 以下は断りがない限り, 環境は32bit OS上のPentium4以降のx86 CPU 関数の呼び出し規約は__cdecl 配列は16byte alignmentされていて複数の配列はオーバーラップしていない ループは4の倍数と仮定してよい ものとします.CPUに依存する場合は明記してください. Q1(5点) 符号なしeaxの値を4
C とアセンブラ Cを知るためにはアセンブラ(機械語)の知識があることが望ましいと言われている。しかし現在ではアセンブラの解説書はほとんど見かけない。もっともアセンブラを1から学ぶのはよほどの動機付けがないと難しいであろう。昔はメモリが少なくCPUも遅かったので機械語は必須であった。 この講座ではC コンパイラが出すコードを見てアセンブラの勉強をすることにする。 ただしここで扱う CPU は Intel のいわゆる x86 系のものである。 いくつかのアセンブラ出力をみると最適化なしのものはとんでもないコードが多くて勉強には有害と思えるほどである。最適化した方を主に見てほしい。 アセンブラ入門(未完成) 文字列表示 C のソース アセンブラのソース 解説 足し算 Cのソース アセンブラのソース 解説 最適化(-O2) 問題1 条件文 C のソース アセンブラのソース 解説
通常Intel系のアセンブラは、Intel Syntaxと呼ばれる文法を使用していますが、GNU AssemblerはAT&T Syntaxを使用しています。そして、AT&T System V/386アセンブラの文法は、インテル アセンブラの文法と非常に異なっています。BSD kernelのアセンブラ部分はAT&T Syntaxが使われているので、これらの違いについて説明しておきます。 なお現在の、GNU AssemblerはIntel Syntaxもサポートしており、Intel ModeとAT&T Mode双方の変更が可能となります。 '.intel_syntax'ディレクティブを指定する事によりIntel Mode '.att_syntax'ディレクティブを指定する事によりAT&T Mode
Examples in this article are created using the AT&T assembly syntax used in GNU AS. The main advantage of using this syntax is its compatibility with the GCC inline assembly syntax. However, this is not the only syntax that is used to represent x86 operations. For example, NASM uses a different syntax to represent assembly mnemonics, operands and addressing modes, as do some High-Level Assemblers.
作者ホームページサービス(hp.vector)は終了いたしました。 長らくのご利用、ありがとうございます。 ご不明な点があれば、お問い合わせページをご覧の上、お問い合わせください。 ※15秒後にトップページに戻ります。 (c) Vector HOLDINGS Inc.All Rights Reserved.
はじめに. アセンブラを使って Linux のプログラミングで遊んでみます.アセンブラには NASM を使用して,カーネルを直接利用することにします. いまさらアセンブラでプログラムを作成することは,時代錯誤と感じる人も 多いかもしれません.「アセンブラでプログラミングなんて職人芸でしょう」 と思うかもしれません. 20年前では趣味のプログラミングは BASIC か アセンブラしか選択肢がありません でしたが,今ではPerl, Ruby からアセンブラまでの間に非常に多くの言語があって, アセンブラは普通では不要な最下層の知識となっていると思います. 10BaseT のツイストペアケーブルのインピーダンスを気にする人はほとんどいない ようなものでしょうか? アセンブリ言語の学習で最も困難なのは,最近では書籍が見つからないこと かもしれません. …と書いていましたが、また増えてきているようで
目指せプログラマー!にようこそ。 当サイトはこちらに引っ越しました。 お手数をおかけしますが、上記サイトへご移動くださいませ。
アルゴリズム入門はアルゴリズムを独学したい人のページです。アルゴリズムってなに?という人からフローチャートの書き方、ソートなどの一般的なアルゴリズムを解説しています。練習問題なども収録しています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く