書き溜めたエントリなんだけど、これから更新する機会が減りそうなので進んだところまで一気にBlogに上げてしまうことにした。
願わくば、これをみて解析の道に入り込む人が増えることを。
とりあえず、現状の整理
ゲームクライアントはアンパックできたと思われる。
EHSvc.dll はあの後起動させてみようとしてもエラーが出る。
どうやら、Themidaのアンパックは想像以上に難しいらしい。
アンパックしたゲームクライアントを実行するとHShieldのエラー。
偽者の EHSvc.dll を元のファイルと入れ替えてゲームを起動すると元のファイルに戻されてしまう。
どうもゲームクライアント側でHackShieldのアップデータを呼び出してから、ゲームの起動を行っているようだ。
というわけで、まずは本丸の前にアンパックしたファイルを走らせることができるようにHackShieldのアップデータを潰さねばならない。
まずは、適当なexeと HSUpdate.exe を取り替えてみる。
が、ゲームクライアントが沈黙。
ollydbgで見てみると、WaitForSingleObjectで何かを待ち受けて無限ループしている模様。
そしてその前に、CreateEvent を実行している箇所を見つける。
HSUpdate.exe もollydbgで開いてみるとゲームクライアントと同じ名前のイベントをシグナル状態にしている箇所を発見。
そのほかいろいろやるうちに、どうも ゲームクライアントはイベントを作ってHSUpdate.exe の実行を待ち、 HSUpdate.exe はさらにその下で autoup.exe を実行し、そのプロセスIDをレジストリに記入。
ゲームクライアントはプロセスIDをレジストリから読んで、autoup.exe の実行終了まで待つ。
また、ゲームクライアントは HSUpdate.exe 側で新しくイベントを作って、そのイベントが作成されたかを待ち受ける。
というような動作をしているらしいことがわかった。
ここまで判れば後は試してみるばかり。
・メモ帳でも立ち上げてそのプロセスIDをレジストリに書き込み。
・イベントを擬似
・適当なウェイト
・メモ帳終了
上記を行うプログラムを即興で組んで、HSUpdate.exe と差し替え。
とりあえず、これでアップデータを回避することができた。
さて、これからどうしよう……
そんな難しいことしなくても・・・
ファイルを右クリックしてプロパティ開いてセキリティタブから書き込み否定にしたらいいだけなのに・・
・メモ帳でも立ち上げてそのプロセスIDをレジストリに書き込み。
・イベントを擬似
・適当なウェイト
・メモ帳終了
をくんだやつください。
メールアドレス欄にメールアドレスを書いておくのでお願いします!
とりあえずHS回避はできるのですがアップデート回避ができないんです・・・。