ついさっきThemidaうぜええええええって叫んでたんだけども、なんか突破できちった。
ああ、暗号化の方じゃないよ、仮想マシン検出の方ね。
チートしたい人とかはそっちはどうでもいいんだろうけど、まあ探せばアンパッカーきっと見つかるだろうからがんばって。
んで、仮想化検出を突破出来たと言っても、正直自分でも細かいところはわかってない。
というかわかろうとしていない。
動けばいいやっていう感じで今回は調べてるので。
んでまあどういうながれかっていうと、いやね、VMってばれてるってことは、どっかをみてVMかどうかを判別してるんだから、そこをどうにかすれば突破出来るのはまあ誰でも察しがつくだろう。
そこで、まあ一番資料が豊富そうなきがしてなおかつDirect3dに対応してるVMWareでなんかないものかとおもって、vmxの設定のリファレンスないかとおもってさがしてみたのよ。
で、まあこんなところがでてきた。
で、眺めていたら以下のような記述が。
disable VM-detection
あ、はい。
設定させていただきます。
this example prevents that the app
Sword of the New World
detects that it is running in a VM
あ、はい。
設定させていただきます。
両方の設定をくっつけたのが以下。
monitor_control.disable_directexec = "true"
monitor_control.disable_chksimd = "true"
monitor_control.disable_ntreloc = "true"
monitor_control.disable_selfmod = "true"
monitor_control.disable_reloc = "true"
monitor_control.disable_btinout = "true"
monitor_control.disable_btmemspace = "true"
monitor_control.disable_btpriv = "true"
monitor_control.disable_btseg = "true"
monitor_control.virtual_rdtsc = "false"
monitor_control.restrict_backdoor = "true"
isolation.tools.getPtrLocation.disable = "true"
isolation.tools.setPtrLocation.disable = "true"
isolation.tools.setVersion.disable = "true"
isolation.tools.getVersion.disable = "true"
それを対象の仮想マシンのvmxに設定して起動。
あ。突破出来た。
んが、くそ重くなってどうしようもない。
んでいじくってみた結果、monitor_control.virtual_rdtsc = “false”は除去。
軽くなった。
重いのはこいつが原因だったみたい。
時間の同期パラメータだそうだ。(falseだとホストの時刻を参照)
ということで以下が最終パターン。
monitor_control.disable_directexec = "true"
monitor_control.disable_chksimd = "true"
monitor_control.disable_ntreloc = "true"
monitor_control.disable_selfmod = "true"
monitor_control.disable_reloc = "true"
monitor_control.disable_btinout = "true"
monitor_control.disable_btmemspace = "true"
monitor_control.disable_btpriv = "true"
monitor_control.disable_btseg = "true"
monitor_control.restrict_backdoor = "true"
isolation.tools.getPtrLocation.disable = "true"
isolation.tools.setPtrLocation.disable = "true"
isolation.tools.setVersion.disable = "true"
isolation.tools.getVersion.disable = "true"
使用は自己責任で。
追記
その後、どこ使えばいいかちょこちょこいじって突き止めていったところ、一項目だけでいいことにたどり着いた。
それが以下。
monitor_control.restrict_backdoor = "true"
これなんなのかと思って前述のサイトでチェックしたら以下のような記述。
if you want to run VMware inside a VM you will need this setting – it may cheat any program that scans for the VMware-backdoor channel like Ken Katos vmchk.exe
It is NOT enough to cheat advanced VM-scanning methods like redpill or scoopy
かなり要約すると、仮想マシンじゃないふりを仮想マシンにさせるけど、高レベルなツールはだませないんだぜ、っていうフラグらしい。
先に説明読んでおけばまずこれだけで試したんじゃないだろうか。。。
んで、もうちょっと調べてみたらこんなのでてきた。
This closes the backdoor channel that VMware uses to communicate with guests via the vmware-tools.
なるほど、得心がいった。
VMWareがvmware toolsで通信するバックドアチャネルを閉じるのか。