📄 frmmodifyregistersunit.pas.svn-base
字号:
unit frmModifyRegistersUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,debugger,debugger2,cefuncproc,newkernelhandler,symbolhandler;
type
TfrmModifyRegisters = class(TForm)
CheckBox1: TCheckBox;
Edit1: TEdit;
Label1: TLabel;
CheckBox2: TCheckBox;
Edit2: TEdit;
Label2: TLabel;
CheckBox3: TCheckBox;
Edit3: TEdit;
Label3: TLabel;
CheckBox4: TCheckBox;
Edit4: TEdit;
Label4: TLabel;
CheckBox5: TCheckBox;
Edit5: TEdit;
Label5: TLabel;
CheckBox6: TCheckBox;
Edit6: TEdit;
Label6: TLabel;
CheckBox7: TCheckBox;
Edit7: TEdit;
Label7: TLabel;
CheckBox8: TCheckBox;
Edit8: TEdit;
Label8: TLabel;
CheckBox9: TCheckBox;
Edit9: TEdit;
Label9: TLabel;
CheckBox10: TCheckBox;
Label10: TLabel;
CheckBox11: TCheckBox;
Label11: TLabel;
CheckBox12: TCheckBox;
Label12: TLabel;
CheckBox13: TCheckBox;
Label13: TLabel;
CheckBox14: TCheckBox;
Label14: TLabel;
CheckBox15: TCheckBox;
Label15: TLabel;
CheckBox16: TCheckBox;
CheckBox17: TCheckBox;
CheckBox18: TCheckBox;
CheckBox19: TCheckBox;
CheckBox20: TCheckBox;
CheckBox21: TCheckBox;
Button1: TButton;
Button2: TButton;
Label16: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure CheckBox4Click(Sender: TObject);
procedure CheckBox5Click(Sender: TObject);
procedure CheckBox6Click(Sender: TObject);
procedure CheckBox7Click(Sender: TObject);
procedure CheckBox8Click(Sender: TObject);
procedure CheckBox9Click(Sender: TObject);
procedure CheckBox10Click(Sender: TObject);
procedure CheckBox11Click(Sender: TObject);
procedure CheckBox12Click(Sender: TObject);
procedure CheckBox13Click(Sender: TObject);
procedure CheckBox14Click(Sender: TObject);
procedure CheckBox15Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
address:dword;
public
{ Public declarations }
constructor create(AOwner:tcomponent;address:dword);
end;
var
frmModifyRegisters: TfrmModifyRegisters;
implementation
uses formsettingsunit, MemoryBrowserFormUnit;
constructor TfrmModifyRegisters.create(AOwner:tcomponent;address:dword);
var i: integer;
begin
inherited create(Aowner);
self.address:=address;
caption:='Modify registers(s) at '+IntToHex(address,8);
if debuggerthread<>nil then
begin
//find the address in debuggerthread.registermodificationBPs
for i:=0 to length(debuggerthread.registermodificationBPs)-1 do
if debuggerthread.registermodificationBPs[i].address=address then
begin
if debuggerthread.registermodificationBPs[i].change_eax then
begin
checkbox1.checked:=true;
edit1.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_eax,8);
end;
if debuggerthread.registermodificationBPs[i].change_ebx then
begin
checkbox2.checked:=true;
edit2.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_ebx,8);
end;
if debuggerthread.registermodificationBPs[i].change_ecx then
begin
checkbox3.checked:=true;
edit3.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_ecx,8);
end;
if debuggerthread.registermodificationBPs[i].change_edx then
begin
checkbox4.checked:=true;
edit4.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_edx,8);
end;
if debuggerthread.registermodificationBPs[i].change_esi then
begin
checkbox5.checked:=true;
edit5.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_esi,8);
end;
if debuggerthread.registermodificationBPs[i].change_edi then
begin
checkbox6.checked:=true;
edit6.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_edi,8);
end;
if debuggerthread.registermodificationBPs[i].change_ebp then
begin
checkbox7.checked:=true;
edit7.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_ebp,8);
end;
if debuggerthread.registermodificationBPs[i].change_esp then
begin
checkbox8.checked:=true;
edit8.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_esp,8);
end;
if debuggerthread.registermodificationBPs[i].change_eip then
begin
checkbox9.checked:=true;
edit9.Text:=inttohex(debuggerthread.registermodificationBPs[i].new_eip,8);
end;
if debuggerthread.registermodificationBPs[i].change_cf then
begin
checkbox10.checked:=true;
checkbox16.checked:=debuggerthread.registermodificationBPs[i].new_cf;
end;
if debuggerthread.registermodificationBPs[i].change_pf then
begin
checkbox11.checked:=true;
checkbox17.checked:=debuggerthread.registermodificationBPs[i].new_pf;
end;
if debuggerthread.registermodificationBPs[i].change_af then
begin
checkbox12.checked:=true;
checkbox18.checked:=debuggerthread.registermodificationBPs[i].new_af;
end;
if debuggerthread.registermodificationBPs[i].change_zf then
begin
checkbox13.checked:=true;
checkbox19.checked:=debuggerthread.registermodificationBPs[i].new_zf;
end;
if debuggerthread.registermodificationBPs[i].change_sf then
begin
checkbox14.checked:=true;
checkbox20.checked:=debuggerthread.registermodificationBPs[i].new_sf;
end;
if debuggerthread.registermodificationBPs[i].change_of then
begin
checkbox15.checked:=true;
checkbox21.checked:=debuggerthread.registermodificationBPs[i].new_of;
end;
end;
end;
if debuggerthread2<>nil then
begin
//find the address in debuggerthread.registermodificationBPs
for i:=0 to 3 do
if debuggerthread2.breakpoints[i]=address then
begin
if debuggerthread2.breakpointchanges[i].change_eax then
begin
checkbox1.checked:=true;
edit1.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_eax,8);
end;
if debuggerthread2.breakpointchanges[i].change_ebx then
begin
checkbox2.checked:=true;
edit2.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_ebx,8);
end;
if debuggerthread2.breakpointchanges[i].change_ecx then
begin
checkbox3.checked:=true;
edit3.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_ecx,8);
end;
if debuggerthread2.breakpointchanges[i].change_edx then
begin
checkbox4.checked:=true;
edit4.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_edx,8);
end;
if debuggerthread2.breakpointchanges[i].change_esi then
begin
checkbox5.checked:=true;
edit5.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_esi,8);
end;
if debuggerthread2.breakpointchanges[i].change_edi then
begin
checkbox6.checked:=true;
edit6.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_edi,8);
end;
if debuggerthread2.breakpointchanges[i].change_ebp then
begin
checkbox7.checked:=true;
edit7.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_ebp,8);
end;
if debuggerthread2.breakpointchanges[i].change_esp then
begin
checkbox8.checked:=true;
edit8.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_esp,8);
end;
if debuggerthread2.breakpointchanges[i].change_eip then
begin
checkbox9.checked:=true;
edit9.Text:=inttohex(debuggerthread2.breakpointchanges[i].new_eip,8);
end;
if debuggerthread2.breakpointchanges[i].change_cf then
begin
checkbox10.checked:=true;
checkbox16.checked:=debuggerthread2.breakpointchanges[i].new_cf;
end;
if debuggerthread2.breakpointchanges[i].change_pf then
begin
checkbox11.checked:=true;
checkbox17.checked:=debuggerthread2.breakpointchanges[i].new_pf;
end;
if debuggerthread2.breakpointchanges[i].change_af then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -