1.アクションスタイルは、いわゆるアクションスタイルとは、APIを使用してコマンドをWindowsまたはAPIに送信してマウス、キーボードなどを制御することです「石」プラグイン。 (この種のプラグインは完全にゴミ、TMD、APIの少しを知っている人なら誰でも何をすべきかを知っていますが、このプラグインはエントリーレベルの良いことでもあります。あなたの士気を改善する ^_ ^)
2。このプラグインは、このプラグインを行う場合、メモリアドレスを少し理解し、APIをマスターする必要があります - 「留」では、メソッドを作成することは、アドレスコードを見つけることです。 (この種のプラグインは前のプラグインよりも少し難しいですが、このプラグインを使用することも困難です~~このプラグインはメモリアドレスの理解とアプリケーションをすばやく改善できます。プログラミングテクノロジーを改善するためのこと)
3.トロイの木馬スタイル。このプラグインの目的は、プラグインメーカーがユーザーのパスワードを盗むのを助けることです。それについて話すには、このプラグインを行うと、一定の困難があり、その原則がファンデーションを迎えることができます。指定されたメールアドレスに。 (私は以前にこのようなことを書いたことがありますが、私はそれを使用したことがありません。私はこのことが非常に不道徳であることを知っていますので、将来使用しないでください!~~)
4.加速タイプ、このプラグインはゲームをスピードアップできます...(すみません、実際にこの種のことをしていないので、自分自身にコメントすることはできません、恥ずかしいです~~)
5。パケットスタイルでは、このプラグインは高度なプラグインであり、強力なプログラミングスキルを書く必要があります。その原則は、最初にパケットをインターセプトし、それを変更してから転送することです(Kao、それを試すことができると言うのは簡単です~~~~)。このプラグインは、ほとんどのオンラインゲームに適しています。
これらのプラグインの中で、最初の3つはVBやDelepsなどの言語を使用して簡単に実装できますが、後者2つはVCなどのプログラミングツールを使用して簡単に実装する必要があります。 (ph、次の故障を聞いてください)
(私はプログラム愛好家であり、プロのプラグインではないので、不適切な記事があれば私を許してください。将来の記事では、アクション、ローカル修正、トロイの木馬、パケットスタイルの執筆プロセスを行います。詳細な説明))
最後に、アクションプラグインを分析しました。
私の知る限り、ローカル修正プラグインの最も典型的なアプリケーションは「ELF」ゲームにあります。私はほぼ1年前(「ELF」はまだテスト段階にあります)であり、私の会社の多くの同僚は「ELF」をプレイしたので、ゲームのデータ処理方法を見て、サーバーに送信した情報がメモリに存在することを発見しました(読んだ後の最初の感覚は次のとおりです。言い換えれば、その時点でメモリアドレスを変更するのに十分です私のアイデアに従って住所とシステムに自動的に送信され、それは実際に成功しました。ここでナンセンスを話します~~~~、OK、このタイプのプラグインがどのように作られているかを見てみましょう:
プラグインを行う前に、ここではWindowsメモリを特定する必要があります。同じWindows APIを理解し、このプラグインおよびAPIアプリケーションの生産を明確に確認できるようにします(オンラインゲームの通常の操作を確保するために、見つける方法については説明しませんメモリアドレス):
1.まず、ゲームウィンドウのハンドルを知るためにFindWindowを使用する必要があります。これは、ゲームが実行されている後にプロセスのIDを知る必要があるからです。
hwnd findwindow(
lpctstr lpclassname、//クラス名へのポインター
LPCTSTR LPWINDOWNAME //ウィンドウ名へのポインター
);
2. getWindowThreadProcessIDゲームウィンドウの対応するプロセスのプロセスIDを取得します。
dword getWindowThreadProcessid(
hwnd hwnd、//ウィンドウのハンドル
lpdword lpdwprocessid //プロセス識別子の変数のアドレス
);
3。ゲームプロセスIDを取得した後、次のことは、使用される関数の特定の使用方法でプロセスを開くことです。
OpenProcessを処理します(
dword dwdesiredAccess、//アクセスフラグ
bool binherithandle、//継承フラグを処理します
dword dwprocessid //プロセス識別子
);
DwdesiredAccessは、アクセスメソッドが設定されている場合、Process_All_Accessを使用してMSDNをチェックできる場所です。
4.プロセスを開いた後、メモリで動作するために機能を使用して、WriteProcessMemoryを使用してメモリアドレスにデータを書き込む必要があります(ReadProcessMemoryなどの他の操作方法など。 、writeprocessmemoryの使用を見てみましょう。
bool writeprocessmemory(
hdprocess、//メモリが書かれている処理を処理するハンドル
lpvoid lpbaseaddress、//書き込みを開始するアドレス
lpvoid lpbuffer、//バッファーへのポインターでデータを書き込む
dword nsize、//書き込むバイト数
lpdword lpnumberofbyteswritten //書き込まれたバイトの実際の数
);
5.以下は、Closehandleでプロセスハンドルを閉じるためであり、完了します。
これは、このタイプのゲームを実装する方法ですXXゲームの上記の方法に従ってコードを研究しましょう。
const
ResourceOffset:DWORD = $ 004219F4;
リソース:DWORD = 3113226621;
ResourceOffset1:DWORD = $ 004219F8;
リソース1:DWORD = 1940000000;
ResourceOffset2:DWORD = $ 0043FA50;
Resource2:DWORD = 1280185;
ResourceOffset3:DWORD = $ 0043FA54;
リソース3:DWORD = 3163064576;
ResourceOffset4:DWORD = $ 0043FA58;
リソース4:DWORD = 2298478592;
var
HW:hwnd;
PID:DWORD;
H:サンドル;
TT:枢機inal;
始める
hw:= findwindow( '' xx ''、nil);
hw = 0の場合
出口;
getWindowThreadProcessID(HW、@PID);
h:= openProcess(process_all_access、false、pid);
H = 0の場合
出口;
flatcheckbox1.checked = trueの場合
始める
writeprocessmemory(h、pointer(resource offset)、@resource、sizeof(resource)、tt);
writeprocessmemory(h、pointer(resourceoffset1)、 @resource1、sizeof(resource1)、tt);
終わり;
flatcheckbox2.checked = trueの場合
始める
writeprocessmemory(h、pointer(resourceoffset2)、 @resource2、sizeof(resource2)、tt);
writeprocessmemory(h、pointer(resourceoffset3)、 @resource3、sizeof(resource3)、tt);
writeprocessmemory(h、pointer(resourceoffset4)、 @resource4、sizeof(resource4)、tt);
終わり;
messagebeep(0);
CloseHandle(h);
近い;
このゲームは複数のアドレスを使用して送信されるデータを確認するため、このタイプのゲームのプラグインを作成することは難しくありません。最も難しいのは、これらのアドレスを見つけることです。
(あなたはすでにこの方法をはっきりと見ており、特定の実践はすべての人に依存します。ハハ~~~~~~ですが、あまりにも早く幸せにならないでください。将来の記事のプラグインの種類。
前回、5種類のプラグインを概念しています
まず、アクションスタイルのプラグインについて話しましょう。これは、プラグインを最初に書いたときに行った最も簡単なプラグインです。
私はまだ「石」の時代にいたとき、私は他の誰かがソフトウェア(プラグイン)を持っているのを見て、人々が歩き回ることができるのを見ました(その時点でプラグインが何をしているのかわかりませんでした^_^ )、私はこの種のソフトウェアがここに勉強するために来ていることがわかりました(私はそれを取った後、他の人がそれをプラグインと呼ぶのを聞きました)さまざまな場所でマウスをクリックするよりも、この関数を実装する衝動があり、これらの機能を実装するためにMSDNに行きました。
1.まず、現在のマウスの位置を知る必要があります(現在のマウスの位置を復元するには)。これは、次のように使用されるAPI関数getCursorposを使用する必要があります。
bool getCursorpos(
loptoint loptoint //カーソル位置の構造のアドレス
);
2。マウスの位置をキャラクターが行く場所に移動すると、セットカルポス関数を使用してマウスの位置を移動する必要があります。
bool setcursorpos(
int x、//水平位置
int y //垂直位置
);
3.マウスをシミュレートして、Mouse_Event関数を使用して使用する必要があります。
void mouse_event(
dword dwflags、//さまざまな動きを指定するフラグ/クリックバリアント
dword dx、//水平マウスの位置または位置の変化
dword dy、//垂直マウスの位置または位置の変化
dword dwdata、//ホイールの動きの量
dword dwextrainfo // 32ビットのアプリケーション定義情報
);
DWFLAGSでは、MouseEventF_Moveの移動、左のボタンでMouseEventF_LeftDownを押し、左のボタンでMouseEventF_Leftupなどの利用可能なイベントがあります
さて、以前の知識により、キャラクターの削除がどのように実装されているかを見ることができます。
getCursorpos(ポイント);
setCursorpos(ranpoint(80、windowx)、ranpoint(80、windowy)); // ranpointは自家製のランダム座標関数です
mouse_event(mouseeventf_leftdown、0,0,0,0);
mouse_event(mouseeventf_leftup、0,0,0,0);
SetCursorpos(Point.X、Point.Y);
上記のコードを読んだ後、キャラクターのワンダリングは非常に簡単だと思いますか?〜、私は1つを描いて3つを模倣することができます、そして、この手法を使用して実装できる多くの良いことがあります(私はずっと前に、TMD、これごみのプラグインメソッドです。次に、ゲームの自動攻撃方法を見てみましょう(ゲームの攻撃のためにショートカットキーをサポートする必要があります)使用されているAPIは異なります~~~~、今回は使用したいのはKeyBD_Event関数です。これは次のように使用されます。
void keybd_event(
BYTE BVK、//仮想キーコード
バイトbscan、//ハードウェアスキャンコード
dword dwflags、//さまざまな関数オプションを指定するフラグ
dword dwextrainfo //キーストロークに関連付けられた追加データ
);
また、スキャンコードを直接使用できないことを知る必要があります。
uint mapvirtualkey(
uint ucode、//仮想キーコードまたはスキャンコード
uint umaptype //実行する翻訳
);
さて、このクイックコネクトキーはctrl+aであるとしましょう。
keybd_event(vk_control、mapvirtualkey(vk_control、0)、0,0);
keybd_event(65、mapvirtualkey(65,0)、0,0);
keybd_event(65、mapvirtualkey(65,0)、keyeventf_keyup、0);
keybd_event(vk_control、mapvirtualkey(vk_control、0)、keyeventf_keyup、0);
最初に、シミュレーションでCTRLキーを押してから、Aキーを押し、Aキーをリリースし、最後にCTRLキーをリリースします。
(ここで見ると、私はほぼ単純なプラグインを確実に理解しています~~~~試してみましょうか?早く幸せにならないでください。