【xtrap】不正プロテクトの回避や解析方法【npro】

このエントリーをはてなブックマークに追加
267262
確認したけど(PCに残っていた昔書いた解析資料を引っ張り出した)

以下が正しい
1.鯖->蔵通信で通常のゲームパケ(暗号化されている)の1つとしてnproキーが送られてくる
2.蔵で受信してパケ複合化16バイトのキーが抽出される
3.蔵がpipe経由でキーをgamemon.desにwrite
4.npro、1回目のキー複合化
5.1回目の複合化が終わると4Byteの暗号番号(現在は1109個の暗号式がある)と
  12Byteのキー本体が生成される
6.暗号式ごとにキー本体を計算し12Byteの応答キーを生成
7.4Byteの暗号式番号と応答キーを暗号化して12バイトのデータを生成
8.gamemon.desからパイプwriteで蔵へデータを書き込む
9.蔵はデータを暗号化してパケに載せて鯖へ送る
10.鯖でキーを確認して正しくなければ蔵を切断

探すコツはCreatePipeで生成されたハンドルをDuplicateHandleしたハンドルへの
WriteFile時のバッファにメモリアクセスブレーク貼ってひたすら追いかけると
gamemon.desにたどりつく
キー受け渡し時以外でもハートビートで8Byte-12Byteのデータをやり取りしてるので
注意、ハートビートはログとってればすぐわかるのでキー転送はそれ以外の時で
キー転送の時にバッファを追いかける