情弱ログ

参考にならないので当てにしないでください

12ステップOS自作本の開発環境をGentoo Linux + crossdev + gcc 7.3.0で構築した話

10月の初旬に「12ステップで作る組込みOS自作入門」という本を買いました。Amazon CAPTCHAH8というCPUが乗ったマイコンボード上に組込みOSを動かすという内容で、サボりつつも2ヶ月程度で完成させることができました。 かいつまんでやったことを紹介すると、…

引数の数が関数の実行時間に及ぼす影響を調査した話

x86_64の呼び出し規約では、関数の引数は主にレジスタを使って渡すように定義されている。 主に、というのは引数の数が6個まではレジスタ(%edi、%esi、%edx、%ecx、%r8、%r9)を使って渡し、7個以上の場合はスタックに置いて渡す形式となっているからだ。レ…

ひろしま学生IT勉強会第3回(3/9開催)

speakerdeck.comひろしま学生IT勉強会で発表した資料です。

Linuxの共有ライブラリ呼び出し(呼び出し側編)

Linuxで共有ライブラリの関数を呼び出す際、PLTを経由して関数が呼び出される。PLTとはProcedure Linkage Tableの略で、PLT経由で呼び出す関数のアドレスは動的リンカが解決してくれる。この機構を追ってみた。

Linuxのプロセス実行を見てみる execve(2)編

Linuxのプロセス実行を見てみたクソ長い備忘録。全然まとまってません。

PIE(position-independent executable)なオブジェクトの中身を見てみる

巷ではSpectre/Meltdownが話題になっている.有効な対策として(K)ASLRが挙げられており,これはプロセス実行時のメモリ空間の配置をランダマイズすることで,例えば攻撃者が配置したコードのアドレスへのJMP等を防ぐことができる. 詳しくはシェルコードでグ…

vtableの中身を見てみる

C++でポリモーフィズムを実現するためにvtableと呼ばれる機構が用いられている. だいたいの入門本でvtableという言葉は出てくるものの,実装については特に触れられていないので中身を見てみた.

プログラミング言語が違うと実行バイナリも違うのか検証した話

別々のプログラミング言語で書いたHelloWorld出力プログラムの実行ファイルの中身は同じなのか違うのか気になる感あるな— タナベ (@warito2323) 2017年12月1日こんな話が流れてきたので検証してみる.

Linux Kernelのパケット送信を追う(ソケット作成編)

実績解除のためにsendto(2)のシステムコール発行からe1000ドライバの送信処理までを追いかけてみた.取り急ぎソケット作成までをまとめてみる. なお,Linux Kernelは4.14.0-rc8を対象としている.初めに断っておくとアホほど長い上に備忘録なのでほとんど解…

Hello, World!するアセンブリ

x86_64向けに動作するHello, World!を書いた.長いので続きからにする.

MacでLinux Kernelをcloneするといじってないファイルがmodifiedされていると言われる現象

閲覧用にMac上にLinux Kernelをcloneしたところ、いじってないファイルがmodifiedであると言われて何もできなくなる事態が発生した。 具体的には以下のようなエラーメッセージが出力される。 $ git status On branch master Your branch is up-to-date with …

よく使うEmacs拡張

弊校では学部1年生からEmacsの使用が強制されており、習得度の低い学生が素のEmacsを使わされています。その結果、非常に残念なことにEmacsはただただ不便なだけのエディタとしてその名が知られています。そこで、弊校におけるEmacsの悪印象を払拭し、Emacs…

ELF入門

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年生に送るデバッガ(gdb)の使い方(中級編)

前回の記事でコアダンプからセグメンテーション違反の原因を探す方法を書きました。 今回はデバッガからプログラムを実行することで、実行中のプログラムを一時停止したり変数に何が入っているかを確認してみましょう。

1年生に送るデバッガ(gdb)の使い方(入門編)

長い夏休みが終わって、1年生はプログラミングⅡを履修すると思います。 プログラミングⅡではポインタ、ファイル入出力といった新しい概念を学んでいくことになります。 しかし、これらの発展的な内容は便利であると共にエンバグしやすい部分でもあります。例…

x86_64環境でシステムコールを発行する

「1日待ってください。本物のシステムコールをお見せしますよ。」 と言ってしまったので、C言語からインラインアセンブラを使ってシステムコールを実行することになった時のメモです。

Emacsで保存時に句読点を全角コンマと全角ピリオドに置換する設定

様式か、風習か、日本語で論文を書くときは「、」や「。」は「,」と「.」に置き換えなくてはいけない。 句読点の設定はだいたいどのIMEにもあるメジャーな設定なのでそこまで困ることではないが、グローバルに変更されると他の文章も全て全角コンマ・ピリ…

ブート時に途中から画面が真っ暗で表示されなくなる時のtips

ブートローダの選択画面やブートの途中までは画面に映るのに、ある途端から画面が真っ暗になったり、バックグラウンドで処理は行われているのに画面が停止した際の解決法。 nvidiaのプロプライエタリドライバを使用していることが前提。原因はカーネルのオプ…

glibcの野良ビルド方法

ちゃんとINSTALL読もうね案件

セキュキャンに落ちた解答を晒す

んなもん誰が読むんじゃ まずはセキュリティ・キャンプ合格者のみなさんおめでとうございます。僕は残念ながら落ちてしまいましたが、部内に一人合格者がいたので全滅は免れました。KK君おめでとう&頑張れ。 年齢的に最後のチャンスだったので、落ちた時は…

Gnome3のアプリケーション一覧を汚染された

winetricksでゴニョゴニョといくつかパッケージを入れていたら、Gnomeのアプリケーション一覧(Activities→Show Applications)がバッテン印のアプリケーションに汚染された。 アプリケーション一覧からアプリを起動することはあまりないが、見た目がよろしく…

yosemite上のGentoo/Prefixでmedia-libs/libcanberraのemergeがコケる

誰かバグレポート書いて案件その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…

yosemite上のGentoo/Prefixでx11-libs/gtk+のemergeがコケる

さっきの記事と似たような内容 とりあえずそのままemergeするとこんな感じのエラーが大量に出てコケる。 In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:207, from /Users/vicco/Gentoo/var/tmp/portage/x11-libs/gtk…

yosemite上のGentoo/Prefixでsys-apps/dbusのemergeがコケる

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時のdependency conflict例①

# 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…