私はバイナリ(テキスト/ JSONではなく残念ながら)Thriftオブジェクトとしてシリアル化されたファイルを処理するよう依頼されましたが、プログラムやプログラマにアクセスできませんので、フィールドの順序などがあります。バイナリファイルを開き、フィールドタイプ、値、ネストなどのリストを取得するために、Thriftライブラリを使用する方法はありますか?バイナリスリフトファイルをリバースエンジニアリングする方法はありますか?
答えて
残念ながら、Thriftのバイナリプロトコルではデータのタグ付けはあまり行われません。それを解読するためには、あなたが手持ちの.thriftファイルを持っていると仮定して、次の4バイトが整数であり、実際には浮動小数点の最初の半分ではないことを知っているように見えます。だから、基本的には、16進エディタ(または同等のもの)のファイルを見て、あなたが見ている正確なパターンに基づいてフィールドを推測しようとしているようです。
は非常にいくつかの有用ビットがあります。
各ファイルは、バージョン、プロトコル識別子の文字列、およびシーケンス番号で始まります。マップは、キーと値のタイプ(最初の2バイト、整数コード)と要素数を4バイト整数で識別する6バイトで始まります。型コードは標準であるように見えます(定義の標準的な位置は、ThriftソースのTProtocol.hと思われます。たとえば、型コード2でブール値が指定され、型コード16でUTF-8文字列などが指定されます) 。文字列の先頭には4バイトの整数長フィールドがあり、リストにはタイプ(1バイト)と4バイト長の接頭辞が付きます。すべての整数フィールドはビッグエンディアンで保存され、浮動小数点はIEEEフォーマットで保存されるように見えます(これにより、double型は比較的簡単に見つかるはずです)。
ThriftのTBinaryProtocol *ファイルには、さらに役立つ情報がいくつかあります。プラスの面では、さまざまな実装が存在するため、最も快適な言語で実装された実装を読むことができます。
申し訳ありませんが、おそらくこれは役に立たないと思いますが、これはThriftバイナリ形式のすべての情報です。はっきりとバイナリ形式は、あなたが常に正確なプロトコル仕様を知っていることを意図して設計されており、盲目的に解読するのを簡単にするのではなく、ワイヤスペースを最小限に抑えることが目的でした。
- 1. SQLテーブル作成スクリプトをリバースエンジニアリングする方法はありますか?
- 2. Androidアプリをリバースエンジニアリングする方法は?
- 3. ProGuardを使用して難読化されたAndroid APKをリバースエンジニアリング/デコンパイルする方法はありますか?
- 4. ハッシュ関数をリバースエンジニアリングする方法
- 5. .pydファイルをリバースエンジニアリングする方法
- 6. キーでアルゴリズムをリバースエンジニアリングする方法
- 7. ウェブサイトをモバイルにリダイレクトする方法はありますが、イメージフォルダをリダイレクトする方法はありますか?
- 8. LinkedIn Webページをリバースエンジニアリングする最良の方法は?
- 9. アルゴリズムをリバースエンジニアリングするのに役立つ必要があります
- 10. 上にスクロールする方法はありますが、瞬時にスクロールする方法はありませんか?
- 11. `パイプスルーリスト 'の方法はありますか?
- 12. エレガントな方法はありますか?
- 13. チェックサムアルゴリズムをリバースエンジニアリングする
- 14. インストーラをリバースエンジニアリングする
- 15. notify_allからウェイクアップをスピードアップする方法はありますか?
- 16. submitbuttonに何かをバインドする方法はありますか?
- 17. スレッドを切り替える方法はありますか?
- 18. wso2は、サービスをリセットする方法はありますか?
- 19. は、ファイルを "uninclude"する方法はありますか?
- 20. 私はkotlin koanをデバッグする方法はありますか?
- 21. ユーザーオープンメールかどうかを知る方法はありますか?
- 22. 自分のDLLをリバースエンジニアリングすることはできますか?
- 23. oracleプロシージャを作成する方法はありますが、格納する方法はありません
- 24. EditTextにテキストを折り返す方法はありますか?
- 25. アクションを繰り返すエレガントな方法はありますか?
- 26. バインディングを繰り返す方法はありますか?
- 27. APKでアセットファイルのリバースエンジニアリングを防止する方法
- 28. プライベートメッセージからロールを集める方法はありますか?
- 29. Pythonで改行をかける方法はありますか?
- 30. クラスからEditTextを得る方法はありますか?
私は、あなたがhttp://incubator.apache.org/thrift/について話していると仮定しています。あなたが使っている言語を投稿/タグしたいかもしれません。 – TrueWill