⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memeditunit.pas

📁 游戏克星江湖行游戏修改工具全部源码,功能很强的。
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{

name:(1999.12.1 -jhx1)
			江湖行 II jhx2 
			2002.10.13 renamed to 'GamePaladin II'
CopyRight:XuGanQuan  gqxunet#163.com 
Description:A game cheat tool

This program is free software; you can redistribute it       and/or modify it under the terms of the GNU General Public    License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later     version.                                                                                                                  This program is distributed in the hope that it will be      useful, but WITHOUT ANY WARRANTY; without even the implied    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      PURPOSE.  See the GNU General Public License for more        details.                                                                                                                    You should have received a copy of the GNU General Public    License along with this program; if not, write to the Free    Software Foundation, Inc.,                                    675 Mass Ave, Cambridge, MA 02139, USA.      
}
unit MemEditUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ExtCtrls, Buttons, Menus;
  
resourceString
String_Taskinvalid='对应的进程/应用程序已经关闭.  ';
String_CannotWrite='该块内存被系统写保护.';
type
  TMemEditForm = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    mem_SG: TStringGrid;
    Address_Edit: TEdit;
    Jump_SB: TSpeedButton;
    Search_Edit: TEdit;
    Search_SB: TSpeedButton;
    Mem_SGScrollBar: TScrollBar;
    PageDown_sb: TSpeedButton;
    PageUp_sb: TSpeedButton;
    byteshow_Edit: TEdit;
    Dwordshow_edit: TEdit;
    Wordshow_Edit: TEdit;
    int64show_edit: TEdit;
    singleshow_edit: TEdit;
    doubleshow_edit: TEdit;
    call_calc_sb: TSpeedButton;
    help_sb: TSpeedButton;
    byteEdit_sb: TSpeedButton;
    DwordEdit_sb: TSpeedButton;
    doubleEdit_sb: TSpeedButton;
    singleEdit_sb: TSpeedButton;
    int64Edit_sb: TSpeedButton;
    WordEdit_sb: TSpeedButton;
    Label2: TLabel;
    MemRefresh_Timer: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Jump_SBClick(Sender: TObject);
    procedure Address_EditKeyPress(Sender: TObject; var Key: Char);
    procedure PageDown_sbClick(Sender: TObject);
    procedure PageUp_sbClick(Sender: TObject);
    procedure Mem_SGScrollBarScroll(Sender: TObject;
      ScrollCode: TScrollCode; var ScrollPos: Integer);
    procedure mem_SGKeyPress(Sender: TObject; var Key: Char);
    procedure mem_SGSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure byteEdit_sbClick(Sender: TObject);
    procedure WordEdit_sbClick(Sender: TObject);
    procedure DwordEdit_sbClick(Sender: TObject);
    procedure int64Edit_sbClick(Sender: TObject);
    procedure singleEdit_sbClick(Sender: TObject);
    procedure doubleEdit_sbClick(Sender: TObject);
    procedure help_sbClick(Sender: TObject);
    procedure Search_SBClick(Sender: TObject);
    procedure call_calc_sbClick(Sender: TObject);
    procedure Search_EditKeyPress(Sender: TObject; var Key: Char);
    procedure byteshow_EditKeyPress(Sender: TObject; var Key: Char);
    procedure Dwordshow_editKeyPress(Sender: TObject; var Key: Char);
    procedure Wordshow_EditKeyPress(Sender: TObject; var Key: Char);
    procedure int64show_editKeyPress(Sender: TObject; var Key: Char);
    procedure singleshow_editKeyPress(Sender: TObject; var Key: Char);
    procedure doubleshow_editKeyPress(Sender: TObject; var Key: Char);
    procedure mem_SGDblClick(Sender: TObject);
    procedure mem_SGMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure MemRefresh_TimerTimer(Sender: TObject);

  private
    { Private declarations }
  public
    procedure MemRefresh;
   { Public declarations }
  end;
var MemEditForm: TMemEditForm;
    inputkey:String;
var NowRow,NowCol:Integer;
    SearchRow,SearChCol:integer;
    myRect: TGridRect;

implementation
uses GPkernel, MyCalcUnit,MemRecordUnit;

{$R *.dfm}
procedure TMemEditForm.FormCreate(Sender: TObject);
var i:integer;
begin
with mem_SG do
begin
ColCount:=33;
RowCount:=17;
ColWidths[0]:=70;
for i:=1 to 16 do
begin
Cells[i,0]:=intToHex(i-1,1);
ColWidths[i+16]:=12;
Cells[i+16,0]:=intToHex(i-1,1);
end;
Mem_SGScrollbar.Min:=0;
Mem_SGScrollbar.Max:=$FFFFFFFF shr 4;
Mem_SGScrollbar.Position:=MemReadStartAddress shr 4;
end; //with edn
NowCol:=1;
NowRow:=1;
SearchRow:=1;
SearchCol:=1;


end;

procedure TMemEditForm.Jump_SBClick(Sender: TObject);
var TempAddress:Dword;
    Ecode:integer;
    myRect: TGridRect;
begin
 Val('$'+Address_Edit.text,TempAddress,Ecode);
 if Ecode=0 then
 begin
  MemReadStartAddress:=(TempAddress and $FFFFFFF0);//去掉最后一位
  Address_Edit.Text:=intToHex(MemReadStartAddress,8);
  Myrect.Left:=(TempAddress and $F)+1; //得到最后一位
  Myrect.Top:=1;
  Myrect.Right:=Myrect.Left;
  Myrect.Bottom:=1;
  MEM_sg.Selection:=Myrect;

 end
 else  Address_edit.SetFocus;

end;

procedure TMemEditForm.Address_EditKeyPress(Sender: TObject;
  var Key: Char);
begin
if key=chr(VK_RETURN) then Jump_SB.Click;
end;

procedure TMemEditForm.PageDown_sbClick(Sender: TObject);
begin
Inc(MemReadStartAddress,256);
Address_Edit.Text:=intToHex(MemReadStartAddress,8);
MemRefresh;
end;

procedure TMemEditForm.PageUp_sbClick(Sender: TObject);
begin
Dec(MemReadStartAddress,256);
Address_Edit.Text:=intToHex(MemReadStartAddress,8);
MemRefresh;
end;

procedure TMemEditForm.Mem_SGScrollBarScroll(Sender: TObject;
  ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
MemReadStartAddress:=Mem_SGScrollbar.Position shl 4;
Address_Edit.Text:=intToHex(memReadStartAddress,8);
MemRefresh;
end;

procedure TMemEditForm.mem_SGKeyPress(Sender: TObject; var Key: Char);
var TempByte:Byte;
    Ecode:integer;
    offsetindex:integer;
begin
////各个按钮不能有快捷键.否则本过程不行
inputkey:=inputkey+key;
offsetindex:=(NowRow-1)*16+(NowCol-1);
if (NowCol>=1) and (NowCol<=16) then
 begin
   MemWriteStartAddress:=MemReadStartAddress+offsetindex;
       if Length(inputkey)>=2 then
        begin
           val('$'+inputkey[1]+inputkey[2],TempByte,Ecode);
           if Ecode>0 then
                begin
                inputkey:=''; //消除不合法字符
                Exit;
                end;        //because 可能从字符区转过来
           GPKernel.WriteMemory(CurrentProcessID,MemWriteStartAddress,Addr(TempByte),Byte_value,1);
           inputkey:='';
           if (NowCol<>16) then
           begin
           myRect.Left :=NowCol+1;
           myRect.Top := NowRow;
           end
            else
           begin
           myRect.Left:=1;
           myRect.Top := NowRow+1;
           end;
           myRect.Right :=myRect.Left;
           myRect.Bottom :=myRect.Top;
           Mem_Sg.Selection:= myRect;
           NowCol:= myRect.Left;
           NowRow:=myrect.Top;
        end;
  end
else
if (NowCol>=17) and (NowCol<=32) then
 begin
   MemWriteStartAddress:=MemReadStartAddress+offsetindex-16;
          begin
           TempByte:=Ord(inputkey[1]);
           GPKernel.WriteMemory(CurrentProcessID,MemWriteStartAddress,Addr(TempByte),Byte_value,1);
           inputkey:='';
           if (NowCol<>32) then
           begin
           myRect.Left :=NowCol+1;
           myRect.Top := NowRow;
           end
            else
           begin
           myRect.Left:=17;
           myRect.Top := NowRow+1;
           end;
           myRect.Right :=myRect.Left;
           myRect.Bottom :=myRect.Top;
           Mem_Sg.Selection:= myRect;
           NowCol:= myRect.Left;
           NowRow:=myrect.Top;
          end;


  end;

offsetindex:=(NowRow-1)*16+(NowCol-1);//new col row
if (NowCol>=1) and (NOwCol<=16)  then
Address_Edit.Text:=intToHex(MemReadStartAddress+offsetindex,8)
else
Address_Edit.Text:=intToHex(MemReadStartAddress+offsetindex-16,8);

end;

procedure TMemEditForm.mem_SGSelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var offsetindex:integer;
    TempByte:Byte;
    TempWord:Word;
    TempDword:Dword;
    Tempint64:int64;
    TempSingle:Single;
    TempDouble:Double;
    //TempString:String[16];
begin
NowRow:=Arow;
NowCol:=Acol;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -