タグ

ブックマーク / rkx1209.hatenablog.com (6)

  • SEGVという概念が存在しない退屈な世界 - るくすの日記 ~ Out_Of_Range ~

    この記事はKobeUniv Advent Calendar 2015 - Adventar12/6の記事です。 カレンダーではKobeUniversityの現役生または卒業生が自分のやっている事(技術系,理工系に限らず) について自由に書く物です。すごい身内ネタで終わってしまうと思っていましたが予想以上に たくさんの方に参加して頂けてとても嬉しいです。(結構geekな方いるんですねー) 私は普段主に低レイヤー(?)を触っている人間で、具体的にはシステムプログラム7割,セキュリティ3割 ぐらいの割合で活動しています。 で、今回は前者のシステムプログラムについて、デモプログラムを作成しゆるく紹介します。 こんな事ができるよーという簡単なデモを通して、システムプログラミングの面白さを感じて頂ければ幸いです。 (後者のセキュリティについてはカレンダーのもうひとつ記事でまあまあ真面目に書く予定で

    SEGVという概念が存在しない退屈な世界 - るくすの日記 ~ Out_Of_Range ~
    xef
    xef 2019/10/10
  • SAT/SMTソルバを自作してみる話 - るくすの日記 ~ Out_Of_Range ~

    この記事は Kobe University Advent Calendar 2017 - Adventar 17日目の記事です。 1年ぐらい前にC3というSMTソルバをC言語でスクラッチから作ったので、その話でもします。 よりによってなぜSMTソルバをCで書いたかというと、若気の至りでハイパーバイザに組み込んだりして遊んでたからです。 ゲストシステムの検証をランタイムにしてくれる超軽量なハイパーバイザあったらカッコイイじゃないですか。 という割と適当な理由で作ったんですが、労力に対する成果があまりにも見合わなさすぎて、今はアプローチを変えています。 そういうわけで過去の遺物から生まれたC言語製SMTソルバC3なのですが、このままお蔵入りさせるのも何なのでコードの解説とかSMTソルバがどうやって動いてるのかみたいな話をしてみます。 あ あと、私は一介の情報系学生で論理学徒ではないので、ところ

    SAT/SMTソルバを自作してみる話 - るくすの日記 ~ Out_Of_Range ~
  • 高機能バイナリトレーサqiraはどのように実装されているのか - るくすの日記 ~ Out_Of_Range ~

    1. qiraとは qiraとは世界的なハッカー、George Hotz氏 (ジョージ・ホッツ - Wikipedia) によって開発された高機能バイナリトレーサーであり、qiraという名は(QEMU Interactive Runtime Analyser)の略である。 GitHub - BinaryAnalysisPlatform/qira: QEMU Interactive Runtime Analyser 略語を見れば分かるがuser mode QEMUを使用したバイナリ解析ツールであり、ELFなどの実行形式バイナリを実際に動作させて各命令のレジスタ、メモリへの操作を逐次記録する。 これらの記録はweb UIを通して好きな命令位置にカーソルを移動させるだけで見ることができ、その時のレジスタ、メモリの記録が再現される仕組みになっている。ソフトウェアのデバッグやCTFにおけるバイナリ解

    高機能バイナリトレーサqiraはどのように実装されているのか - るくすの日記 ~ Out_Of_Range ~
  • QEMUのなかみ(QEMU internals) part2 - るくすの日記 ~ Out_Of_Range ~

    前回(part1)rkx1209.hatenablog.com の続きです。 part2では仮想IRQ,チップセット,仮想IO,TCGを見ていきます。 多分part2で終わりです。(時間があればまたいつかpart3とか書いてみたいですね...) ではまず仮想IRQから見ていきます。 6.仮想IRQ QEMUにおいてIRQはIRQState構造体で表されます。 (hw/core/irq.c) struct IRQState { Object parent_obj; qemu_irq_handler handler; void *opaque; int n; }; nがIRQ番号でhandlerがIRQ#nに対応するハンドラです。またIRQStateは(include/hw/irq.h)でqemu_irqにtypedefされているため以降はqemu_irqと呼びます。 では前回見ていたマシン初

    QEMUのなかみ(QEMU internals) part2 - るくすの日記 ~ Out_Of_Range ~
    xef
    xef 2015/11/22
  • QEMUのなかみ(QEMU internals) part1 - るくすの日記 ~ Out_Of_Range ~

    ここ一ヶ月ほどQEMUのコードとお戯れしていたのですが、 qemuのソースコードもうすぐ読みきりそうなのでどこかにまとめたいんだけど、qemu internalみたいな記事ってどれぐらい需要あるの— 前代未聞 (@RKX1209) 2015, 11月 9 と言ってみた所なんとなく需要がありそうだったので書きました。 記事ではQEMUの内部実装を追い、具体的な仕組みを見ていきます。もし研究や仕事などでqemuを読む必要がある方や、これから趣味で読んでみようという方はぜひ参考にしてください。 (QEMU internalsというよりはQEMUコードリーディングの方が適切かもしれませんね....) さてここで扱うQEMUはqemu2.4.0でゲストはx86,ホストはx64であると仮定します。 両方共x86系となるとDBTの意味はあまり無く、KVM使ってどうぞという話になるのですが、あくまでコー

    QEMUのなかみ(QEMU internals) part1 - るくすの日記 ~ Out_Of_Range ~
    xef
    xef 2015/11/17
  • 30日でできない 自作Linuxクローン開発 - るくすの日記 ~ Out_Of_Range ~

    この記事は 自作OS Advent Calendar 2014 - Adventar 12/25の記事です。 一ヶ月程前からLinuxカーネルのコードを読み始めたので、解読ついでに自分でもカーネルを作ってみました。 とはいっても、まだ半分も完成してないです() 当初は、30日でできる 自作Linuxクローン開発 を予定していたのですが、 予想以上の規模で、解読とフルスクラッチ開発を併行するのは結構大変でした... という訳で、現在実装できている所まで紹介します。 開発レポジトリはこちらです。 RKX1209/Abyon · GitHub (インストール方法や実行方法はここに書いてます) 実装した機能 プロセススケジューラー Runキュー ハードウェア割り込み(PIC 8259A) 遅延割り込み Tasklet グローバルタイマー(PIT) タイマーリスト 仮想ページング(IA-32 MMU

    30日でできない 自作Linuxクローン開発 - るくすの日記 ~ Out_Of_Range ~
    xef
    xef 2014/12/27
  • 1