トップページ > 記事閲覧
【改造投稿】機核覚醒〜六欲姫ユーカ〜
投稿日 : 2017/09/16(Sat) 21:17
投稿者 そっふぃー◆xq9Pkhxw2C6
ID情報 : h.z9uYS0Wp2t5Rx9OLGQY1
参照先
【ゲームタイトル】
機核覚醒〜六欲姫ユーカ〜

【対応バージョン】
1.09

【ゲームの作者】
セルレ部

【公式サイト】
https://celusislab.blogspot.jp

【ゲームの入手先】
http://www.dlsite.com/maniax/work/=/product_id/RJ181044.html

【備考】
・SpoilerAL6.2用SSG
・処女作故、非常に残念な内容になっております。
サーチ補正が必須な本SSGですが、記述の組み方がよくわからず、
うさみみ片手に手動で補正掛けないと、うまく動きません・・・。
こうした方がいいよ等のアドバイスあると、とても有り難いです。

記事編集 編集
Re: 【改造投稿】機核覚醒〜六欲姫ユーカ〜 (No.1)
投稿日 : 2017/09/17(Sun) 01:15
投稿者 RICK@管理人◆PIflJPH.oeY
ID情報 : WT4k.Z8L/FX5r2rsDn1nw1
参照先
響 舞名のgdgd解析ページを参考にポインタの解析に挑戦してはいかがですか?

アセンブラがわからない場合は超原始的な方法も一応あります。
私はこの超原始的な方法でポインタを解析しています。

例:お金のアドレスが0x0B6BADF8の場合
@0x0B6BADF8の上から6桁(0B6BAD)を抽出

A反転して(AD6BAD)でバイト列検索

B4n+1のアドレスがヒットした場合、4n〜4n+4を右からつなげた値("00 AD 6B 0B"の場合 0x0B6BAD00)が0x0B6BADF8より小さく最も近いものを探す。
ヒットしなかった場合(AC6B0B)や(6B0B、この場合、4n+2のアドレスがヒットした場合が候補)等で検索する。

Cヒットしたアドレスが0x01234568でその値が0x0B6BAD00の場合、SSGの計算式は"[:0x01234568:]+0xF8"となる。

D@〜Cをプロセスの.dataセクションに到達するまで繰り返す。
記事編集 編集
Re: 【改造投稿】機核覚醒〜六欲姫ユーカ〜 (No.2)
投稿日 : 2017/09/17(Sun) 22:14
投稿者 amateur◆kR..xsXL6RU
ID情報 : 5FGxZw//g.epqjalraxU7.
参照先
ポインタを辿ってベースアドレスからアドレスを記述するのが難しいなら、
[adjustment](アドレス補正属性)を使うという手もあります。
詳しい書き方等は「HowToSSG」の該当箇所を読んでいただくとして、
参考に[adjustment]の「search」を使って書いたSSGを添付しておきます(添付ファイル1個目)。

オマケに、体験版の解析結果でポインタを辿ってアドレスを記述したSSGも添付しておきます(添付ファイル2個目)。
こちらは製品版では多分動作しないと思いますが(途中のポインタまでのオフセットが5桁もあるので・・・)、
大体こんな感じで書くという参考程度に。
なお、ベースアドレスは、exeの.dataセクションから、さらにエントリーポイント(.textセクション=プログラム部分)まで辿って書いてますが、
特定のゲームVer、かつ、自分の環境でのみ動作するだけでよいなら、
エントリーポイントまで辿る必要はなく、.dataセクション内のベースアドレスをそのまま書けばOKです。
(このゲームのようにデフォルトでASLRが有効なら、MName::nul +(オフセット) のように、「モジュールアドレス演算子」とexe等のモジュール先頭からの相対アドレスという形で書く)

エントリーポイントまで辿って書くとベースアドレスがズレにくくなりますが、
絶対ズレないわけではなく、ずれる時はずれるのですけど・・・

なお、モジュール先頭ではなく、下記のようにモジュールの.dataセクション先頭からのオフセットで書けば、多少ズレにくくはなります。
 _MName::nul:=.data +(オフセット)
理由ですが、ベースアドレスは基本的に.dataセクション内にありますが、
.dataセクションの前に、通常は「.text」「.rdata」の二つのセクションがあり、
ゲームのVerアップ等により「.text」(プログラム部分)のサイズが変わることで、
その後ろにある.rdataや.dataセクションの先頭アドレスがズレることが多いので、(ベースアドレスがずれる主な原因の一つ)
モジュール先頭ではなく、.dataセクションの先頭を基準にしてベースアドレスを書くと多少ズレにくくなるというわけです。
エントリーポイントまで辿るよりは遥かに簡単で一定の効果は望めるので、この書き方で留めておくのもよいかもしれません。

追記
添付ファイル1個目の[adjustment]の「search」を使って書いたSSGについて若干の説明を。
なお、以下は体験版で解析した際のもので製品版では当て嵌まらないかもしれませんし、
具体的なアドレスは起動毎に変動します。

「(1)【必須】」の項目では、ユ−カの「DUR」以下「WIL」までの6個の初期ステータス値(4バイト単位)の値を入力、
または、体験版での初期値(「DUR」以下、110、105、95、105、100、85)をチェックを入れるだけで設定される、というもの。

「(2)【必須】」の項目では、上記のユ−カの「DUR」以下「WIL」までの6個の初期ステータス値を検索値として(バイト列で検索)、
1つ目の「DUR」のアドレスをサーチで特定する。
1つ目の「DUR」のアドレスの -0x50 がユーカのステータスデータの領域の先頭アドレス。
→ これが次の「(3)【必須】」の項目での検索値となる。

「(3)【必須】」の項目では、「(2)【必須】」で特定したユーカの「DUR」のアドレス -0x50のアドレスを検索値としてサーチする。
ヒットするアドレスは、ユーカのステータスデータ先頭アドレスを指定するポインタアドレス。

「(3)【必須】」の項目で特定されたユーカのステータスデータ先頭アドレスを指定するポインタアドレスを基準に、
 -0x10 が所持金等のデータ領域先頭へのポインタ
 +0x10 ずつ加算したアドレスが、2人目(ルルム)以下、7人目までのキャラのステータスデータ領域の先頭アドレスへのポインタ

1個目に添付のサーチ補正使ったSSGの仕組みを大雑把に説明すると以上のようになります。
分かりやすいように簡単な説明付きのスクショを添付しておきます。

記事編集 編集
Re: 【改造投稿】機核覚醒〜六欲姫ユーカ〜 (No.3)
投稿日 : 2017/09/23(Sat) 21:27
投稿者 そっふぃー◆xq9Pkhxw2C6
ID情報 : h.z9uYS0Wp2t5Rx9OLGQY1
参照先
>RICKさん
>amateurさん

おぉ・・・ご丁寧なアドバイス、ありがとうございます!
ちょっと今は時間が取れなくてSSGの修正が出来ないのですが、
時間が取れ次第、新たに書き直してみようと思います。
ご教授ありがとうです!
10月中には・・・書き終わったらいいなぁ・・・(舞名さんのページ見つつお勉強中
記事編集 編集
Re: 【改造投稿】機核覚醒〜六欲姫ユーカ〜 (No.4)
投稿日 : 2018/03/08(Thu) 23:52
投稿者 ベルモンテ
ID情報 : opsyXDKCzksP5wxDux4zn1
参照先
最新Ver.2.01への対応をして頂けるとありがたいです。
記事編集 編集
件名 スレッドをトップへソート
名前
メールアドレス
URL
ファイル添付


暗証キー
画像認証 (右画像の数字を入力) 投稿キー
コメント

- WEB PATIO -