るくすの日記 ~ Out_Of_Range ~

主にプログラミング関係

34c3 CTF Write up

この記事は CTF Advent Calendar 20日目になる予定だった記事です。 大遅刻すみません。 少し前に34c3 CTFの過去問を解いたのでそれのwrite upでも。 いや数日前にあった35c3 CTFじゃねーのかよと突っ込まれそうですが...12/20に去年の過去問を終わらせて気…

システムソフトウェアに対する攻撃の歴史と傾向 - 高度標的型攻撃や国家に支援された攻撃の仕組み -

A History of system-level offensive security researches: How is your system compromised by nation state hacking, APT attack はじめに 企業や個人に対するサイバー攻撃の頻度は年々増加の一途を辿っているが、これらはskiddyによる悪戯程度の物から、…

SAT/SMTソルバを自作してみる話

この記事は Kobe University Advent Calendar 2017 - Adventar 17日目の記事です。 1年ぐらい前にC3というSMTソルバをC言語でスクラッチから作ったので、その話でもします。 よりによってなぜSMTソルバをCで書いたかというと、若気の至りでハイパーバイザに…

カーネルエクスプロイト入門2 - 特権モードを利用した権限昇格の仕組み -

0. はじめに カーネルエクスプロイト入門記事part2です。 前回part1では、環境構築とLinuxカーネルのメモリ管理の基礎について、実際のエクスプロイトでのユースケースを通して説明しました。rkx1209.hatenablog.comさて、part2では実際にLinuxカーネルエク…

カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 -

0. はじめに 本記事は、Linuxを対象としたカーネルエクスプロイトの入門記事です。 カーネルエクスプロイトというのは、Linuxや*BSD、Windowsを始めとするカーネル自身の脆弱性を突くエクスプロイトです。 基本的にカーネルはシステム内で最高権限を持つ特権…

参照カウンタオーバーフローを利用したLinuxカーネルエクスプロイト(CVE-2016-0728)

本記事では、Linuxカーネルの鍵保存サービスの脆弱性(CVE-2016-0728)、およびそれを利用した権限昇格エクスプロイトについて解説します。 Linuxカーネルの参照カウンタオーバーフローはCVE-2016-0728とCVE-2014-2851が有名ですが、今回は前者を題材に扱いま…

低レイヤーの歩き方

この記事は Kobe University Advent Calendar25日目の記事です。低レイヤー技術(後述)をこれから学びたい人向けの入門記事です。 自身の経験を踏まえ、より多くの人達にこのレイヤーに興味を持ってほしくて書きました。 決して卒論がやばくてAdvent calendar…

高機能バイナリトレーサqiraはどのように実装されているのか

1. qiraとは qiraとは世界的なハッカー、George Hotz氏 (ジョージ・ホッツ - Wikipedia) によって開発された高機能バイナリトレーサーであり、qiraという名は(QEMU Interactive Runtime Analyser)の略である。GitHub - BinaryAnalysisPlatform/qira: QEMU …

弾幕ゲー開発用スクリプト言語を自作した話

なんとなくスクリプト言語を作ってみたくなったので、東方のような弾幕ゲーで敵の行動,弾幕パターンを記述するためのスクリプト言語を作ってみました。 (最近のゲーム業界ではわざわざDSLを作るより、LuaやHaxeのような汎用的なスクリプト言語と組み合わせる…

KVMのなかみ(KVM internals)

VMMの高速化について学ぶ過程でKVMのコードを読んだので、 メモ代わりに内部構造の解説記事を書きました。KVMはqemuと連携して動作するため、以前私が書いたQEMU internals( http://rkx1209.hatenablog.com/entry/2015/11/15/214404 ) も合わせてご参照くだ…

Intel GVT-gにみるMediatedパススルーを用いたGPU仮想化

この記事は システム系論文紹介 Advent Calendar 2015 - Adventar 17日目の記事です。 USENIX'14 ATCにてintelのKun Tian, Yaozu Dong,David Cowperthwaiteによって発表され、XenGTやKVMGTとしてごく最近に実装された新しいたGPU仮想化方式、GVT-gについて見…

パイプラインモデルを用いたシンボリックテイント解析の高速化

この記事は情報セキュリティ系論文紹介 Advent Calendar 2015 - Adventar9日の記事です。 TaintPipe: Pipelined Symbolic Taint Analysis [Ming,et al. USENIX SEC' 15] https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-ming.…

SEGVという概念が存在しない退屈な世界

この記事はKobeUniv Advent Calendar 2015 - Adventar12/6の記事です。本カレンダーではKobeUniversityの現役生または卒業生が自分のやっている事(技術系,理工系に限らず) について自由に書く物です。すごい身内ネタで終わってしまうと思っていましたが予想…

QEMUのなかみ(QEMU internals) part2

前回(part1)rkx1209.hatenablog.com の続きです。part2では仮想IRQ,チップセット,仮想IO,TCGを見ていきます。 多分part2で終わりです。(時間があればまたいつかpart3とか書いてみたいですね...)ではまず仮想IRQから見ていきます。6.仮想IRQ QEMUにおいてIRQ…

QEMUのなかみ(QEMU internals) part1

ここ一ヶ月ほどQEMUのコードとお戯れしていたのですが、qemuのソースコードもうすぐ読みきりそうなのでどこかにまとめたいんだけど、qemu internalみたいな記事ってどれぐらい需要あるの— 前代未聞 (@RKX1209) 2015, 11月 9と言ってみた所なんとなく需要があ…

2014年の振り返り

2014年ももうすぐ終わるので、一年を振り返ります。 (こうでもしないと何やってたかすぐ忘れるので...)2014年 [1月] 集合論とか位相の勉強してた気がする。まだ数学やってた [2月] レンダリングとかアニメーションとかのコード書いてた 3Dゲーム作った気がす…

30日でできない 自作Linuxクローン開発

この記事は 自作OS Advent Calendar 2014 - Adventar 12/25の記事です。一ヶ月程前からLinuxカーネルのコードを読み始めたので、解読ついでに自分でもカーネルを作ってみました。 とはいっても、まだ半分も完成してないです() 当初は、30日でできる 自作Li…

セキュリテイキャンプ2014 参加記

8/12~8/16に行われたセキュリティキャンプ2014に参加しました。 クラスはソフトウェアセキュリティクラスです。以下参加記。[1日目] 何とかして会場に着く。みんな結構早くついていて、すでにたくさん人がいた。 とりあえずいろんな人と名刺交換をする。首…

Debug Interface Access SDKを使って内部関数の名前解決を行う

IDAを使ってソフトウェアの解析をしてるといつも思うんですが、デバッグ情報って便利ですよね。IDAはイメージファイルをロードした後にpdbの検索も行っていて、シンボル情報とかのラベルを自動で埋め込んでくれます。これがあるおかげで、アセンブリをあまり…

RPGのようななにか

RPGのようななにかを作りました。 ソースはここにおいてあります RKX1209/java-RPGTest · GitHub 本体はこちらからダウンロードできます https://dl.dropboxusercontent.com/u/33821276/RPGTest.jar~プレイする前に読んでください~(操作説明) 矢印キー....…

作図問題についてあれこれ

この記事は数学 Advent Calendar 2013 - Qiita [キータ] 12/24の記事です。 こんにちは。久しぶりのブログ更新です。最近、開発やら競プロやらをほっぽり出して 数学ばかりやっています。数学AdventCalendar24日目という事で、今日は作図問題について書こう…

ζ(4)の計算

たまには数学関係の事でも書こうかな~。しかしダラダラと定義やら証明やらを書き連ねるのも面倒なので、比較的簡単な計算問題について書きます。 今回はζ(4)の計算。ゼータ関数とはで表される関数ζのことです。つまりζ(4)はで表される級数の事です。 では収…

文字列でダンガンロンパOP やってみた

こんな動画を見つけたので↓ 私も某アニメのOPでやってみました。ようつべに上げてます↓ (ちょっと目に悪そうなので回覧注意です) 文字列でダンガンロンパ OP - YouTube OpenCVを使ってゴニョゴニョした後、JavaScriptに埋め込んで連続再生させてるだけです。…

ライフゲーム作ってみた

先日観ていた動画にこんな物がありました。 ライフゲームの世界【複雑系】 ‐ ニコニコ動画:GINZA 一応ライフゲームの存在は以前から知っていたのですが、ここまで奥が深いとは.... 動画を観ている内に、自分でもやってみたくなったのでソフトを作ってみまし…

SRM 563 Div2 hard SpellCardsEasy

[問題文] TopCoder Statistics - Problem Statementカードの並びが与えられる。カード[i]にはlevel[i]とdamage[i]が書いてある。カード[i]を選んだとき、相手にdamage[i]のダメージを与え、カード[i]よりも右に置いてあるカードlevel[i] - 1枚を取り去る。(…

Dynamic Programming 演習(2)

前回(動的計画法(Dynamic Programming)演習 - るくすの日記 ~ Out_Of_Range ~)の続き。今回は該当するDiv2Hardのうち13問解きました。 [Div2](SRM354) 1000:UnsealTheSafe dp[i][j] := i-1番目にjを押すようなパスワードの総数 sum += dp[i - 1][keypad[ny][…

Dynamic Programming 演習

タイトルのまんまです。 TopCoder SRMの過去問から解法に「Dynamic Programming」が含まれている問題をレベルで昇順にソートして解いていきます。 該当するDiv2Medium全18問中15問解きました。(残り3問は、dpでふつう解かないだろうみたいな問題だったので別…

PKU 2112 Optimal Milking

PKU

[問題] 2112 -- Optimal Milking牛とミルクマシーン(適当)が辺で接続されている。全ての牛をミルクマシーンに到着させたい。この時もっともたくさん歩く牛の距離を最小化せせよ。ただし、ミルクマシーンはm匹の牛しか処理できない。 [解法] WarshallFloyd + …

PKU 1949 Chores

PKU

[問題文] 1949 -- ChoresN個の仕事がある。それぞれにかかる時間と、その仕事より必ず先に終わらせなければならない仕事k個の情報が与えられる。 仕事は並列で行うことができる。N個の仕事を終わらせるのにかかる時間を最小化せよ。 [解法] トポロジカルソー…

AOJ 1001 Binary Tree Intersection And Union

AOJ

[問題文] AIZU ONLINE JUDGE [解法] 構文解析 慣れていないのでかなり時間がかかった。 こんなやつの解析 <exp>::= "(" , <exp> , <exp> , ")" | "" 結構楽しい。 struct E{ int l,r,id; int over; E(){ l = r = -1 ,id = 0; over = 0;} }; int now; int p = 0; E memo[400]</exp></exp></exp>…