プログラム系統備忘録ブログ

記事中のコードは自己責任の下でご自由にどうぞ。

LINE CTF 2024 write-up & Binary Ninja FreeとIDA Freeの比較

LINE CTF 2024へ、一人チームrotationで参加しました。そのwrite-up記事です。またおまけとして、Binary Ninjaを初めて触ったのでIDAとのふんわり比較も記述しています。

また、今回からお試しとして、IDAの解析結果ファイル*.i64等をGitHubで公開してみることにしました。https://github.com/Tan90909090/ctf-writeups/tree/main/LINE_CTF_2024をご参照ください。

2024/04/02(火) 01:00頃追記: BrownFlagChecker問題の元ソースコードが公開されています: Black-Frost/LineCtf2024

続きを読む

LibraryImportAttribute経由で取得したCOMオブジェクトのReleaseはほぼGC頼りになる

2024/01/19 23時頃追記: ComObject.FinalReleaseの諸問題は.NET 9で解決されます: Make multiple calls to FinalRelease safe by jkoritzinsky · Pull Request #97059 · dotnet/runtime

2024/01/13 11時頃追記: レビュー時のコメントが守られていないのは流石に変に思ったのでissueを立てました。

2024/01/11 23時頃追記: ComObject.FinalRelease後のメソッド呼び出しも未定義動作となる話と、APIレビュー時のコメントが守られていないらしい話を追記しました。その他細かい表現を修正しました。

.NET 8になって、LibraryImportAttributeGeneratedComInterfaceAttributeを使って、COMオブジェクトをマーシャリングできるようになりました。より具体的には、ネイティブのCOMオブジェクトを保持する、マネージドなComObject型へマーシャリングされます。さて、COMオブジェクトを扱う場合、参照カウンタを管理すること、すなわち適切にReleaseすることが必須です。しかしドキュメントを探しても、ComObjectが保持するネイティブCOMオブジェクトをどのようにReleaseすればいいのか分かりませんでした。実装確認や実験をすると、ComObject型が持つネイティブCOMオブジェクトは、基本的にGCタイミングでのみReleaseされるということが分かりました。本記事は結果や実験方法について記述します。

続きを読む

SECCON 2023 カプセルCTF write-up

SECCON 2023 電脳会議のイベントの1つ、SECCON カプセルCTFへ取り組んでいました。そのwrite-up記事です。(運営側の方からwrite-up公開の許可は得ていますが、まずい表記等あればお知らせください。)

続きを読む

TsukuCTF 2023 write-up

TsukuCTF 2023へ、一人チームrotationで参加しました。そのwrite-up記事です。

2023/12/20(水) 21時頃追記: Writeup賞をいただけたことを加筆しました。

2023/12/25(月) 22時頃追記: 運営の皆様による全問題解説がTsukuCTF2023 Writeupsで公開されています。

続きを読む