備忘録

備忘録

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

iOSでFridaを利用する方法

Ⅰ. はじめに タイトルの通り「iOSでFridaを利用する方法」です。 Ⅱ. 手順 1. frida-toolsをインストールする pip3 install frida-tools 2. iOS端末のCydiaまたはSileo等のパッケージマネージャで以下リポジトリを追加する https://build.frida.re 3. iOS端末…

iPhone iOS Jailbreak関係情報まとめ

Jailbreakまとめサイト 「Jailbreak可能か」「Jailbreak方法」などをまとめて調べることが出来るWebサイト https://ios.cfw.guide/ Jailbreak情報サイト(日本語) https://tools4hack.santalab.me/ Tweek紹介サイト http://iphonedatu.blog.fc2.com/ r/Jail…

Detoursを利用してWin32APIの呼び出しをモニタする方法

Ⅰ. はじめに タイトルの通り「Detoursを利用してWin32APIをモニタする方法」です。 Ⅱ. やり方 1. Detoursをビルドする https://github.com/microsoft/Detours 2. batファイルを作成する start.bat start syelogd.exe /q c:\result.txt timeout /T 1 rem note…

Thread Hijacking を利用して他プロセスの関数を呼び出す方法

Ⅰ. はじめに タイトルの通り「Thread Hijacking を利用して他プロセスの関数を呼び出す方法」です。 Ⅱ. サンプルプログラム x86とx64に対応しています https://github.com/kagasu/ThreadHijacking

ゲームエンジンを特定する方法

Ⅰ. はじめに Ⅱ. Unity の場合 オープンソースライセンス表記から特定する Assembly-CSharp.dll が存在している libil2cpp.so が存在している libmono.so が存在している libunity.so が存在している global-metadata.dat が存在している Ⅲ. Cocos2d の場合 …

WOW64 syscall をhookする方法

Ⅰ. はじめに タイトルの通り「WOW64 syscall をhookする方法」です。 Ⅱ. サンプルプログラム https://github.com/kagasu/WOW64SyscallHook 参考 https://github.com/mq1n/Wow64SyscallHook http://www.codereversing.com/blog/archives/243 http://www.coder…

リバースエンジニアリング系情報まとめ

Ⅰ. はじめに Ⅱ. DLLインジェクション、コードインジェクション Ⅲ. Hook Ⅳ. Debug Ⅴ. アンチリバースエンジニアリング Ⅵ. GUI ツール Ⅶ. ドライバ署名関係, PatchGuard 無効化 Ⅷ. その他 Ⅸ. Unpacker / Devirtualizer Ⅸ. まとめ Ⅰ. はじめに タイトルの通り「…

C#でDLLをInjectする方法

Ⅰ. はじめに タイトルの通り「C#でDLLをInjectする方法」です。2019/05/12時点で以下3つのインジェクト方法に対応してます。 CreateRemoteThread ManualMap ThreadHijack Ⅱ. やり方 1. NuGetから Bleak をインストールする dotnet add package Bleak --versi…

Wiresharkフィルタまとめ

Ⅰ. はじめに Ⅱ. まとめ TCPポート8080のパケットを表示 送信元のTCPポートが8080のパケットを表示 宛先のTCPポートが8080のパケットを表示 宛先のIPアドレスが192.168.0.2のパケットを表示 TCPのPSHフラグのみ表示 HTTPのパケットを表示 POSTのパケットを表…

pyinstallerで作成されたexeをデコンパイルする方法

Ⅰ. はじめに Ⅱ. やり方 1. pyinstxtractor.py をダウンロードする 2. exe を展開する 3. 拡張子を付け足す 4. ヘッダを追加する 5. uncompyle6 をインストールする 6. デコンパイルする 実行結果 トラブルシューティング Q. マジックナンバーが分かりません…

Costura.Fody を利用して埋め込まれたDLLを取り出す方法

Ⅰ. はじめに タイトルの通り「Costura.Fody を利用して埋め込まれたDLLを取り出す方法」です。 Ⅱ. やり方 1. Costura.Plugin.dll をダウンロードする https://github.com/takeshixx/ILSpy-CosturaPlugin/releases 2. Costura.Plugin.dll を ILSpy.exe と同じ…

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 File Signature Database:: All File Signatures.https://www.filesignatures.net/index.php?page=all bzip2のマジックナンバーは「BZh」(45 5A 68)https://kaga…

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)通信を見る方法

Ⅰ. はじめに Ⅱ. 環境 Ⅲ. やり方 1. IPフォワードを有効にする 2. ルーティングを変更する 3. ARPスプーフィングを行う 4. mitmproxyを透過型として起動する 5. ルート証明書(mitmproxy-ca-cert.pem)をスマートフォンにインストールする 6. ログがmitmproxy…

呼出規約とは

Ⅰ. はじめに Ⅱ. 環境 Ⅲ. 呼出規約(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 でテスト済み ※IDA 7.3以上はIDA本体にスキン機能が実装された為、本記事の内容を実行する必要はありません。 Ⅲ. やり方 1. ダウンロードする https://github.com/zyant…

Photonの生パケットを読む

Ⅰ. はじめに 1. Photon とは 2. 仕組み Ⅱ. マスタサーバの生パケットを読む 1. 赤色の枠で囲んでいる部分を見つける 2. 緑色の枠で囲んでいる部分を見つける 3. オレンジ色の枠で囲んでいる部分を見つける 4. 水色の枠で囲んでいる部分を見つける 5. ピンク…

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

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

Packer Detectorまとめ

Ⅰ. はじめに Ⅱ. Packer Detector 一覧 XAPKDetector XPEViewer Exeinfo PE Detect It Easy PEiD RDG Packer Detector PE Detective Nauz File Detector その他 Ⅰ. はじめに 解析対象のバイナリがどの Executable Packer を使っているかを自動的に判定するツ…

仲介DLLを作成する

Ⅰ. はじめに 仲介DLLを作成する方法です。 DLL Proxy や DLL Wrapper とも呼ばれています。 Ⅱ. やり方(kagasu/ProxyDllGenerator を使用する方法) https://github.com/kagasu/ProxyDllGenerator 1. 以下コマンドを実行する ProxyDllGenerator.exe --dll te…

DoubleAgent を試してみる

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

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

Ⅰ.はじめに Ⅱ. Belkasoft Live RAM Captureのすごいところ Ⅲ. メモリダンプ方法 1. Belkasoft Live RAM Captureをダウンロードする 2. 保存先を指定し、Captureをクリックする 3. 以上でダンプ完了です。 Ⅳ. ダンプから画像ファイルを取り出す 1. WinHexでダ…

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

Ⅰ. はじめに armor.proto (proto3) データ(C#) Ⅱ. protofudger を使う方法 使い方 出力結果 Ⅲ. Protobuf Viewerを使う方法 Ⅳ. protoc を使う方法 使い方 作った.protoをテストする場合 出力結果 Ⅴ. protobuf-inspectorを使う Ⅵ. d3を使う Ⅶ. protobuf-decode…

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 - Hexinator foremost foremost target binwalk binwalk -eM target X-Ripperbinwalkとほぼ同じ。GUIがある。Windowsのみ。 FTK Imagerbinwalkとほぼ同じ。GUIがある。Windowsのみ。