IDAとチートエンジンがあります。私がやろうとしているのは、実際にはウィンドウの幅と高さだけでアプリケーションの解像度を変更することです。ちょうど幅と高さを変更してもアプリケーションは正しく動作しませんが、ディスアセンブラを理解するのは私の最初のステップです。 長い検索ではなく、CreateWindowEx関数が見つかりました。私は、アプリケーションがウィンドウを作成し、ディスアセンブラでウィンドウの幅と高さを変更する
push 1E0h
push 280h
…. ;some code
mov esi, ds:GetSystemMetrics
push 0 ;nIndex
call esi ;GetSystemMetric
push 1 ;nIndex
move edi,eax
call esi ;GetSystemMetrics
... ;somecode
call ds:CreateWindowExA
もpush 1E0h
= 480 = 640 push 280h
たようまあ、見えます。うーん、幅と高さを見つけたように見えるので、一定の住所があり、それを変えようとする。 (実際に検索することで、私はこの定数で2つの場所を見つけることができます。しかし、それらのすべてはウィンドウを作成するためには使用されず、ウィンドウの幅と幅を変更しようとしているので、アプリケーションを実行し、エンジンを騙す。
進値:280(1E0) スキャンタイプ:正確な値 タイプ:
最初のスキャンを4バイト:私たちのアドレスにさえ近いそれらのアドレス以外のリストで33
表情を発見しましたIDAにいたそして私が正しく理解するならば、チートエンジンは、Idaがコードを分析してアドレスを見つける間に、アプリケーションを実行するために使用されるメモリからアドレスを取得するためです。私が正しく言ったのか間違ったのか分かりません。あなたの側からの説明は良いでしょう。しかし問題はそれにありません。
アドレスを手動で追加できます。私たちはそれを得ました。この住所の価値は163944です。何ですか? 16進数:00028068を見てみよう。私は280を見ているが、68はどこから来たのだろうか?高さ:122984-> 0001E068を見てみましょう。
だから今私はそれがなぜそうなのか疑問を持っていますか?最終的にこの68がどこから来たのですか? 1E0は1E068の等価ではありません。私が間違っている?私が逃した何か提案。
[OK]をもう一度、変更してみましょう。私は16進数で50068と3C068の2種類を結びました。そして、68がなければ、実際には(私の意見では:))と思われます。彼らの誰も働いていない、まあ私はそれはおそらくアプリケーションの使用後定数ポインタ(私は思うが、おそらく私は間違っている)だと思う。だから私もポインタを変更する必要があります。 このアドレスにアクセスするものを見つけましょう。さて、私は問題を抱えていますが、このアドレスに何がアクセスしているかを知るための単純な方法で、アプリケーションの状態を変更する必要があります。値= 5、値の値を3に変更するボタンをクリックし、そのアドレスへのアクセス。しかし、私の場合、ウィンドウはすでに作成されており、このリストを取得する方法はわかりません。だから、今のところ私はこの点で固執しています。私は何かを忘れているかもしれません。しかし、どの方向への移動や、何が間違っていたかについての示唆は役に立ちます。