備忘録

備忘録

リバースエンジニアリング

x64dbgにテーマを適応する方法

Ⅰ. はじめに タイトルの通り「x64dbgにテーマを適応する方法」です。 Ⅱ. やり方 1. git cloneする git clone https://github.com/ThunderCls/x64dbg_vs_dark 2. style.css と icons フォルダを x64dbg.exe と同じ階層にコピーする 3. visual_studio_dark_the…

Fridaでjava.security.MessageDigestをhookする方法

Ⅰ. はじめに タイトルの通り「Fridaでjava.security.MessageDigestをhookする方法」です。この記事は以下のように"hoge"のMD5を取得するdigest()メソッドをhookする事を想定して書かれています。 MessageDigest md5 = MessageDigest.getInstance("MD5"); byt…

マジックナンバーまとめ

List of file signatures - Wikipediahttps://en.wikipedia.org/wiki/List_of_file_signatures bzip2のマジックナンバーは「BZh」(45 5A 68)https://kagasu.hatenablog.com/entry/2017/05/19/231911

WiresharkでTCPのPSHフラグのみ表示(フィルタ)する方法

Ⅰ. はじめに タイトルの通り「WiresharkでTCPのPSHフラグのみ表示(フィルタ)する方法」です。 Ⅱ. やり方 tcp.flags.push == 1 参考 https://osqa-ask.wireshark.org/questions/24961/filter-for-syn-psh-and-rst-flags

Fridaでjavax.crypto.spec.SecretKeySpecをhookする方法

Ⅰ. はじめに タイトルの通り「Fridaでjavax.crypto.spec.SecretKeySpecをhookする方法」です。 Ⅱ. やり方 1. hook.js var Base64a = { encode: (function(i, tbl) { for(i=0,tbl={64:61,63:47,62:43}; i<62; i++) {tbl[i]=i<26?i+65:(i<52?i+71:i-4);} //A-Z…

mitmproxyとarpspoofを利用してスマートフォン(Android/iOS)のHTTP(s)通信を見る方法

Ⅰ. はじめに タイトルの通り「mitmproxyとarpspoofを利用してスマートフォン(Android/iOS)のHTTP(s)通信を見る方法」です。 Ⅱ. 環境 Kali Linux 4.13.0http://kagasu.hatenablog.com/entry/2018/01/20/090654 Ⅲ. やり方 1. IPフォワードを有効にする echo 1 …

呼出規約とは

Ⅰ. はじめに Ⅱ. 環境 Ⅲ. 呼出規約(calling convention)とは Ⅳ. cdecl main.cpp 逆アセンブル ポイント リバースエンジニア向けのポイント Ⅴ. stdcall main.cpp 逆アセンブル ポイント リバースエンジニア向けのポイント Ⅵ. fastcall main.cpp 逆アセンブル …

Windowsでsyscallする方法

Ⅰ. はじめに タイトルの通り「Windowsでsyscallする方法」です。 この記事はWOW64を対象とした内容になっています。 x64向けはこちら http://kagasu.hatenablog.com/entry/2018/01/03/200337 Ⅱ. 環境 Windows 10 64bit 1709 Ⅱ. サンプルプログラム サンプル…

IDAにスキンを適応する

Ⅰ. はじめに タイトルの通り「IDAにスキンを適応する」方法です。 Ⅱ. 環境 IDA Pro 7.0 Ⅲ. やり方 1. zyantific/IDASkins から IDA-7.0-prerelease.zip をダウンロードする https://github.com/zyantific/IDASkins/releases 2. IDAインストールディレクトリ…

Photonの生パケットを読む

Ⅰ. はじめに 1. Photon とは クロスプラットフォームで動作する「ネットワークエンジン」です。 ドイツのベンチャー企業「Exit Games」が開発しています。「クラウド(SaaS)」と「オンプレミス」が選択できます。 アジアリージョンのクラウドはGMOが独占して…

リバースエンジニアリングを楽にする単語のメモ

Ⅰ. はじめに タイトルの通り「リバースエンジニアリングを楽にする単語のメモ」です。 随時追加します。 Ⅱ. 一覧 algorithm encrypt encode decrypt decode cipher extract rijndael aes pkcs rsa x509 certificate key block cbc su MIIRSA暗号秘密鍵/公開…

Packer Detector一覧

Ⅰ. はじめに 解析対象のバイナリがどの Executable Packer を使っているかを自動的に判定するツールです。 Ⅱ. Packer Detector 一覧 Exeinfo PE http://exeinfo.atwebpages.com/ Detect It Easy http://ntinfo.biz/ PEiD http://www.peid.info/ 2017/05/07時…

仲介DLLを作成する

Ⅰ. はじめに 仲介DLLを作成する方法です。 DLL Proxy や DLL Wrapper とも呼ばれています。 Ⅱ. やり方 こちらを使います。 https://github.com/mavenlin/Dll_Wrapper_Gen 1. ファイルを自動生成する python Generate_Wrapper.py hoge.dll 2. ソリューション…

DoubleAgent を試してみる

Ⅰ. はじめに DoubleAgent とは? Microsoft Application Verifer を悪用した攻撃の事です。 セキュリティ会社 Cybellum によって 2017/03/22 に公開されました。 何ができるの? プロセスの開始と同時に 任意の dll が読み込まれ任意コードの実行が可能にな…

プロテクトを回避してメモリをフルダンプする

Ⅰ.はじめに 物理メモリを任意の物理記憶媒体にダンプする方法です。 Belkasoft社の無料ダンプツール(Belkasoft Live RAM Capture)を利用します。 Ⅱ. Belkasoft Live RAM Captureのすごいところ 無料 ダンプ後のファイルを解析するBelkasoft Evidence Cente…

.protoをシリアライズされているバイナリデータから作る

Ⅰ. はじめに 私の知る限りバイナリから自動で.protoを生成するツールは公開されていません。 よって、シリアライズされているバイナリデータを読み取る為の.proto作成は手動となります。また、ProtocolBuffersはシリアライズした時key-valueのkey情報が失わ…

JMPの隠蔽

Ⅰ. はじめに リバースエンジニアリングのテクニックの1つです。 パターン化しているので覚えておいて損はありません。 主に ASProtect というパッカーが利用する方法です。 Ⅱ. JMPの隠蔽方法 通常の場合 アセンブリでJMPする場合は以下のように書きます。 JM…

Android 5.x PIE チェックを回避する

Ⅰ. 概要 Android 5.xからPIE以外の実行ファルが実行できなくなりました。 PIEのチェックは /system/bin/linker によって行われています。 セキュリティの強化の為に存在するチェックですが、邪魔な場合があるので回避方法についてのメモです。 また、制限さ…

ファイル調査に使えるツール達

Home of Hexinator - The Professional Hex Editor - Hexinatorforemostbinwalk

Frida の使い方

Ⅰ. はじめに Ⅱ. インストール Ⅲ. 使い方 Androidのアプリをトレースする Windows上のプロセスをトレースする プロセス一覧を表示する 引数を表示する メモリダンプ レジスタ(ARMの例) 直接アドレスを指定してメモリを読み取る メモリを書き換える アドレス(…

disunity でフォルダを対象にする

disunity asset unpack c:\hoge\*※ファイル単体の場合 disunity asset unpack c:\hoge\CAB-xxx

Androidで他アプリのメソッドをhookする

Qiitaで投稿しました http://qiita.com/kagasu/items/7a3421ec471349885b10

ARM Opcodeメモ

※2017/05/29 追記 とても理解しやすい解説サイト https://azeria-labs.com/writing-arm-assembly-part-1/※2018/04/13追記 理解しやすいスライド https://azeria-labs.com/downloads/HITB-v1.0.pdf ADD 加算 例. ADD(S) <dst>, <op 1>, <op 2> dst = op1 + op2; SUB 減算 例. S</op></op></dst>…

Wireshark POSTだけ絞り込む

http.request.method=="POST"おまけ HTTPだけ絞り込む (tcpを付け加えると SSDP NOTIFYも除外できる) http && tcp

C# IL boolの戻り値を反転させる。

パターン1 bool hoge() { return gege(); } // ↓こうしたい bool hoge() { return !gege(); } bool gege { // return false // または // return true; } ldc.i4.0 ceq を追加する call gege() stloc.0 ... ret ↓ call gege() ldc.i4.0 ceq stloc.0 .. ret …

C++ 高速にメモリサーチを行う方法

Ⅰ. はじめに ある特定範囲の最初から最後までをサーチをする場合、 メモリを確保していない場所までサーチするため非常に遅くなります。VirtualQueryExを使うと、 メモリのアクセス権の状態などによって分岐を行えるため、 非常に高速にメモリサーチを行うこ…

ktxをpngに変換する

ktxにはdisunity extractしたとき、たまに出会います。 それをpngに変換するときの話。 1. 必要なもの 1) PowerVR SDK | Imagination Community http://community.imgtec.com/developers/powervr/2) ImageMagick: Convert, Edit, Or Compose Bitmap Images h…

APK(smali)を弄る

用意するもの・JDK ・apktool.jar https://code.google.com/p/android-apktool/downloads/list手順# デコンパイル 1) java -jar apktool.jar d hoge.apk# smaliを弄る ○弄るときに役に立つもの一覧 ・Dalvik opecodes http://pallergabor.uw.hu/androidblog/…