10月の初旬に「12ステップで作る組込みOS自作入門」という本を買いました。Amazon CAPTCHAH8というCPUが乗ったマイコンボード上に組込みOSを動かすという内容で、サボりつつも2ヶ月程度で完成させることができました。 かいつまんでやったことを紹介すると、…
x86_64の呼び出し規約では、関数の引数は主にレジスタを使って渡すように定義されている。 主に、というのは引数の数が6個まではレジスタ(%edi、%esi、%edx、%ecx、%r8、%r9)を使って渡し、7個以上の場合はスタックに置いて渡す形式となっているからだ。レ…
speakerdeck.comひろしま学生IT勉強会で発表した資料です。
Linuxで共有ライブラリの関数を呼び出す際、PLTを経由して関数が呼び出される。PLTとはProcedure Linkage Tableの略で、PLT経由で呼び出す関数のアドレスは動的リンカが解決してくれる。この機構を追ってみた。
Linuxのプロセス実行を見てみたクソ長い備忘録。全然まとまってません。
巷ではSpectre/Meltdownが話題になっている.有効な対策として(K)ASLRが挙げられており,これはプロセス実行時のメモリ空間の配置をランダマイズすることで,例えば攻撃者が配置したコードのアドレスへのJMP等を防ぐことができる. 詳しくはシェルコードでグ…
C++でポリモーフィズムを実現するためにvtableと呼ばれる機構が用いられている. だいたいの入門本でvtableという言葉は出てくるものの,実装については特に触れられていないので中身を見てみた.
別々のプログラミング言語で書いたHelloWorld出力プログラムの実行ファイルの中身は同じなのか違うのか気になる感あるな— タナベ (@warito2323) 2017年12月1日こんな話が流れてきたので検証してみる.
実績解除のためにsendto(2)のシステムコール発行からe1000ドライバの送信処理までを追いかけてみた.取り急ぎソケット作成までをまとめてみる. なお,Linux Kernelは4.14.0-rc8を対象としている.初めに断っておくとアホほど長い上に備忘録なのでほとんど解…
x86_64向けに動作するHello, World!を書いた.長いので続きからにする.
閲覧用にMac上にLinux Kernelをcloneしたところ、いじってないファイルがmodifiedであると言われて何もできなくなる事態が発生した。 具体的には以下のようなエラーメッセージが出力される。 $ git status On branch master Your branch is up-to-date with …
弊校では学部1年生からEmacsの使用が強制されており、習得度の低い学生が素のEmacsを使わされています。その結果、非常に残念なことにEmacsはただただ不便なだけのエディタとしてその名が知られています。そこで、弊校におけるEmacsの悪印象を払拭し、Emacs…
C言語が書ける、アセンブラが吐き出すアセンブリコードが分かる、でもHello, worldするバイナリは何が書かれているか分からない…。というか、バイナリの実行って何?っていう疑問を解決したいバイナリ初心者のメモです。 今回はreadelfコマンドは知っていて…
あるインタフェースのリンク状態を確認するために、netlinkソケットを使ってカーネルからメッセージを受信するサンプルがnetlink(7)に載っています。 struct sockaddr_nl sa; memset(&sa, 0, sizeof(sa)); sa.nl_family = AF_NETLINK; sa.nl_groups = RTMGRP…
前回の記事でコアダンプからセグメンテーション違反の原因を探す方法を書きました。 今回はデバッガからプログラムを実行することで、実行中のプログラムを一時停止したり変数に何が入っているかを確認してみましょう。
長い夏休みが終わって、1年生はプログラミングⅡを履修すると思います。 プログラミングⅡではポインタ、ファイル入出力といった新しい概念を学んでいくことになります。 しかし、これらの発展的な内容は便利であると共にエンバグしやすい部分でもあります。例…
「1日待ってください。本物のシステムコールをお見せしますよ。」 と言ってしまったので、C言語からインラインアセンブラを使ってシステムコールを実行することになった時のメモです。
様式か、風習か、日本語で論文を書くときは「、」や「。」は「,」と「.」に置き換えなくてはいけない。 句読点の設定はだいたいどのIMEにもあるメジャーな設定なのでそこまで困ることではないが、グローバルに変更されると他の文章も全て全角コンマ・ピリ…
ブートローダの選択画面やブートの途中までは画面に映るのに、ある途端から画面が真っ暗になったり、バックグラウンドで処理は行われているのに画面が停止した際の解決法。 nvidiaのプロプライエタリドライバを使用していることが前提。原因はカーネルのオプ…
ちゃんとINSTALL読もうね案件
んなもん誰が読むんじゃ まずはセキュリティ・キャンプ合格者のみなさんおめでとうございます。僕は残念ながら落ちてしまいましたが、部内に一人合格者がいたので全滅は免れました。KK君おめでとう&頑張れ。 年齢的に最後のチャンスだったので、落ちた時は…
winetricksでゴニョゴニョといくつかパッケージを入れていたら、Gnomeのアプリケーション一覧(Activities→Show Applications)がバッテン印のアプリケーションに汚染された。 アプリケーション一覧からアプリを起動することはあまりないが、見た目がよろしく…
誰かバグレポート書いて案件その3。 とりあえず % emerge libcanberraすると canberra-gtk-module.c:28:22: error: gdk/gdkx.h: No such file or directory canberra-gtk-module.c: In function 'window_get_desktop': canberra-gtk-module.c:303: error: 'A…
さっきの記事と似たような内容 とりあえずそのままemergeするとこんな感じのエラーが大量に出てコケる。 In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:207, from /Users/vicco/Gentoo/var/tmp/portage/x11-libs/gtk…
OSX 10.10.2な環境でsys-apps/dbusをemergeするとconfigure phaseでコケる。 configure: error: launchd support explicitly enabled but not available こんな感じのエラーログが出る。原因はlaunch.h内でインクルードしているxpc/base.hでclangでしか使え…
# emerge -pvuDN @world とかしたらこんな感じのconflictが起きた。 x11-base/xorg-server:0 (x11-base/xorg-server-1.15.99.902-r2:0/1.15.99.902::gentoo, ebuild scheduled for merge) conflicts with x11-base/xorg-server:0/1.15.1= required by (x11-d…