`
az7772010
  • 浏览: 204448 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

delphi修改exe指定地址的内容

 
阅读更多

delphi修改exe指定地址的内容

项目 Project1.exe

------------------

program Project1;

uses
<wbr> Forms,Windows, Messages,SysUtils,<br><wbr> Unit1 in 'Unit1.pas' {Form1};</wbr></wbr>

{$R *.res}

begin
<wbr> Application.Initialize;<br><wbr>// Application.Title := 'TestOD';<br><wbr> MessageBox(Application.Handle,pchar(inttostr(Application.Handle)),pchar('hello1'),0);<br><wbr> MessageBox(Application.Handle,pchar('abc1'),pchar('hello1'),0);<br><wbr> Application.Run;<br><wbr> Application.Terminate;<br><wbr> Application.CreateForm(TForm1, Form1);</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

end.

===================================

项目 Project2.exe

------------------

unit Unit2;

interface

uses
<wbr> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br><wbr> Dialogs, StdCtrls,Tlhelp32;</wbr></wbr>

type
<wbr> TForm1 = class(TForm)<br><wbr><wbr><wbr> Button1: TButton;<br><wbr><wbr><wbr> Button2: TButton;<br><wbr><wbr><wbr> ListBox1: TListBox;<br><wbr><wbr><wbr> procedure Button1Click(Sender: TObject);<br><wbr><wbr><wbr> procedure Button2Click(Sender: TObject);<br><wbr> private<br><wbr><wbr><wbr> { Private declarations }<br><wbr> public<br><wbr><wbr><wbr> { Public declarations }<br><wbr> end;<br><wbr> function FindProcessID(s:string):integer;<br> var<br><wbr> Form1: TForm1;<br><wbr><wbr><wbr> NewSpeed : array[0..2] of byte =($71,$7A,$66); //qzf</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
<wbr>Gameh:HWND;<br><wbr>GamePid:DWORD;<br><wbr>Gamehprocess: THandle;<br><wbr>WriteByte:DWORD;<wbr><wbr><wbr> //实际写入字节数</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

begin
<wbr> //获取游戏窗口句柄<br><wbr> //Gameh:=findwindow(nil,'xxxx');<br><wbr> //gameh := 1048984;<br><wbr><wbr><wbr> //获取进程ID<br> //<wbr> GetWindowThreadprocessID<wbr>(Gameh,GamePid);<br><wbr> GamePid := FindProcessID('Project1.exe');<br><wbr> //获取进程句柄<br><wbr><wbr> gamehProcess:=OpenProcess(windows.PROCESS_ALL_ACCESS,false,GamePid);<br><wbr> //44CB9C 通过OD分析的地址,进而修改了它的内容<br><wbr> Writeprocessmemory(gamehProcess,Pointer($44CB9C)<wbr> ,@NewSpeed[0],3,<wbr> WriteByte);<br><wbr> //result:=Writebyte;<br><wbr> showmessage('修改成功!');<br> end;<br> function FindProcessID(s:string):integer;<br> var<br> found,find:boolean;<br> FSnapshotHandle:tHANDLE;<br> lppe:TProcessEntry32;<br> begin<br> FSnapshotHandle := CreateToolhelp32Snapshot<wbr>(TH32CS_SNAPPROCESS, 0); //CreateToolhelp32Snapshot<wbr>函数得到进程快照<br> Find:=False;<br> lppe.dwSize := Sizeof(lppe); //初始化<br> found := Process32First(FSnapshotHandle, lppe); //Process32First 得到一个系统快照里第一个进程的信息<br> while found do<br><wbr><wbr><wbr> begin<br><wbr><wbr><wbr> if LowerCase(ExtractFileName(lppe.szExeFile))=LowerCase(s) then<br><wbr><wbr><wbr><wbr><wbr> begin<br><wbr><wbr><wbr><wbr><wbr> Result:=lppe.th32ProcessID; //找到进程返回ID<br><wbr><wbr><wbr><wbr><wbr> find:=true;<br><wbr><wbr><wbr><wbr><wbr> CloseHandle(FSnapshotHandle);<br><wbr><wbr><wbr><wbr><wbr> exit;<br><wbr><wbr><wbr><wbr><wbr> end;<br><wbr><wbr><wbr><wbr><wbr> found := Process32Next(FSnapshotHandle, lppe);<br><wbr><wbr><wbr> end;<br> CloseHandle(FSnapshotHandle);<br> if find=False then<br> Result:=0; //找不到进程返回0<br> end;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

procedure TForm1.Button2Click(Sender: TObject);
var<wbr><wbr><br><wbr> ProcessName : string; //进程名<wbr><wbr><br><wbr> ProcessID<wbr> : integer; //进程表示符<wbr><wbr><br><wbr> i : integer;<wbr><wbr><wbr><br><wbr> ContinueLoop:BOOL;<wbr><wbr><wbr><br><wbr> FSnapshotHandle:THandle; //进程快照句柄<br><wbr> FProcessEntry32:TProcessEntry32; //进程入口的结构体信息<wbr><wbr><br> begin<wbr><wbr><br><wbr> FSnapshotHandle:=CreateToolhelp32Snapshot<wbr>(TH32CS_SNAPPROCESS,0); //创建一个进程快照<wbr><wbr><br><wbr> FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);<wbr><wbr><wbr><br><wbr> ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32); //得到系统中第一个进程<br><wbr> //循环例举<br><wbr> while ContinueLoop<wbr> do<wbr><wbr><br><wbr> begin<br><wbr><wbr><wbr> ProcessName := FProcessEntry32.szExeFile;<br><wbr><wbr><wbr> ProcessID := FProcessEntry32.th32ProcessID;<br><wbr><wbr><wbr> Listbox1.Items.add('应用程序名 :'+ProcessName +'#进程ID:'+ inttostr(ProcessID));<br><wbr><wbr><wbr> ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);<wbr><wbr><wbr><br><wbr> end;<wbr><wbr><wbr><br> end;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

end.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics