鬱猫のつぶやき

鬱猫が日々思っていることをつづります

OSED 受験記

はじめに Offensive Security 社のエクスプロイト開発の認定資格である OSED を受験して合格しました。 OSED 自体最近できたばかりの認定資格ということがあり、日本人による合格体験記がまだなさそうでしたので、ブログ記事としてまとめることにしました。 …

Python 型アノテーション

はじめに Python 3.5 から導入された型アノテーションについての自分用のメモになります。 型アノテーション Python は動的型付けの言語です。それに起因して、実行時に思わぬエラーに遭遇することが少なくありません。 実行時に遭遇するエラーをできるだけ…

bear を使った compile_commands.json 生成

はじめに clangd を使う際、JSON Compilation Database (compile_commands.json) が必要になります。CMake を使ってビルドするプロジェクトの場合は、CMAKE_EXPORT_COMPILE_COMMANDS=1 を指定すれば簡単に export できますが、そうでない場合は別のツールを…

AArch64 アセンブリ UBFM UBFIZ UBFX

はじめに 最近はArmv8アセンブリを読むことが多いのが、ビット演算系の命令を頻繁に忘れて何回もググっているので、一回まとめておく。 公式ドキュメント、擬似コード (or 具体例) を載っけて欲しい。 ubfm Unsigned Bit Field Move の頭文字をとって ubfm …

RISC-V Day Tokyo 2019 に参加してきた

日立製作所 日立馬場記念ホール にて行われたRISC-V Day Tokyo 2019に参加してきた。聞いて思ったことを忘れないうちに書き残しておこうと思い、記事にした。 個人的に気になったこと まずは、将来的にRISC-Vが機能をスイスに移すことを計画しているとの話。…

分子動力学シミュレーションコードをGoで書いてみる

はじめに 仕事でGoを時々使う。静的型付け言語で比較的動作も高速・書きやすいというのがあり重宝している。 高速と書いたが、あるアプリケーションを別々の言語で実装して速度を比較した場合、ざっくりと C/C++, Fortran, Rust > Go > Java > Python, Ruby …

Embenchを試そうとしたが動かせなかった

Dhrystone に変わるフリーのCPUを性能を測るベンチマークとして Embench が David Patterson によって提案されているのを、RISC-V Workshop Zurich で知った。発表スライドとビデオはこのリンクの"Embench TM: A Free Benchmark Suite for Embedded Computin…

Malware Data Science: Attack Detection and Attributionを読んだ

Malware Data Scienceを読んだ。 マルウェア解析のBasicから入り、機械学習の入門・マルウェア検知器への応用事例・深層学習のイントロダクションとその適用事例などが紹介されている。 機械学習のプロフェッショナルには正直物足りない内容だと思う。ある程…

ChiselのハードウェアデザインからVerilogのRTLを生成し、Treadleでシミュレーションを実行する

ものすごくタイトルが長くなってしまった。調べても意外と出てこなかったのでメモしておく。 VerilogのRTLを生成する方法 この記事を参考に以下のように書いてみた。 package GenVerilogTest import chisel3._ class Top(in0Bits: Int, in1Bits: Int) extend…

Chisel3でメモリにテキストデータを読み込む際の手順

やり方がよくわからず結構苦戦した。一応ドキュメントにそれっぽい記載はあるんだけども。 chisel3.util.experimental.loadMemoryFromFileという関数を使うのが簡単。例えば、 class InstMemory(memfile: String) extends Module { val io = IO(new Bundle{ …

RISC-V Linuxでptrace使う場合の注意点

「たのしいバイナリの歩き方」の本やバイナリの歩き方に掲載されているptraceのサンプルプログラムが、RISC-V QEMU上で動いているLinuxではどうもうまく動かない。その原因を調査していた。 うまく動かないと悩んでいたコードはバイナリの歩き方に掲載されて…

QEMU RISC-V Fedora の Dockerfileを更新した

RISC-V を簡単に試すことができるDockerfileを作成した。Qiitaの記事からDockerfileの更新したもの。Docker Hubから利用できる。 前回からの変更点として、ブートローダにbblが使われなくなっていることがあげられる。READMEにも以下のような記載がある。 Th…

教育用RISC-V Davis In-Order CPUの論文を読む

Davis In-Order CPUというカリフォルニア大学デービス校のコンピューターアーキテクチャの授業で使われている、RISC-V ISAを実装したCPUがある。少し前に論文として上がっていたので読んでみた。 論文のPDFはこちら。 カリフォルニア大学デービス校では長い…

Zephyr OSを使ってみた

Zephyr OSというリアルタイムOSを使うことになったので、その環境構築時の手順のメモ。 SDKを導入し、環境変数を設定する。 $ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.10.1/zephyr-sdk-0.10.1-setup.run $ ./zephyr-sdk-0.…

spike-dasmの逆アセンブル結果がおかしい件について

risv-isa-simに付随しているspike-dasmの逆アセンブル結果におかしい点を見つけた。 $ echo "DASM(0x00000000)" | spike-dasm c.addi4spn s0, sp, 0 と表示されるんだが、これ unimp が表示されるのが適切。 c.addi4spn に関しては即値が0以外であることが、…

Practical Binary Analysisを読み始めた 1

先週の連休からPractical Binary Analysisを読み始めた。 www.amazon.co.jp 会社の先輩に進められて読み始めたが、なかなか良い。最初のチャプターでCのソースコードをコンパイルして実行ファイルが生成されるまで書いてあるのは良かった。 その他、bdf libr…

hope-RIPEを使ってみる その2

昨日、hope-RIPEをSpikeシミュレーターで動かしてみたんだが、Stack Buffer Overflowを利用したROPが成功しないという不可解な現象に遭遇した。SSPが有効になっているからかと思ったけども、Makefileを見る限りではそうではないみたいだし、これは何だろうと…

hope-RIPEを試してみる その1

Runtime Intrusion Prevention Evaluator (RIPE) という、脆弱性攻撃に対する防御のカバレッジを測定するためのツールがある。これを用いると種々のパラメータを変化させながら種々の脆弱性攻撃用コードを生成、そのコードを実行し脆弱性攻撃の成否をレポー…

『うつを甘く見ていました』を読んだ。

鬱病のこともそうだが、それよりも結婚するとか家族になるってどういうことだろうということの方を考えさせる内容だった。 漫画の内容に関して、旦那さんの非難が集まっていたらしいが、正直そこまで責めるべきでもないような気がする。(筆者もあとがきで夫…

Maixduino を使ってみる

先日、Amazonで注文していたSipeed Maixduinoキットが届いたので、遊んでみる。 開発環境のセットアップ gnu-toolchain があるので、これを落としてきてビルドする。 $ git clone --recursive https://github.com/kendryte/kendryte-gnu-toolchain $ cd kend…

はじめまして

本日からはてなブログをやることになりました。 これまでブログの代わりとしてQiitaを利用していましたが、プログラミング以外のことも投稿したいということがあったこと、はてなでもMarkdown記法が使えての記事投稿ができるということがあり、移行すること…