找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 198|回复: 0

鼠标指针

[复制链接]

1793

主题

457

回帖

0

积分

管理员

积分
0
发表于 2013-9-16 22:31:08 | 显示全部楼层 |阅读模式
http://yunpan.cn/QGq45ZIECxnyU


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, TlHelp32,StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Image1: TImage;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

    type
    PGetGwCallParam = ^TGetGwCallParam;
    TGetGwCallParam = packed record
    GameBase,SXSpeedword;

    end;

var
  Form1: TForm1;
  游戏IDWORD;
  打开句柄:THANDLE;

const
  PassAddr1=$00405D86;   //破解地址
  PassData1:array[1..6] of byte=($90,$90,$90,$90,$90,$90);

  PassAddr2=$00405E3F;   //0F85 7C000000      JNZ 启动器.00405EC1                         ;  t
  PassData2:array[1..6] of byte=($E9,$7D,$00,$00,$00,$90);

  PassAddr3=$00405F43;   //0F85 7C000000      JNZ 启动器.00405FC5                         ;  t
  PassData3:array[1..6] of byte=($E9,$7D,$00,$00,$00,$90);

  PassAddr4=$004061CC;   //0F84 7C000000      JE 启动器.0040624E                          ;  t
  PassData4:array[1..6] of byte=($E9,$7D,$00,$00,$00,$90);

  PassAddr5=$0040625D;   //7C 0D              JL SHORT 启动器.0040626C                    ;  t
  PassData5:array[1..2] of byte=($eb,$0d);

  PassAddr6=$004062C0;   //74 11              JE SHORT 启动器.004062D3                    ;  np
  PassData6:array[1..2] of byte=($90,$90);

  PassAddr7=$0040630D;   //0F84 7C000000      JE 启动器.0040638F                          ;  t
  PassData7:array[1..6] of byte=($E9,$7D,$00,$00,$00,$90);

  PassAddr8=$004063B5;   // FF75 E8            PUSH DWORD PTR SS:[EBP-18]                  ;  np
  PassData8:array[1..8] of byte=($90,$90,$90,$90,$90,$90,$90,$90);

  PassAddr9=$004063CC;   //75 05              JNZ SHORT 启动器.004063D3                   ;  t
  PassData9:array[1..2] of byte=($Eb,$05);

  PassAddr10=$004063F1;   //74 09              JE SHORT 启动器.004063FC                    ;  np
  PassData10:array[1..2] of byte=($90,$90);

  PassAddr11=$00406410;   //75 05              JNZ SHORT 启动器.00406417                   ;  np
  PassData11:array[1..2] of byte=($90,$90);

  PassAddr12=$00406488;   //0F84 7C000000      JE 启动器.0040650A                          ;  T
  PassData12:array[1..6] of byte=($E9,$7D,$00,$00,$00,$90);

  PassAddr13=$00406519;   //7C 0D              JL SHORT 启动器.00406528                    ;  t
  PassData13:array[1..2] of byte=($eb,$0d);
  //如果用户名过长则走过这里出错


  PassAddr14=$004065C9;   //0F84 7C000000      JE 启动器.0040664B                          ;  t
  PassData14:array[1..6] of byte=($E9,$7D,$00,$00,$00,$90);

  PassAddr15=$0040665A;   //7C 0D              JL SHORT 启动器.00406669                    ;  t
  PassData15:array[1..2] of byte=($Eb,$0d);

  PassAddr16=$0040672F;   //74 09              JE SHORT 启动器.0040673A                    ;  np
  PassData16:array[1..2] of byte=($90,$90);

  PassAddr17=$0040718D;  //0F84 04000000 JE 启动器.00407197                          ;  n
  PassData17:array[1..6] of byte=($90,$90,$90,$90,$90,$90);


implementation

{$R *.dfm}


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TerminateProcess(打开句柄,1);
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
    var
  myicon: Hicon;
begin

    myicon:=LoadCursorFromFile('kill.ani');
  Screen.Cursors[1]:=myicon;Screen.Cursor:=1;

end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
    var
     窗口句柄:HWND;
  p:tpoint;
  curxy:TPoint;
  当前进程 : Boolean;
  进程快照句柄 : THandle;
  进程入口信息 : TProcessEntry32;
  进程名:string;
  当前进程ID:THandle;

begin

  GetCursorPos(curxy);
  Screen.Cursor:=2;
  getcursorpos(p); //得到鼠标的位置
  窗口句柄:=WindowFromPoint(p);
  GetWindowThreadProcessID(窗口句柄,游戏ID);
  打开句柄:=OpenProcess(windows.PROCESS_ALL_ACCESS,False,游戏ID);
end;



procedure TForm1.SpeedButton1Click(Sender: TObject);
var
//传入参数GetGwCallParam;
//参数:TGetGwCallParam;
//调用指针ointer;
写入字节, ptmp,ByteWORD;
//hRemoteThread: THandle;
begin

    if 打开句柄>0 then
  begin
//   调用指针:=VirtualAllocEx(打开句柄,nil,windows.MAX_PATH,windows.MEM_COMMIT OR windows.MEM_RESERVE,windows.PAGE_EXECUTE_READWRITE);    //申请虚拟空间
    WriteProcessMemory(打开句柄,Pointer(PassAddr1),@(PassData1),6,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr2),@(PassData2),6,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr3),@(PassData3),6,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr4),@(PassData4),6,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr5),@(PassData5),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr6),@(PassData6),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr7),@(PassData7),6,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr8),@(PassData8),8,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr9),@(PassData9),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr10),@(PassData10),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr11),@(PassData11),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr12),@(PassData12),6,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr13),@(PassData13),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr14),@(PassData14),6,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr15),@(PassData15),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr16),@(PassData16),2,写入字节);     //写入地址
    WriteProcessMemory(打开句柄,Pointer(PassAddr17),@(PassData17),6,写入字节);     //写入地址

//   hRemoteThread:=CreateRemoteThread(打开句柄,nil,0,调用指针,nil,0,写入字节);     //调用代码
//    WaitForSingleObject(hRemoteThread, INFINITE);     // ---- 等待线程结束
//    CloseHandle(hRemoteThread);
//    exit;
  end;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
TerminateProcess(打开句柄,1);
Close;
end;

end.

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 12:30 , Processed in 0.075720 second(s), 21 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表