プラグイン集

無料ブログはココログ
2022年5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

サンプルJS

  • ユーロバカ一代の締切
    ・・・初期化中・・・

« サンプルJS改修 | トップページ | チノちゃん誕生日おめでとう »

2016年11月 3日 (木)

unityの変数にアタックする

Win32のネイティブアプリなら、T-searchで変数を攻めることができるが、Unityは(私の技量では)残念ながら変数を見つけることができなかった。

プログラムである以上、次の瞬間に値を保持するためにはメモリー上に格納する。そのアドレス、と型が分かれば、値のバイナリの表現方法が決まる。
Unityは.NET上で動作する、中間コード方式だ。ならば、中間コードをアタックする方が、自分の技量として速いのではないだろうか。

と言う事で、検索。あっさりと方法が見つかる。※この記事は、逆アセンブルやリバースエンジニアリングを推奨する記事ではありません。技術的な検証を目的にしています。

どのソフト書き換えるか、「秒速巫女」。どうしてもフランちゃんまで行かない。

ILSpyというソフトで秒速巫女_Data\ManagedのAssembly-CSharp.dllを開く。素晴らしい、ildasmよりもC#コードに戻る。しかも、どんどん参照先、参照元をトレースできるのが素晴らしい。しかしながら、このソフトは書かれている内容を見ることはできても、書き換え手元に戻すことはできない。

もう一つのサイトにたどり着く。う~んやはり、JustDecompile+Assembly Editorの組み合わせしかないのか。仕方ないのでインストール。

JustDecompileでAssembly-CSharp.dllをオープン。ILSpyで辺りを付けていたので、迷いなく、ParamControllerを開く。

Asm_op_01this.gameTimer.Init(5, 0, 0);は、それらしいところありました。見事にリテラル。ありがとうございます。ここの値を増やせばOKです。

ここからは、Reflexilの力を借りて、アセンブラプログラミング。8までならldc.i4.Xで直接指定ができる。今回は15を代入したいので、ldc.i4.sにして、オペランドタイプをSByte、オペランドを15にする。
Asm_op_02正しく書き換えが成功していれば、アップデートボタンをクリックすることで反映される。

その周囲にそれっぽいパラメーターが、いろいろあるので、カスタムするには楽しいかもしれない。アセンブリ言語は頑張れ。

Asm_op_03ちゃんと15分に書き換わったぞい。
init周り読むと、その辺でパラメーター調整しているから、いろいろ書き換えるられそうだ。

もう一度書くけど、リバースエンジニアリングや逆アセンブルを推奨している訳じゃないからな。無理なバイナリ書けばパソコンぶっ壊れる可能性も当然あるし、ウイルス化する恐れもある。その辺の責任をすべて理解したうえで、実行するメリットと社会的責任を天秤にかけてください。読者が何か起こったことに対する法的責任は無いし取れない。

« サンプルJS改修 | トップページ | チノちゃん誕生日おめでとう »

パソコン・インターネット」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: unityの変数にアタックする:

« サンプルJS改修 | トップページ | チノちゃん誕生日おめでとう »