You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
この記事はTSG Advent Calendarの21日目の記事として書かれたものです。 CTFやらでReversingをしていると、いつも見るframe_dummyやinit、本質ではない、的な感じでスルーをしているんですが、それなりに気になるところでもあり、少し深く見てみようかなと思います。 今回は、とりあえず #include <stdio.h> int main(void) { printf("advent calendar 2016\n"); return 0; } このソースコードをコンパイルして、中身を調査していきたいと思います。 $ gcc hello.c -o hello $ uname -a Linux vagrant-ubuntu-trusty-64 3.13.0-101-generic #148-Ubuntu SMP Thu Oct 20 22:08:32 UTC
Defcon2016のbaby-re、write-upを見ていると、私のように真面目に連立方程式を解いているパターンの他に、angrというフレームワークを使って自動解析して解いているパターンが多く見受けられました。そこで、angrの勉強をしてみました。 angr公式: angr, a binary analysis framework angrインストール方法: https://github.com/angr/angr-doc/blob/master/INSTALL.md □angrとは? angr is a framework for analyzing binaries. It focuses on both static and dynamic symbolic ("concolic") analysis, making it applicable to a variety of t
Angr¶ AngrAngrとはAngr公式日本語訳解説 angr Management基本的(簡単な)な使い方インポート解析対象のバイナリファイルを指定関数一覧を取得任意の関数アドレスを取得するシンボルへのパスを分析初期状態(プログラム実行時の状態)を作成する「SimMemoryAddressError」のエラーが出る時は、LAZY_SOLVES をdisableにすると良いらしい。初期状態の時にメモリやレジスタを弄る条件を指定して実行(その1)条件を指定して実行(その2)実行結果の1番めをダンプ 実際に使ってみるMemo ただいま勉強中 Angrとは¶ angr is a framework for analyzing binaries. It focuses on both static and dynamic symbolic ("concolic") analysis, maki
はじめに ARM が純正で ARMv8 アーキテクチャのシミュレータを配布していることを知ったので、さっそく動かしてみた。 動作確認環境 Ubuntu 12.04.4 LTS 64bit 版 シミュレータのダウンロード 公式サイト からダウンロードできるが、ユーザ登録が必要。それが済むと、ARM V8 Foundation Platform (Linux) というところに Download ボタンがあるので、そこからダウンロードできる。このときに住所とか入力フォームが出てくるが、必須ではないのでそのまま次に進める。 実行してみる 展開すると Foundation_Platformpkg というディレクトリができる。 内容はこんな感じ $ tree Foundation_Platformpkg ├── doc │ ├── DUI0677E_foundation_platform_ug.p
ARMも64bitが当たり前になりつつある昨今ですが、一般人には動かせる環境が無いです。。 とりあえずですが、2014年6月現在、ARM社からFastModelというシミュレータが落とせるのでLinux-PCをホストとして遊ぶことができます。 いい時代になったもんです。 で、ファーストコンタクトとして、とりあえずの動かし方がなんかわかりにくいのでまとめてみました。 動かすのに必要なもの [ホスト環境] Ubuntu 12.04(64Bit) (ほかのLinuxでもできるかもしれない。64Bitは必須の模様) 入手方法 以下より、ARM V8のファウンデーションモデルを入手します。 http://www.arm.com/ja/products/tools/models/fast-models/foundation-model.php から、「今すぐダウンロード」でダウンロードできます。 (要
スタート低レイヤー#2でid:shinichiro_hさんに全部入りのbinutilsが作れるということを教えて頂きました。 さっそく試してみました。MSYS(MinGW)用のバイナリを置いておきます。 binutils-2.23.2-msys-cross-all.tar.xz (14.6MB) /usr/localに展開するだけで使えます。 $ tar xvf binutils-2.23.2-msys-cross-all.tar.xz -C /usr/local ビルド方法 MSYS(MinGW)では途中でエラーが出ました。調べるのが面倒だったのでNetBSDのMinGWでクロスコンパイルしました。 $ mkdir all $ cd all $ ../binutils-2.23.2/configure --enable-targets=all --enable-64-bit-bfd --
MSYSはWindowsでgccを動かすためのミニマムなUNIX風環境です。最新版のMSYS2はArch Linux由来のpacmanを搭載するなど大幅に使いやすくなっています。 勉強会で一斉にインストールすることを想定して、インストール後の設定について説明します。 ※ 設定は好みが別れる部分もありますが、よく分からない時にとりあえずやっておけば便利だと思われるものを紹介します。 インストール方法 本家に書いてある通りです。 https://msys2.github.io/ 手順5.と6.の環境が大幅に書き換わる場合は close するよう求められます。ターミナル(mintty)をウィンドウ右上の[×]ボタンで閉じて、スタートメニューから MSYS2 Shell を開いて作業を続行します。 【注】ショートカットに登録されているバッチファイルがなくなって MSYS2 Shell が開けなくな
CTF分科会第一回 CTFとは CTFはCapture The Flagの略で、平たく言えばコンピュータを題材にした謎解きのようなものである。フラグと呼ばれる文字列が問題のどこかに隠されているので、問題となっている題材の脆弱性やなんらかのトリックを見つけて、フラグを見つけだすのがCTFの大筋である。 具体的には、不適切な暗号を破ったり、プログラムに含まれる脆弱性を突いて、フラグとなる文字列を見つけ出す。 このとき、「どんな脆弱性があるか?」を見つけ、そしてその脆弱性を「どのように使うとフラグを手に入れることができるか?」を考え、競うことになる。 IT関連の競技でいうと、競技プログラミングや、Kaggleのようなデータ解析の競技などがあるが、CTFもその一つであり、CTFは基本的にチーム戦で行われる。 CTFとは、に関してはすでに十分に色々な資料がある(ので僕が書く必要はなかったが書いてしま
なんだけど、リトルエンディアンなので、実際にはひっくり返ってる。 eflagsとかで表現されるが、setする時は$psになる。 状態表示 (gdb) i r 中略 eflags 0x202 [ IF ] 設定 set $ps=0x242 オリジナルな.gdb.init¶ set disassembly-flavor intel set follow-fork-mode child set history save on set history filename ~/.gdb_history set history size 32768 set history expansion on define xall i r eip esp ebp eax x/5i $eip x/32xw $esp end document xall Stack and disas helper end defin
バイナリ関連の機能を一通り提供するフレームワークradare2,通称r2(d2はない模様)による静的解析をざっくりと紹介する.CLIベースの使い方はいろんなサイトが詳しくやっているから,Visual Modeの使い方を中心に解説する. radare2について radare2について軽く説明する. radare2は64ビットオフセット対応の16進バイナリエディタとして,2006年から開発が始まった.途中でportable reversing frameworkになり,更に,いつの間にかradareからradare2へとバージョンアップしている.経緯は知らない.バイナリエディタとして使われているところを見たこともやったこともない・・・. x86からxtensaなどのマニアックなアーキテクチャまで対応し,基数変換ツール(rax2)やアセンブラ(rasm2),バイナリ比較プログラム(radiff2
There is no #6 and #7 because I had no my session at that time. #10 and #11 are the same.
これから2回に渡って、ELFの動的リンクについて見ていきます。 ※ 試験的に文中の図はインラインSVGで描いています。(ソース) ELFファイルの中はセクションとセグメントで二重に分割されています。属性が共通するセクションをグループ化したものがセグメントです。セクションはリンカ、セグメントはローダで処理することを想定したブロックです。 ELFファイルの構造 ファイルの先頭にELFヘッダがあり、その直後にセグメントの構造を示したプログラムヘッダがあります。 readelfコマンドでプログラムヘッダを確認します。ここで分析するバイナリは以下のサンプルプログラムの stest/a.out です。 https://bitbucket.org/7shi/elf-dyn ELFファイル ELF header program headers .interp .hash .dynsym .dynstr .
関連ページ: CS [10](60d) NOP [6](2564d) POP [9](3227d) PUSH [6](3227d) JMP [8](3227d) x86アセンブラ [10](3230d) EB [4](3231d) SUB [3](3701d) ADD [3](3701d) JB [13](3723d) OUT [6](3940d) IN [5](3940d) C言語 [282](4159d) ADC [74](4264d) LEA [1](4399d) CALL [6](4399d) TEST [5](4399d) CMP [6](4399d) MOV [10](4399d) JNZ [7](4400d) SHR [3](4770d) JS [16](4832d) DS [8](4941d) OR [12](4953d) AND [13](5208d) NOT [14](
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く