0

関数内でデータを読み取ることができるかどうか疑問に思っていました。
回り道を使用して関数をフックし、パラメーターを自由に変更できることを知っています。
しかし、迂回路を使用して理解しているのはそれだけです。

例えば:

//cryptkeys
typedef int (WINAPI *pCryptKey)(int crypt1, int crypt2, int crypt3);
int WINAPI MyCryptKey(int crypt1, int crypt2, int crypt3);
pCryptKey MyCrypt2Key = (pCryptKey)(0x60FF50);

int WINAPI MyCryptKey(int crypt1, int crypt2, int crypt3)
{
    cout << crypt1 << crypt2 << crypt3 << endl;
    return MyCrypt2Key(999,135,2);
}

そのコードは、ゲーム内から暗号鍵関数を迂回し、呼び出される前に引数を変更します。そのため、呼び出されたときに引数が変更されました。

引数ではなく関数内からのデータがあればどうなるか考えていました。
変更または表示するにはどうすればよいですか?

関数全体を書き直す必要がありますか?

私が取得しようとしているのは、ゲーム自体を使用してパケットを暗号化および復号化することです。
これを行う関数をフックしましたが、できることは引数を変更することだけです。
そして、ゲームはただそのことを続けています。

暗号化される前にパケットを変更したため、別のパケットが送信されます。しかし、これは、パケットを送信して変更した場合にのみ発生します。ゲームによって呼び出されるのを待たずに関数を文字通り呼び出して、値を変更したかったのです。
ゲームを使用して自分の暗号化されていないパケットを入力し、暗号化を押して暗号化された値を確認したり、その逆を行ったりします。

チュートリアルへの説明またはリンクは素晴らしいでしょう。


私が次のようになったらどうなりますか:

int WINAPI MyCryptKey(int crypt1, int crypt2, int crypt3)
{
    //dont know whats supposed to be in here. But it should be alot of codes.
}

そして、次のようにリターンを呼び出します。

int cryptValue = MyCrypt2Key(999,135,2);
cout << cryptValue << endl;    //to get the return?
4

1 に答える 1