GhidraのScriptまわりについて

はじめに 先日、NSAがリバースエンジニアリングツールのGhidraを公開した。 OSSであることや、Hex-rays社が高価で販売しているようなデコンパイラがついていることから注目されている。 SREを「Site Reliability Engineering」ではなく「Software Reverse En…

Nginxのalias traversalについて

Nginxのalias traversalとは Nginxではaliasディレクティブを使って locationディレクティブで指定したURIのパスをファイルシステム上のパスに対応させることができます。 以下の例のようにconfigを書くと、/var/www/app/static/以下にあるファイルに/static…

私的Dockerメモ

Dockerは便利だけど、ぼくにとっては普段そんなに使うツールではなくて、よくコマンドを忘れてしまう。 覚えられるように、すぐ見返せるように、メモしておく。 Dockerイメージに関するコマンド 一覧 $ docker images ビルド 直下にあるDockerFileからビルド…

ISUCONがきっかけでSinatraにコントリビュートした話

ISUCON8の予選へ向けてSinatraで作られたwebアプリケーションを高速化する方法を模索する最中、 ErubisというERBテンプレートエンジンが使われているコードを見かけました。 これがきっかけでより高速なeRubyテンプレートエンジンであるErubiをサポートする…

IDAの便利プラグイン3選!!!

IDA

これはセキュリティツール系 Advent Calendar 2018 の25日目の記事です。 この記事では便利なIDAのプラグインを3つ紹介したいと思います。 findCrypt findCryptは暗号に使われる定数をgrepすることで、どんな暗号が使われているか判別するIDAプラグインです…

リアルモードでも32bitのレジスタを使うことができる

この記事は自作OS Advent Calendar 2018の21日目の記事です。 自作OSのアドカレなので、まずは作っているCPUエミュの話をしましょう。 CPUエミュを作っている話 そもそもなぜCPUエミュを作っているのかというと、 Golangで書かれたファミコンのエミュのコー…

PinなどのDBIツールでトレースした結果をIDAにマッピングするプラグイン「Lighthouse」を使ってみた

IDA

Lighthouseとは Lighthouse とは、DBIツールでトレースすることで得たコードカバレッジデータを見やすくIDA内の独自のViewに表示し、IDAのDisassembly View、Graph ViewにマッピングしてくれるIDAプラグインである。 github.com DBI(Dynamic Binary Instrum…

Rails appのRuboCopのconfigにはGitHub社で使われているものを使うとよさそう

RuboCopとは RuboCopはRuby向けのコードフォーマッターで、書いたコードがスタイルガイドに準拠しているかシュッとチェックできる。 github.com -aでauto fixすることができてとても便利であるが、 結構うるさいのでconfigである.rubocop.ymlを調整しないと…

Android/iOS端末、アプリを扱うのに便利なコマンド、aliasたち

Android/iOS端末、アプリについて取得したい情報があるとき、ついついAndroidやiPhoneの端末のUIからがんばってしまいがちだが、 コマンドでやると楽に取得できる。 そんなときに使える、Android/iOSアプリを開発するときや、解析するときに便利なコマンド、…

MagSafe2のケーブルを熱収縮チューブで補修した

MagSafe 2のケーブルの皮膜が劣化して、中の電線が見える状態になったので熱収縮チューブで補修した。使い始めて5年なので寿命かな。 チューブをケーブルで巻いてはんだごてで温めるだけ。 手持ちの熱収縮チューブが見当たらなくて新しく買うことにしたけれ…

Homebrewで入るNASMは古すぎて、aptで入るNASMとは挙動が違う

自作CPUエミュの動作確認をしているときに、Homebrewで入るNASMとaptで入るNASMの挙動が違うことに気がついた。 挙動の違いを見る 簡単なコードをアセンブルして違いを見る。 BITS 32 org 0x7c00 sub esp, 16 aptで入るNASM Ubuntuにaptで入るNASMを使って、…

LLVM IR、LLVM bitcodeを扱うコマンドたちのメモ

LLVM IR、LLVM bitcodeを扱うコマンドをよく忘れるのでメモしておく。 CのコードをLLVM IR、LLVM bitcodeに変換するコマンド、LLVM bitcodeをインタプリタから実行するコマンド、コンパイルするコマンドなどを書いておく。 以下のCのコードを変換していく。 …

LLVMのPassを題材にした0CTF CTF quals 2017のChoicesを解いた

最近、LLVMに興味があって、いろいろ調べているうちにLLVMのPassのreversingの問題を見つけたので解いてみた。 write-ups-2017/0ctf-quals-2017/reverse/Choices-297 at master · ctfs/write-ups-2017 問題 All roads lead to Vegas. Compile: clang -Xclang…

技術書展4でTomoriNao Vol.2を頒布してきた!!

11時20分くらいに着いたら整理券が1918番で結局入れたのは12時半ごろだった。予想以上に人が多い。 13時頃には200冊全部売れてよかったですね。 TomoriNao vol.2完売!!ありがとうございます!!!kindle版をよろしくお願いします!!!! #技術書典4— たけ…

rails 5.1.6 のアプリをrails 5.2.0にアップデートしたときに困ったとこメモ

rails 5.1.6 のアプリをrails 5.2.0にアップデートしたときに、いろいろハマったのでメモ。 rails側 rails側での作業メモ。 cannot load such file -- bootsnap/setup とりあえず rails app:updateしてみる。 route.rbなどは上書きしたらダメだけど、boot.rb…

技術書展4で TomoriNao vol.2 頒布します!!!

技術書展4で TomoriNao vol.2 頒布します!! 場所は「お16」です!!! techbookfest.org ぼくは、「アンチデバックのためのデッドコードをLLVM optimizerで緩和してみる」という題で書きました。 LLVMのパスを使った難読化/難読化緩和の研究がちょくちょく…

JSONを扱いやすくするコマンド(jq, gron)のメモ

JSONを扱いやすくするコマンドのjq、gronのメモ。 jq コマンド jq コマンドはJSON向けのawkのようなコマンド。 インストール方法(on Mac) $ brew install jq 使い方 パイプで渡されたJSONデータにフィルターをかけることができる。 GitHub APIを使ってリポ…

株式会社はてなに入社しました

株式会社はてなに入社しました株式会社はてなに入社しました - hitode909の日記

IDAプラグインの更新をサボっていたら割れIDAへのリンクを貼られた

IDA

IDA 7.0が昨年9月くらいに出たので、IDA 6.xのプラグインはIDA 7.xに対応するべく更新する必要がありました。 更新されたAPIへの差し替え、32bitアプリケーションだったのが64bitアプリケーションになったことによる変更などなど.... www.hex-rays.com naoと…

Rails appのコードを変更したときに、Guardに自動でRuboCop、RSpecを実行してもらう

Guardとは Guardはファイルに変更があったときに、タスクを走らせてくれるgemで、コードを変更したときに、静的なコードチェックをしてくれるRuboCopやRSpecで書かれたテストを実行させることができる。RuboCopやテストコードを随時走らせてコーディングして…

LLVM bitcodeのCFGを生成する

LLVM bitcodeとは LLVM内ではLLVM IRという中間言語表現が用いられる。 ソースコードをLLVM IRコードに変換したあと、そのLLVM IRコードをターゲットのアーキテクチャのバイナリに変換...という流れでコンパイルは行われる。 LLVM bitcode は LLVMの独自バ…

死んだサーバーで動いていたアプリの引っ越しの歌

記憶の欠片に描いたnginx.confを見つめて 跡切れた想い出重ねる 変わらない夢に Oh 死んだHDD どれだけ涙を流せば 貴方を忘れられるだろう Just tell me my life 何処まで歩いてみても 涙で明日が見えない以上、X JAPANのRusty Nailの替え歌でした。www.yout…

2017年のOSSへのコントリビューションまとめ

年末ということで今年のOSSへのコントリビューションを振り返る。来年はもっとやっていきたい。 Metasploit github.com GSoCにMetasploitで参加していたので、それで結構プルリクを送った。 GSoC 2017にmetasploitで採択された。 - 脱力系日記 Pull Requests…

Linux Rootkit Internalsという題でLTをしてきた

12/23にあったCyber Wargame Christmas Party (大和セキュリティ勉強会)でLinux Rootkit Internalsという題でLTをしてきた。 atnd.org speakerdeck.com GitHubにLinux rootkitのコードがいろいろ上がっていて、それが結構おもしろくて最近ちらちらコード読…

機械学習を使っているアンチウイルスを機械学習を使ってバイパスする「gym-malware」の紹介

マルウェアの分類のために使われている機械学習のblind spotを潰すために、機械学習を使っているアンチウイルスを機械学習を使ってバイパスする研究が最近活発になってきている。 この記事では、black hat USA 2017で発表されたBot-Vs-Bot-Evading-Machine-L…

chrome.windows.createで作られるwindowはフレームを含むのでOS毎にサイズを変えないといけない

最近、メインのOSをWindowsに移しつつあって、以前つくったChrome拡張の favurl - Chrome ウェブストア をWindowsで使ってみると、URL をツイートするwindowがうまく表示されなかった。ここでのwindowはbrowser_actionで出るpopup、つまりツールバーのアイコ…

golangでご覧!wて言いたくてgolangでHTTPサーバ書いた

go

golangでご覧!wて言いたくてHTTPサーバー書いた。PythonのSimpleHTTPServerっぽくなった。名前がgoranなので「golangのgoranでご覧!w」と言えるようになった。 tkmru/goran: simple http server. 雑に以下のようなかんじで使える。localhostにしないと使えな…

ActiveResourceを使ったRailsアプリをRedisで高速化した

ActiveResource とは ActiveResourceはRESTful APIをマッピングしActiveRecord のモデルとして利用可能にするgemで、これを使うとActiveRecordでDB操作を行うのと同じようにRESTful APIを利用できます。 github.com ボトルネックになることもある ActiveReso…

コマンドラインオプションをflagでパースしたとき-hを指定するとexit status2と出てしまう

go

どういうこと golangではコマンドラインオプションをflagパッケージを使ってパースすることができる。 しかし、オプションに-h、--helpを指定すると、以下のようにexit status2と出てしまう。 なぜこんな仕様なのか... $ go run flagSample.go -h Usage: -n …

複数人のSSHの鍵をGitHubに登録している鍵を使ってシュッと鯖にいれる

各ユーザーがGitHubに登録している公開鍵は公開されていて誰でも見れるのでこれを使う。 大体の人はGitHubに鍵を登録しているだろうし、これを使えばシュッと鯖にSSHの公開鍵を設定することができて便利。 以下のようにcurlコマンド一発で複数人のSSHの鍵を…