2016年2月22日月曜日

Windows10 で、デコの流れ(dll→il→dll→署名→インストール→稼働)

使ったもの

VS ・・・ dllをilに、ilをdllにするのに使う。インジェクションのDLL作るのにも使う
(ilasm.exeは、開発者コマンドプロンプトを開くとパスが通ったけど、実際どこにあるか見つけられなかった。)


ロリポップ!レンタルサーバ

やったこと

スマホに対象となるゲームをインストる。

ESで、ゲームをバックアップしてSDカードに保存

どうにかしてPCに転送。



PCに転送したアーカイブを7-zipで開く

アセットの中にある、いじりたいDLLを、ildasm.exeで開いて、ilにダンプする。


dllに戻すときは、VSの開発者コマンドプロンプトを開くとパスが通るので

このコマンドプロンプトからilasm.exeを使ってdllに戻す。


スマホに転送してインストール。(動くかわからない、署名ってどうなるんだろ)




こんな流れなのかな?



やってみた結果

dll 抜く、ilに変換、dllに戻す、アーカイブに突っ込む、スマホに転送

インストールできませんでした。



jarsignerで署名見るとわかりますが、消えてます。

再署名するにはマニュフェストとか消して署名つっこめばいいけど・・どうなのかな。


進展あったら追記します。



ロリポップ!レンタルサーバ

追記:
署名したらインストールできました。


稼働も確認できたのでOKとします。

署名がかわるので、運営が更新してもこっちは更新はいらなくなります。



あとは、運営側が非正規アーカイブをどう判定してるかを見て回避すれば大丈夫そうですね。

パケットでみた情報をヒントに探すとしたら

クエストジェネレートしてるとこと、コンプリートしてるとこ、あと圧縮解凍、暗号のところらへんを見れば良さそう。

アカ規制回の方は
デジタル署名のチェックか、インストール時リファラのチェックやってると思うのでソースを解析するか、
サーバーをたてておいて、不正だよって伝えるパケットをカットする方法になるのかな。



どのみちいろんなゲームやるし、使えそうなプロキシライブラリを探します。

FidderCoreってのを見つけたのですが非商用ライセンスが無かったです。勉強には使えそうです。


調べたけっかですが
どの言語でもURLを分解して投げなおせばプロキシもどきとして使えるみたいですね。
httpクライアントのある適当な言語で自分の好きなように作るのがよさそうです。

と思ったら、シンプルなHTTPproxyモドキで処理した場合、ゲームも動くし見た目は問題なかったのですがgoogleに何やってるのって叱られました。

(追記:fiddler4でも同じの出たから、ゲーム側には影響しないにしても、回避できないのかも。)



とりあえず次はfiddlerCore遊んでます。

fiddlerCoreを使う場合は以下の3個を登録しとけばよさそうでした。
            Fiddler.FiddlerApplication.BeforeRequest
                        += new Fiddler.SessionStateHandler(リクエスト中継前にしたい処理);
            Fiddler.FiddlerApplication.BeforeResponse
                        += new Fiddler.SessionStateHandler(レスポンス中継前にしたい処理);
            Fiddler.FiddlerApplication.AfterSessionComplete
                        += new Fiddler.SessionStateHandler(レスポンス中継後にしたい処理);

リクエストの握り潰し、レスポンスの改ざん、結果の確認、何ができるかいろいろ考えられますね。


追記:3月15日
smaliというのを見つけました。
https://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=https%3A%2F%2Fbitbucket.org%2FJesusFreke%2Fsmali%2Fdownloads&anno=2

java側の改造はこっちでやってる人が多いみたいで情報が結構おちてますね。

java -Xmx1G -jar baksmali.jar classes.dex
でoutフォルダに展開されるので、ごにょごにょ弄って
java -jar smali.jar -o classes.dex out/
で戻してあげればできあがりみたい。

ロリポップ!レンタルサーバ

0 件のコメント:

コメントを投稿