制作日記

こういうの作った方が、逃げにくいじゃない

環境構築とか

色々と導入してたら、結構時間が経ってた

とあるソフトビルドする必要に迫られて、cygwin入れる
そうなると諸々のソフト入れて設定して、って感じで芋蔓式で環境構築

とりあえずの目標はクリアできたし、まあよし

以降はおまけのシェルスクリプト版所謂nullメーカー

SRC_FILEが元テキスト
周回ごとに変えたい数字とか文字は変数で埋め込んどく
DEF_FILEが初期値設定用スクリプト
INT_FILEが周回ごとの更新用スクリプト
CNTが周回数

シェルスクリプトは少し前まで全然書けなかったけど、マシになったかな

続きを読む

ステコンのtrigger復元

メモリからステコンの記述復元方法とか需要あるんですかねえ
と思いながらメモついでに書いとく、memReadへの実装は面倒

下記事からのコピペだけど、

このステコンが
[state ]
type = posset
x = 8901018
y = 8901018
ignorehitpause = 1
persistent = 12348912
trigger1 = 1||fvar(0):=8901018||var(59):=8901017

こうなる

Address : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
04E2ABB8 : 78 F8 ED 05 01 00 00 00 F0 6D BC 00 01 00 00 00
04E2ABC8 : 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04E2ABD8 : 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
04E2ABE8 : 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
04E2ABF8 : 00 00 00 00 9A D1 07 4B 01 00 00 00 00 00 00 00
04E2AC08 : 9A D1 07 4B 00 00 00 00 00 00 00 00 00 00 00 00
04E2AC18 : 00 00 00 00


構造体的にはこんな感じ(memReadからのコピペ)

struct _stateCtrlInfo {
void *trigger;
int enable;
int persist;
int ignore;
int Id;
int value[20];
};


つまり、78 F8 ED 05 = 0x05EDF878がトリガーの情報のアドレス

再読み込みしたから上とアドレスは変わってるけど、
そこからガリガリっとアドレス辿るとこうなる

cmd >p 0x9 [[[[[[[[0x05efbed8+0xbe8]]+0x14]]+0x14]]+0x14]+0x4]
INFO : read address=0x029147e8, size=0xc
Adress : +0+1+2+3 +4+5+6+7 +8+9+A+B +C+D+E+F 0123456789ABCDE
029147e8: 00000002 02000002 02000000 ............

1byte区切りで、trigger内の各要素が数値、トリガー、演算子、リダイレクト等の何の種別かを表してる
ここらへん記憶が曖昧で種別が全部でいくつあったかは忘れた
上のは↓になると思う
数値、数値、数値、演算子、演算子、数値、数値、演算子、演算子

もう一個アドレス辿って、こうなる

cmd >pp 0x24 [[[[[[[[0x05efbed8+0xbe8]]+0x14]]+0x14]]+0x14]]
INFO : read address=0x061e87e8, size=0x24
Adress : +3+2+1+0 +7+6+5+4 +B+A+9+8 +F+E+D+C 0123456789ABCDEF
061e87e8: 00000001 00000000 0087d19a 00000015 ................
061e87f8: 0000000c 0000003b 0087d199 00000014 .......;........
061e8808: 0000000c ....

これが実際のtriggerの内容、4byte区切り
上の数値とかの種別に則ると
1、0、8901018、演算子(0x15)、演算子(0x0c)、59、8901017、演算子(0x14)、演算子(0x0c)

ここで演算子のIDを確認
http://drabs.blog40.fc2.com/blog-entry-1219.html
0x15はfvar:=、0x14はvar:=、0x0cは||

つまり、上のは
1、0、8901018、fvar:=、||、59、8901017、var:=、||

ここまで来たら、あー後置記法やなとなるので
ガリっと中置にすると
1||fvar(0):=8901018||var(59):=8901017
になる

はい、復元完了

トリガーとかリダイレクトが混じるとちょっとややこしい
トリガーは値がアドレスになって、そこに各引数が入ってるんだっけか
リダイレクトは上で復元した奴が入れ子になってる

triggerに限らず、ステコンのパラメータなんかも大体こういう感じ
即値書いた場合とかでちょっとかわったりすることはあるけども

hitdefみたいにオプション多い奴は知らん、そこまで見る気ない
どうせ、別途メモリ確保してるだけだろうし
プロフィール

Author:drab
霊夢改変キャラ
「12 3 ! {V} [_]」
公開中
L霊夢でもl_reimuでも好きなように読んでください

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク