• ベストアンサー

バイナリの検索について

ほぼ同じある二つのデータに10進数で4072という数値があるはずなのですが、一致する箇所が見つかりません。どうしたら良いでしょう。 もちろん16進数に直してE80Fとして検索しました。 ソフトはStirlingです。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.7

PSのゲームセーブデータですか? それなら圧縮している可能性は、あまり無いかもしれません。 PSは、通常リトルエンディアンで数値データが格納されているはずですので、発見できるはずですけどねぇ。 「デバッガ ゲームデータ 書き換え」 「プロセスメモリエディタ」 はPCゲームにしか使えないテクニックですので、PSだと無理です。 間違ったデータを改造しているか、一部データが予想外の形式なのかも知れません。4702の値をだけ変えてみて、変える前とセーブデータ中から変化する部分を探し出せば何らかのヒントが掴めるかも知れませんよ。 アドバイスできるのは、このぐらいです。 はまってみたもんの例で書かれているチェックサムやパリティとは、データの破損や書き換えをチェックする簡単な仕組みです。 http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%AA%E3%83%86%E3%82%A3%E3%83%93%E3%83%83%E3%83%88 http://ja.wikipedia.org/wiki/%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%82%B5%E3%83%A0 ちゃんと理解するならプログラムの勉強をしたほうが良いでしょう。

asdf4n4
質問者

お礼

遅くなりましたが、お二人とも回答ありがとうございました。 まぁしつこくやってみようと思います。必ずできるはずですので! 勉強します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.6

たまたま見つけたのは、Oh-Orangeさんと同様に私も偶然な気がしますね。 圧縮や暗号化されているデータの一部を書き換えることは、ほとんど不可能です。書き換えたら間違いなくロード時にエラーになるでしょう。まぁ、偶然動くこともあるでしょうが。 こうなるとデバッガでゲーム実行中に書き換えるしかないかと思います。 「デバッガ ゲームデータ 書き換え」 「プロセスメモリエディタ」 辺りのキーワードで検索してみてください。 私こちらの方面の知識はあまりありません。 セーブデータの書き換えは法律的には?ですが、確かPSゲームで出版社が訴えられたこともあったはず。 しかし、今も出ているので出版社が勝った可能性が高いですけど。 個人的に書き換える分には、何も気にしなくて大丈夫だと思います。

asdf4n4
質問者

補足

暗号化・圧縮されていれば不可能なら恐らく暗号化・圧縮はされていないと思います。 実際にできている人がいますので。↓ http://www.nda.co.jp/memo/gsdedit.html はまってみたもんの例の一番最初のソフトです。 ここに書いてあることはよくわかりませんでした。 判りました。調べてみます。

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.5

★特定するのは難しい気がします。 ・ゲームのセーブデータは『改変』しない方がいいですよ。  あまり法律には詳しくないですけど。  そういう意味でお勧めしませんが…。 ・ただアイディアを1つ出すとゲームの進行により2つのゲームデータを  バイナリデータで比較すれば場所がある程度は絞れませんかね。  もちろん生のデータの場合です。もしも改変、改ざんなどが出来ないように  暗号化とかされていれば無理ですけど。分かりますか?そのデータ? >一つだけ見つかったんです。  ↑  これは偶然だと思います。  たまたま一致しただけの可能性が高いと思う。  バイナリデータなら偶然見つかったりしますよ。 zwi さんへ。 >ソフトはStirlingです。  この1行の意味が分かりませんでした。 ・ネット検索したら Vector さんのところにあるバイナリエディタでした。  使ったことがないですが定番で人気マークが付いていました。  知らなかったのでちょっと恥ずかしいです。  有り難うございました。 ・以上。

asdf4n4
質問者

補足

もちろん作ったデータを売ろうなんて思っていません。 個人で楽しむつもりです。 というかゲームを楽しむというより「このゲーム」を解くのが楽しかったりします。かなり時間かけて調べてますので。 はい。やってみました。 例えば2個の※殆ど同じファイル(A、B)と、もう1個パラメータが違うファイル(C)用意します。 AとB、AとCを「比較」をつかって相違箇所を調べます。 色分けされるので、キャプチャしペイントツールに貼り付けます。 AとBで違う箇所は必要ないのでABC全てその箇所を削除し、AとBで一致する部分だけ残します。 そして、3個全てに一致する箇所も削除すれば調べる箇所が判明します。 ※パラメータは同じです。ただBGM等細かい所が違います。 と色々やってみましたが、全て駄目でした。 暗号化されていると不可能なのですか? それなら恐らく暗号化はされていないと思います。 実際にできている人がいますので。

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

Oh-Orangeさんへ。 最初に質問者がソフトは、Stirlingだと断っていますのでそれ以外のソフトは使っていないと思われます。 では、質問者さんへ。 E80Fと0FE8で探して見つからないのであれば、次の3つの場合が考えられます。 ・そもそも4072という数値は格納されてない。 ・文字として格納されているので、0x34303732である。 ・ゲームのセーブデータなどで、暗号化あるいは圧縮されている、

asdf4n4
質問者

補足

文字として格納されているとは思いもつきませんでした! が、見つかりませんでした。(涙) 暗号化、圧縮...そうかもしれませんね。 その場合どうすればよいのでしょう?

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★『0x』は16進数を表す接頭語。 ・ここは C/C++ のカテゴリですから 0x の意味を知らないとなると一体どうやって  バイナリデータを検索しているのか心配になります。 >リトルなら「0x0F0xE8」 >ビックなら「0xE80x0F」  ↑  『0x』は除いて下さい。文字列ではないので。  バイナリエディタで検索しているのなら  『F0E8』か『E80F』ですかね。 ・そもそもどんなバイナリデータを検索しているのですか?  それとデータはリトル・エンディアン用の CPU で動かすものですか?  あるいはビッグ・エンディアン用の CPU で使うのか? ・補足要求です。

参考URL:
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
asdf4n4
質問者

補足

すみません。初心者なもので... バイナリエディタを使って検索していますが... 『F0E8』か『E80F』どちらでも調べても駄目でした。 他に10進数そのままの値、それを入れ替えた値でも駄目でした。 ただ一度だけエディタの新規作成でアスキー領域に10進数の値を入れてダンプ領域に表示された値を検索したら、 一つだけ見つかったんです。 そしてそこの場所を合計を考慮して書き換えて見たのです。 そしたら失敗ですが今まで〈エラーが起こる〉とは違うアクションが起こりました。 しかし一回こっきりです。その後は検索にも引っかかりません。 そのダンプ領域表示された値は16進数では無い様ですが... ゲームのセーブデータです。 CPUはAMD Athlon64です。

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★バイナリデータならバイトで検索。 ・整数データとして 10 進数で 4072、16進数では 0xE80F ならば  最初に 0x0Fのバイト次に 0xE8 のバイトを検索すべきだと思います。  文字列ではないので。 ・また、上記のはリトル・エンディアンの場合です。  ビッグ・エンディアンのバイナリデータでは  最初に 0xE8のバイト次に 0x0F のバイトを検索する事になります。 ・以上。

asdf4n4
質問者

補足

0xE80Fの「0x」 とは何でしょう?特に「x」です。 つまり検索する値を入力する所に リトルなら「0x0F0xE8」 ビックなら「0xE80x0F」 ということですか? 10進数4072の16進数はFE8、 それにゼロをつけて0FE8、 入れ替えてE80F で合っていますよね?

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

ファイルの内容がリトルエンディアンの前提のようですが、ビックエンディアンのデータという可能性は大丈夫ですか? 日ごろTSXBINの人なので、違っていたらすいません。

asdf4n4
質問者

補足

リトルエンディアン...(^_^;) つまり昇べきの順ということでしょうか? 初心者なのでファイルがリトルかビックか判りませんが、 E80Fだけでなく、入れ替えしない値、10進数の値、10進数を入れ替えた値を検索しましたが、どれもだめでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • 一致するデータを検索する関数って?

    Excelの関数を教えてほしいのですが。 A表とB表があります。A表にはB表と一致するデータも含まれていて、 一致しないデータ-もあります。 A表の中でB表と一致するものを検索したいのです。 最終的にはA表の中のB表と一致するものは削除したいのですが。 まずは、一致するデータを検索できればと思います。 表のデータはかなり数が多いので、列づつではなく表と表で検索できる ようなものがあれば思うのですが。 列の方でもできそうな関数がありましたら教えて頂きたいと思っています。 また、数値と文字列でも使用する関数が違うのでしょうか? 説明が不十分とは思いますがよろしくお願いします。

  • バイナリデータから意味の解るデータに変換したい

    素人発想なので不可能な質問かもしれませんがお付き合いください。 (質問者はhtml,cssの意味が解る程度のレベルです)  今良く遊んでいるPCのゲームのゲームデータがテキストで入手できればいいなと考えています。  具体的には多数いるキャラクターのデータです。テキストデータで抽出できればエクセルなどを使い数値の合計や平均を出せるのでとてもありがたいな、という使用目的です。  元々のアプリケーションファイル(.exe)とは別にdataというフォルダの中に拡張子が.datのキャラクターデータがあるようです。キャラクター数と同じでファイル名もそれに該当するであろう名前だったのでこれは間違いないかなと思っています。  色々調べた結果Stirlingというバイナリエディタで開く、というところまではやってみたのですがもちろんこれでもまた意味が解りません。  キャラクター数は数百、該当するファイルが30位あります。このデータはセーブデータではなく数値が書き換わらないので差分?を取って変更された値と変更された箇所を見比べる事もできません。 できるとすればファイル同士の比較となるのではないかと思っています。  色々調べてみましたが、現状の私の力ではここまでが限界でしたので識者の方々にお知恵をお借りできればと思っております。  調べた限りの情報をお伝えしたつもりですがもし不足している情報があれば追記いたしますのでよろしくお願いいたします。

  • EXCEL 同じ条件検索

    >OS=XP EX=2003 > ''_____ A _____ B _____ C _____ D _____ E _____ F >1 '_____-1 _____ 1 _____ 0 _____ 0 _____ 0 _____ 0 >2 '_____ 0 _____-2 _____-3 _____-1 _____-1 _____-2 >3 '_____14 _____ 0 _____ 0 _____11 _____ 0 _____14 >4 '_____ 4 _____-5______ 9______-1_____ 9______ -1 >5 '_____-4 _____ 0_______4_______1_____-3_______-4 >上記の様な表が500~1200 行程有り  例えば ___-4_____0_____4_____1_____-3_____-4 を   下記の如くで検索  _____-_____0_____+_____+_____-_____- 条件としては + 0 - で判断 数値は無関係 セルをA-5の -4 に置いて A~F 間の条件検索 VLOOKUP ?見たいに 該当箇所が有れば 矢印キーで操作して見るだけ 但し 数値は 1桁~3桁 + - 999まで有り     0は 1桁のみ    

  • バイナリ変換?・・・

    例えば、 FileName XXXXXX.exe 08D6CA: 8B C9 08D6DB: 4C B6 08D6EC: 24 01 08D6FD: 24 00 08D6EE: 8E 00 08D6CF: 41 90 08D6F0: 2D 90 などと記されていたとします。 これを見て、詳しい方は何のことか、どこから引用して いるか直ぐに察知なさると思われますが・・ 私の場合、よくわかりません。 これと別のパターンで、詳しい指示が出ている場合は Stirlingなどのバイナリエディタを使って 変換することは出来るのですが・・。 このような配列がある場合、具体的にどのようにすればいいか 解説しているサイト等を誘導して頂けたら幸いです。 かなり検索したのですが辿り着くことが出来ませんでした。 また、バイナリエディタで色々と自分なりにためしてみたりもしましたが よくわかりませんでした。 これを使ってどうこうという訳ではなく、向学のため 知っておきたかった次第です。 どうぞ宜しくお願い致します。

  • Google検索はなぜ早い?

    ふとした疑問ですが、Google等の検索エンジンのレスポンスはなぜ速いのでしょう? 単純なDB検索を例に考えると、莫大なデータを検索する際、索引を使わなければレスポンスにはストレスを感じるはずです。 任意の文字列を条件に、Webページの一致するフレーズを頼りに引っ張って来る訳ですし、途方もない数のWebページをフルスキャンしている筈なのにどうしてレスポンスが一瞬で済むのでしょうか??? …と考えていたら眠れなくなりました。どなたか眠らせて下さい。

  • Excelでの検索についての質問です

    Excelの検索方法についての質問です 例として 1列目に手順の数 1 2 3 1 2 3 4 1 2 3 4・・・ 2列目に作業方法 a b c a b c d a b e d・・・ と数字と作業方法が並んでいます 例えば、 1 2 3 4 a b e d という8個のセルと一致する箇所を検索したいのですが なにかいい検索方法はありますでしょうか お手数ですが、教えていただけたらうれしいです

  • 【EXCEL】空白でないセルの位置を検索したい

    初めまして。 EXCELの関数を利用して、 下記のようなことをしたいと思案中です。  A B C D E F 1* 1   2   3 2* 1   2 3 3 3* 1   2    4* 1   2 3 3 *が計算式を挿入したい箇所です。 各行の最初のブランク位置を検索したいです。 ブランクの個数は不定ですが、 B~Fのセルに入れるデータは全て数値です。 MATCH関数を使い、MATCH("",B3:F3)のようにしても、 #N/Aとなってしまいます。 何か良い方法はないでしょうか? ご教授頂けますようよろしくお願い致します。

  • VLOOKUP関数で検索値について

    VLOOKUP関数で検索値が文字列(数値)でデータ範囲の左端列が数値(文字列)の場合、結果は#N/Aとなります。 どちらかのデータを文字列または数値に変換して一致させなければ結果が得られないのでしょうか

  • フォルダーの中にあるファイルのバイナリデーターの検索を行えるソフトを探

    フォルダーの中にあるファイルのバイナリデーターの検索を行えるソフトを探しています。 環境はwindowsXPです。 フォルダーの中にあるファイルに含まれる特定のバイナリデーターを検索するソフトウェアを探しています。 ファイルを特定のバイナリエディターで開けば検索機能を使って検索できますが、ファイル数が多い場合すべて検索するのは大変です。一度に検索できるソフトはないでしょうか? 文章に含まれる文字列を探すのではなく、例えばexeファイルの中にある文字列を検索する場合バイナリデーターとして検索したいということです。できれば、アスキーかユニコードか指定できるとうれしいです。 文字検索ではなく16進数などで指定して検索でもかまいませんので知っている方は回答よろしくお願いします。