MDX Memory Data eXtractor --- メモリ中のデータテーブル抽出つーる ---正規表現対応サーチ・置換・変換関数追加

[戻る]
belshin The Felix 2004年09月27日(月)06:24:04



MDX Memory Data eXtractor --- メモリデータ抽出つーるメモ ---

まだ説明文を書く気力が無いので、とりあえず要点だけ。

○概要○
メモリ上のデータ、特に配列、構造体の配列などのテーブルからデータを抽出
するためのツールで、抽出アドレスの設定等に際して変数を含む計算式の利用
が可能と成っている。また、抽出したデータに対してもこの演算の適用が可能。

変数、配列の利用も可能であり、また[ 数式 ]という形でメモリリードも可能。
変数[ 数式 ]とした場合にはメモリリードではなく、配列となる。

読み込んだデータにアクセスするために"work"という配列を設けている。
読み込んだデータを整数(4バイト)として読み書きするためには
work[1] = 123; あるいは work[a+0x2C] += 4; 等とすればよい。

ツールの処理の流れとしては、C言語のfor文と類似のプロセスをたどる。
初期化文を演算し、続いて繰返条件文を計算、その結果が0で無ければ各行の
処理に入る。各行の処理が終わった段階で「変化式」計算し、次に繰返条件文
を計算。その結果が0でなければ再び各行の処理に。この手順を繰返条件文が
0に成るまで繰り返す。

各行の処理は、まず処理TYPEを見る。処理区分が0の場合その行は無視される。
続いてアドレス式を演算し、その結果得られたアドレスから、「読込サイズ」
バイトだけ配列 work[ ] に読み込む。アドレス式が有り、読込サイズが0の
場合はアドレス式の結果を16進で出力する。このアドレス式の結果はC_Adr
変数に格納されるので、次に計算される演算式の中で利用出来る。

処理TYPEが文字列の場合、読み込んだ最初のバイト、あるいは最初の2バイト
が印字不能文字で有った場合だけ、演算式を計算し、
PreFix+演算式結果+SufFixという形で出力される。

他のTYPEの場合にはアドレス式が有り読込サイズが0の場合を除いて演算式が
有れば計算される。
ディフォルトでは他プロセスのメモリに対する書き込みは出来ないが、演算式
における書き込みも可能である。(「演算式」だけ、他の文・式は書込禁止)

各計算式では、";"を間に挟むことで複数の式を計算させる事が出来る。
 例)work[1] = Work[0] & 0xff; work[2] = work[1] + 32;....

配列・メモリにアクセスする場合、末尾の"] "にアルファベットを付ける事に
より異なったサイズの型として扱う事ができる。

何も付けない場合は c でいうところの unsigned int(4バイト整数)として
扱われる。

 ]b 1バイト整数配列(char)としてアクセス。
 ]w 2バイト整数配列(short)としてアクセス。
 ]d 4バイト整数配列(int)としてアクセス。
 ]q 8バイト整数配列(64ビット整数)としてアクセス。
 ]l 10バイト浮動小数点数(long double)配列としてアクセス。
 ]f 8バイト浮動小数点数(double)配列としてアクセス。
 ]s 4バイト浮動小数点数(float)配列としてアクセス。

任意の位置から、指定したサイズでアクセスしたい場合は、
(work + 0x123)[0]w = 123;
等と[ ] の前に ( ) でかこんだ数式を入れれば良い。

work[ ] のサイズは(確たる理由は無いがw)決まっており、最大添字は
 work[1024]b;
 work[512]w;
 work[256]d;
 work[128]q;
 work[102]l;
 work[128]f;
 work[512]s;
である。これを超えてアクセスした場合の動作は保証されない。
また、読込サイズ+1バイトだけは読込前に0クリアされるが、それ以降は
そのまま値が残るので、これを利用することも出来る。
ただし、最小でも16バイトはクリアされる事に留意されたい。

○メモリアクセスにはモジュール名も使用可能である。
 変数は大文字・小文字が区別されるが、モジュール名に関してはKeiさ
 んのご意見により、正しい名前と、すべて大文字に直した名前の両方を使
 用することができる。モジュール名の内、ディフォルトヒープ以外のヒー
 プに関してはヒープリンクの最初のアドレスの低い順にナンバーを振って
 ある。モジュール名が知りたい場合は拙作MMlc2c.exeをご利用頂きたい。

☆☆以下はMMlc2x説明文の抜粋・改変(本ツールはMMlc2cの演算エンジンを拡張して使っているため)である。このため口調が急にかわるが、別にbelshinが多重人格障碍に悩んでいる訳ではないw

※数値の入力形式は、10進、16進、及び2進。
 2進数は"0111_1111b"の様に必ず'0'で始め最後に'b'または'B'を付ける。
 2進に限り途中の'_'を無視するので、位取りにど〜ぞ。
 16進は"0xffff"形式。
※belshin用に横着入力実装。
 10進小数に限り、'.'で数字を始めても良い。(頭の'0'を略せる)
 16進数の場合は0で初めても良い(0ACB123等)
 
※Intelの石用に、リトルインディアン形式の数字入力を実装しました。
 この形式の入力は、通常の16進入力の"0x"の替わりに"0z"又は"0Z"を
 プレフィクスとして用いて下さい。
 "0z78563412"="0x12345678"、"0z3412"="0x1234"となります。

※実装済演算子は四則演算・剰余'%'の他、冪乗'**'、ビット演算子、代入演算子、
 論理演算子('!' '||' '&&')、条件演算子("(a>b)?c:d"というC縁の三項演算子)、
 関係演算子(条件演算子の為に)を実装。
 
 ○ビット演算子:
  & ビットごとの AND。
  | ビットごとの OR。
  ^ ビットごとの XOR。
  ~ ビットごとの補数。
  >> ビット右シフト。ビットを右にシフトし,右からビットを破棄
  << ビット左シフト。ビットを左にシフトし,左からビットを破棄
    ※シフト数にマイナスを指定できるように変更しました。

 ○関係演算子: '<' "<=" '>' ">=" "==" "!="及び論理演算子"||" "&&"
  '!'(頭に付けて真偽を反転)は上記の通り、条件演算子("e = (a>b)?c:d")で
  使用する為に実装しました。
 (ちなみに、?の前の条件式(a>b)が真ならc偽ならdがeに代入されます。蛇足かな?)

 ○代入演算子: '=' '*=' '/=' '%=' '+=' '-=' '<<=' '>>=' '&=' '^=' '|='
   E1 op= E2 左記の式は,次の式と同じ効果を持ちます。E1 = E1 op E2
  後で説明する変数と組み合わせて使用します。

...以下略(添付メモをお読みください)

※デバッグが一応完了したので、一般公開^^

※正規表現対応サーチ・置換・変換関数を追加しました。
※サーチ関数はターゲットプロセスメモリ用、MDX自身のメモリ用(抽出したデータ用)の2タイプ。置換・変換関数はMDX自身のメモリ専用です。




KEI 2004年09月25日(土)11:36:31
素晴らしいツールをどうもありがとうございます。
これで、SpoilerALのアドレスネーミングの結果を保存するのが楽になりましたー
わーいわーい
REDCAT 2004年10月03日(日)01:14:53
まずは、製作作業お疲れ様です。
KEIさん同様、SSG作者にはとても
有用なツールであると思います。
公開頂きありがとうございました。
ジョン 2004年10月03日(日)20:40:21
いただきます〜。
ゲーム通行人 2004年10月10日(日)00:01:58
いただきます。
ありがとうございます
通行人A 2004年10月17日(日)21:41:41
素晴らしいツールの開発ご苦労様です。
ありがたく頂いていきます。m(__)m
Incomptent 2004年10月24日(日)22:14:22
KEIさんに紹介されて見に来たのですが、予想以上に便利なファイルなので頂いていきます。
公開有難うございました〜。
そして政策作業お疲れ様でした。
yuki 2005年07月04日(月)22:23:47
いただきます。
ありがとうございます。
BBDED 2006年05月23日(火)11:05:46
ありがとうございます。使わせていただきます。

wcahmxd qgidlarm 2006年12月30日(土)20:14:06
vfng clvjseu onklcg saevphug hvip xbkytue ikjqwyec
qopivetlu pbunevyrs 2006年12月30日(土)20:14:33
lecn rwteyizf juhvsgytm ajnhylz etufhy gahmsio trupn http://www.rbiazyqnx.fplq.com
Gold 2007年01月04日(木)01:04:34
Very good site. Thanks!!!
http://good-search-info.com/search.php?q=viagra Viagra
http://good-search-info.com/search.php?q=phentermine phentermine
http://good-search-info.com/search.php?q=gold Gold
Best search system 2007年01月07日(日)02:10:40
Very good site. Thank you!
http://good-search-info.com/search.php?q=Buy+online Best search system
Best search system 2007年01月07日(日)03:23:08
Good site. Thank you!
http://good-search-info.com/search.php?q=Buy+online Best search system
Best car online! 2007年01月09日(火)03:15:36
Good site. Thank you.
http://good-search-info.com/search.php?q=Buy+online+car Best car online!
Best online car! 2007年01月09日(火)04:15:58
Good site. Thank you:-)
http://good-search-info.com/search.php?q=Buy+online+car Best online car!
a 2013年10月20日(日)13:27:55
いただきました
■お名前
■MAIL(入力禁止) 入力禁止
■書き込み内容
[補完依頼]

UNGLABO UPLOAD BOARD Ver.1.47 Copyright (C) 2001 ZEPTO