Unicornエミュレーションの基本とライブラリ関数呼び出しの実装方法とコード例

実行環境:python 基本インポート:from unicorn import * 概要 1. Unicornオブジェクトの初期化: UC = Uc(unicorn_const.UC_ARCH_X86, unicorn_const.UC_MODE_16) Ucが受け取る2つの値は、それぞれシミュレートするアーキテクチャとビット数を指定します。後続の操作で使用するレジスタ(rax、eax、axなど)は、プログラムのビット数に厳密に一致させる必要があります ...

7月11日 21:06 投稿

Linux x86バイナリ解析とバッファオーバーフロー攻撃の実践

概要 本記事では、Linux環境上の32ビット実行ファイルを対象とした、リバースエンジニアリングと脆弱性攻撃の手法について解説します。対象プログラムpwn1は、ユーザー入力をエコー backするfoo関数を呼び出しますが、バイナリ内には通常の実行フローでは呼び出されないgetShell関数が含まれています。本演習の目的は、この隠された関数を実行させるために、バイナリの直 ...

7月10日 19:19 投稿

オペレーティングシステムカーネルにおけるメモリ割り当ての基礎実装

ビットマップの実装 MemBitmap構造体は、任意の長さの汎用一次元ビットマップのヘッダーとして使用されます。カーネルはビットマップを再利用可能な項目のセットを追跡するための効率的な方法として使用します。 struct MemBitmap { uint32_t length; PRIVATE_DATA_MEMBER uint8_t *buffer; }; void MemBitmapInit(struct MemBitmap *btmp, uint8_t *bitsBuffe ...

7月1日 17:01 投稿

TiDBのX86とARM混合プラットフォームでのオフライン展開とアップグレード

背景 TiDB 5.0のアシンクロナストランザクション機能をX86とARMの混合デプロイメントアーキテクチャで体験する記事が以前に公開されました。その後、オフラインモードでのTiDBクラスタのアップグレード方法について質問がありましたので、この記事ではその手順をまとめます。 デプロイの本質 TiDB 4.0から導入されたTiUPは、複雑なTiDBクラスタの設定を簡単にしてくれる ...

6月23日 18:34 投稿

X86アーキテクチャの命令基礎: BXとLOOP命令

この記事では、X86アーキテクチャにおける基本的な命令について説明します。 記述記号: "()" 記述上の簡潔さのために、"( )"を使用してレジスタやメモリーセルの内容を表します。 (ax)はaxレジスタの内容を表し、(al)はalレジスタの内容を表します。 (20000H)は物理アドレス20000Hにあるメモリーセルの内容を表します。 ((ds)*16+(bx))はdsレジスタの内容をADR1、bxレジス ...

6月16日 22:30 投稿

x86アセンブリ言語におけるビット操作命令の詳解

論理演算命令 論理演算命令は、ビット単位でデータを処理するために使用されます。これらの命令を実行すると、通常 CF(キャリー)と OF(オーバーフロー)はクリア(0)され、結果に応じて SF(サイン)や ZF(ゼロ)が設定されます。 命令 動作内容 主な用途 AND ビットごとの論理積。両方が1の場合のみ1。 ...

5月19日 03:11 投稿