プログラム
2015年03月04日
Originでログイン出来ない病
EAのゲームランチャーOriginで
ログイン出来なくなる病にかかる環境があるようです。
コレにかかるとマルチプレイが一切出来なくなります。
さらにこの病、今のところEAのサポートに問い合わせても
Originを再インストールしろだのアンチウイルスソフトを無効化しろだのありきたりな
対処方を通知されるだけで、解決しません。
さすがにPCの再インストールとかあほらしいので
Originでログイン出来ない病を、誤魔化せるかもしれない方法を記載しておきます。
準備
1.Windowsで新しいユーザーを作成する
ではTestと言うユーザー名のアカウントを作成する
2.Testアカウントにログインする
デスクトップが開いたらログアウトで通常使うアカウントへログインする
ゲーム立ち上げ
1.管理者でコマンドプロンプトを立ち上げる
2.以下を入力
64bitOSの場合
runas /user:ユーザー名 "C:\Program Files (x86)\Origin\Origin.exe"
32bitOSの場合
runas /user:ユーザー名 "C:\Program Files\Origin\Origin.exe"
例)Testと言うアカウントを作成した場合の64bitOSの場合
runas /user:test "C:\Program Files (x86)\Origin\Origin.exe"
となる
コマンドを入力するとアカウントのパスワードが聞かれるので
それを入力する
成功すると、Originが立ち上がるのでログインすると
ログイン出来なくなる病にならずにログインできる可能性が高いです。
コマンドはバッチファイルを作成すると楽です。
ログイン出来なくなる病にかかる環境があるようです。
コレにかかるとマルチプレイが一切出来なくなります。
さらにこの病、今のところEAのサポートに問い合わせても
Originを再インストールしろだのアンチウイルスソフトを無効化しろだのありきたりな
対処方を通知されるだけで、解決しません。
さすがにPCの再インストールとかあほらしいので
Originでログイン出来ない病を、誤魔化せるかもしれない方法を記載しておきます。
準備
1.Windowsで新しいユーザーを作成する
ではTestと言うユーザー名のアカウントを作成する
2.Testアカウントにログインする
デスクトップが開いたらログアウトで通常使うアカウントへログインする
ゲーム立ち上げ
1.管理者でコマンドプロンプトを立ち上げる
2.以下を入力
64bitOSの場合
runas /user:ユーザー名 "C:\Program Files (x86)\Origin\Origin.exe"
32bitOSの場合
runas /user:ユーザー名 "C:\Program Files\Origin\Origin.exe"
例)Testと言うアカウントを作成した場合の64bitOSの場合
runas /user:test "C:\Program Files (x86)\Origin\Origin.exe"
となる
コマンドを入力するとアカウントのパスワードが聞かれるので
それを入力する
成功すると、Originが立ち上がるのでログインすると
ログイン出来なくなる病にならずにログインできる可能性が高いです。
コマンドはバッチファイルを作成すると楽です。
2013年06月29日
APIモニター
ネタが無いのでツール紹介で記事を水増しですよ
体験版の制限解除などでは、デバッガでアセンブラを追いかける前に
WinAPIの呼び出しを抽出してある程度の当たりをつける場合が多いです。
今回紹介するのは、WinAPI呼び出しを丸ごと吸い出せるツールとなります。
http://www.rohitab.com/apimonitor
実行方法は
・ツールを起動
・キャプチャーしたいAPIをチェック
・対象のアプリを起動
・キャプチャーするか聞かれるのでキャプチャーする
以上です。
ReadProcessMemory、WriteProcessMemory
Socket通信内容もキャプチャーするので、ゲームの解析にも利用できます。
チート防止機能が無ければの話ですが・・・
体験版の制限解除などでは、デバッガでアセンブラを追いかける前に
WinAPIの呼び出しを抽出してある程度の当たりをつける場合が多いです。
今回紹介するのは、WinAPI呼び出しを丸ごと吸い出せるツールとなります。
http://www.rohitab.com/apimonitor
実行方法は
・ツールを起動
・キャプチャーしたいAPIをチェック
・対象のアプリを起動
・キャプチャーするか聞かれるのでキャプチャーする
以上です。
ReadProcessMemory、WriteProcessMemory
Socket通信内容もキャプチャーするので、ゲームの解析にも利用できます。
チート防止機能が無ければの話ですが・・・
2013年04月07日
PCの個体識別
ネトゲーでチートしていると、かなりの確率でBANされます。
管理の行き届いたゲームでは、一回BANされると
再度新アカウントを作成しても、チートしていなくてもすぐにBANされます。
このような状態になるのは、運営がPCの個体情報を収集してチーターの
PCを特定しているからです。
PCを区別するためのデータとして一般的なものは
LANカードのMACアドレスです。
しかしMACアドレスでの判断は一般的になりすぎて、BANされたらとりあえず
MACアドレスを変えて新規プレイみたいな感じになっており
MACアドレスだけのチェックではチーターを特定できません。
では、どうするのでしょうか。
近頃の流行は、デバイスのGUIDを取得することです。
デバイスのGUIDといっても、ユーザーごとにPCの環境は
まちまちなので、ユーザーのPCは必ず搭載している
デバイスがよいでしょう。
そう考えると、使えそうなものは
HDD、ネットワークカード、グラボなどのGUIDが良さそうです。
今回は、PCごとに異なるHDDのGUID取得方法のサンプルを
乗せたいと思います。
この方法はガンダムオンラインで実際にチーター追跡に使われている方法なので
個人情報の無断収集には該当しないと思われます。
ソースの説明を簡単にすると
windowsがインストールされているフォルダを得る
そのフォルダーのドライブを得る
ドライブのGUIDを得る
とこれだけです。
http://members.jcom.home.ne.jp/alpa001/Blog/Src/getvolumeguid.zip
こういうのを、ログイン認証と合わせて自作アプリに
組み込んでおけば、不正に拡散されても多少は追跡可能かと追います。
ここまで読んでいただいた方の中には
GUIDをチェックしているゲームでBANされた場合は
PCを買い換えないと、二度とプレイできないのかと不安になったかと思います。
心配することはありません。
GUIDもレジストリエディタで変更することができます。
HDDのGUIDであればHKEY_LOCAL_MACHINE\SYSTEM\MountedDevicesに
ドライブの一覧があるので、該当するものを書き換えて
PCを再起動すればよいです。
*テストした感じでは問題無かったですが、どのような不具合が発生するかは不明です
最悪、windowsが起動しなくなるかもしれません。
管理の行き届いたゲームでは、一回BANされると
再度新アカウントを作成しても、チートしていなくてもすぐにBANされます。
このような状態になるのは、運営がPCの個体情報を収集してチーターの
PCを特定しているからです。
PCを区別するためのデータとして一般的なものは
LANカードのMACアドレスです。
しかしMACアドレスでの判断は一般的になりすぎて、BANされたらとりあえず
MACアドレスを変えて新規プレイみたいな感じになっており
MACアドレスだけのチェックではチーターを特定できません。
では、どうするのでしょうか。
近頃の流行は、デバイスのGUIDを取得することです。
デバイスのGUIDといっても、ユーザーごとにPCの環境は
まちまちなので、ユーザーのPCは必ず搭載している
デバイスがよいでしょう。
そう考えると、使えそうなものは
HDD、ネットワークカード、グラボなどのGUIDが良さそうです。
今回は、PCごとに異なるHDDのGUID取得方法のサンプルを
乗せたいと思います。
この方法はガンダムオンラインで実際にチーター追跡に使われている方法なので
個人情報の無断収集には該当しないと思われます。
ソースの説明を簡単にすると
windowsがインストールされているフォルダを得る
そのフォルダーのドライブを得る
ドライブのGUIDを得る
とこれだけです。
http://members.jcom.home.ne.jp/alpa001/Blog/Src/getvolumeguid.zip
こういうのを、ログイン認証と合わせて自作アプリに
組み込んでおけば、不正に拡散されても多少は追跡可能かと追います。
ここまで読んでいただいた方の中には
GUIDをチェックしているゲームでBANされた場合は
PCを買い換えないと、二度とプレイできないのかと不安になったかと思います。
心配することはありません。
GUIDもレジストリエディタで変更することができます。
HDDのGUIDであればHKEY_LOCAL_MACHINE\SYSTEM\MountedDevicesに
ドライブの一覧があるので、該当するものを書き換えて
PCを再起動すればよいです。
*テストした感じでは問題無かったですが、どのような不具合が発生するかは不明です
最悪、windowsが起動しなくなるかもしれません。
2012年10月27日
DLLを使用しないコードインジェクト
昨今のチートでは、対象アプリに自作DLLをインジェクトして
いろいろ都合が良いように、自作DLL経由でアプリの操作を行うという
手法が流行っています。
ゲームにはチート防止機能がありますが、チート防止機能が有効になる前に
自作DLLをインジェクトすることで、容易にチート防止機能をすり抜けることができ
かつ、DLL自体の作成にはさほど技術力を必要としないので
どのゲームのチートでも専用DLLを使うみたいな流れになっています。
自作DLLは扱いが楽で個人で利用するには便利なのですが
公開する場合はどうでしょうか
インジェクトするDLLが丸わかりなので、DLL名とサイズをチェックするだけで
簡単に検出されてしまいます。これでは配布に耐えません。
今回の記事は、配布に耐えるツールの初期版としてDLLを使わない
コードインジェクトのサンプルを載せます。
DLLを使わないので配布は1つのファイルだけですみシンプルです。
このサンプルは、ターゲットアプリの任意(毎回違う)アドレスに
ハックコードを挿入する物です。
DLLではないので、検出側は全メモリを総なめにチェックするか
このサンプルであれば、API呼び出しを検出するかでしか検出できないと思います。
ソースはVisualStudio2010で作成しています。
コードの仕組みはソースを読んでいただく方が良いと思いますので
ここでは説明しません。
使い方は
1.ソースをビルド
2.できあがったバイナリを実行
3.電卓を起動
64bitOSの方は32bitのcalc.exeを利用してください。サンプルは32bit用です。
この時点ですで電卓にハックコードがインジェクトされているはずです。
4.電卓画面でPageUpキーを押すと
インジェクトしたコードがメッセージボックスを表示します。
http://members.jcom.home.ne.jp/alpa001/Blog/Src/XInject_Base.zip
いろいろ都合が良いように、自作DLL経由でアプリの操作を行うという
手法が流行っています。
ゲームにはチート防止機能がありますが、チート防止機能が有効になる前に
自作DLLをインジェクトすることで、容易にチート防止機能をすり抜けることができ
かつ、DLL自体の作成にはさほど技術力を必要としないので
どのゲームのチートでも専用DLLを使うみたいな流れになっています。
自作DLLは扱いが楽で個人で利用するには便利なのですが
公開する場合はどうでしょうか
インジェクトするDLLが丸わかりなので、DLL名とサイズをチェックするだけで
簡単に検出されてしまいます。これでは配布に耐えません。
今回の記事は、配布に耐えるツールの初期版としてDLLを使わない
コードインジェクトのサンプルを載せます。
DLLを使わないので配布は1つのファイルだけですみシンプルです。
このサンプルは、ターゲットアプリの任意(毎回違う)アドレスに
ハックコードを挿入する物です。
DLLではないので、検出側は全メモリを総なめにチェックするか
このサンプルであれば、API呼び出しを検出するかでしか検出できないと思います。
ソースはVisualStudio2010で作成しています。
コードの仕組みはソースを読んでいただく方が良いと思いますので
ここでは説明しません。
使い方は
1.ソースをビルド
2.できあがったバイナリを実行
3.電卓を起動
64bitOSの方は32bitのcalc.exeを利用してください。サンプルは32bit用です。
この時点ですで電卓にハックコードがインジェクトされているはずです。
4.電卓画面でPageUpキーを押すと
インジェクトしたコードがメッセージボックスを表示します。
http://members.jcom.home.ne.jp/alpa001/Blog/Src/XInject_Base.zip
2011年11月25日
ハードウエアブレークポイントでいろいろヤル
今回はハードウエアブレークを使ってプログラムの解析するために
役立つプログラムを記事にしたいと思います。
みなさんは解析していて、対象部分がやたらとコールされてデバッガのブレークでは
ブレークしまくって困るとか、ターゲットがチェック対象になっていて一切書き換えられないとかで
困ったことがあると思います。
こんな時用に今回のプログラムを作ってみました。
もともとはPunkBusterというプロテクタのログを取るために作った物です。
それをサンプルとして役立つ部分を抜粋した物が今回のネタです。
デバッガでも同じ事ができますが、こっちはプログラムなので処理を自動化できます。
チート検出をする側はデバッグレジスタをチェックすればいいだけなので
このモジュールがあれば、すべてのプロテクタをすり抜けて何でもできるというわけではありません。
その気になればすぐ検出されてしまします。
問題点としては
・ブレークするたびに例外を発行するので、CPUに余計な負荷がかかる
・4個までしか設置できない
・スレッド単位で設定するので新規スレッドに設置するのには一手順必要
というのがあります。
言葉で説明するよりソース見た方が早いと思いますので
サンプルを置いておきます。
VC2010で作成してます。
ハードウエアブレークを使っているのでVC2010のデバッガではデバッグできません。
http://members.jcom.home.ne.jp/alpa001/Blog/Src/bpsample.zip
役立つプログラムを記事にしたいと思います。
みなさんは解析していて、対象部分がやたらとコールされてデバッガのブレークでは
ブレークしまくって困るとか、ターゲットがチェック対象になっていて一切書き換えられないとかで
困ったことがあると思います。
こんな時用に今回のプログラムを作ってみました。
もともとはPunkBusterというプロテクタのログを取るために作った物です。
それをサンプルとして役立つ部分を抜粋した物が今回のネタです。
デバッガでも同じ事ができますが、こっちはプログラムなので処理を自動化できます。
チート検出をする側はデバッグレジスタをチェックすればいいだけなので
このモジュールがあれば、すべてのプロテクタをすり抜けて何でもできるというわけではありません。
その気になればすぐ検出されてしまします。
問題点としては
・ブレークするたびに例外を発行するので、CPUに余計な負荷がかかる
・4個までしか設置できない
・スレッド単位で設定するので新規スレッドに設置するのには一手順必要
というのがあります。
言葉で説明するよりソース見た方が早いと思いますので
サンプルを置いておきます。
VC2010で作成してます。
ハードウエアブレークを使っているのでVC2010のデバッガではデバッグできません。
http://members.jcom.home.ne.jp/alpa001/Blog/Src/bpsample.zip