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

📄 ex3main.pas

📁 反静态分析示例 ├──Example1...........一般程序示例 ├──Example2...........插入花指令示例 └──Example3...........12组花指
💻 PAS
字号:
unit Ex3Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//第1种花指令
procedure TForm1.Button1Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    jb @label
    jnb @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第2种花指令
procedure TForm1.Button2Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    je @label
    jne @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第3种花指令
procedure TForm1.Button3Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    jbe @label
    ja @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第4种花指令
procedure TForm1.Button4Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    js @label
    jns @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第5种花指令
procedure TForm1.Button5Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    jpe @label
    jpo @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第6种花指令
procedure TForm1.Button6Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    jl @label
    jge @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第7种花指令
procedure TForm1.Button7Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    jle @label
    jg @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第8种花指令
procedure TForm1.Button8Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    jz @label
    jnz @label
    db $E8
    @label:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第9种花指令
procedure TForm1.Button9Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    push ecx
    xor ecx,ecx
    jcxz @label
    db $E8
    @label:
    pop ecx
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第10种花指令
procedure TForm1.Button10Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    jl @label1
    @label2:
    jmp @label3
    db $E8
    @label1:
    jz @label2
    @label3:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第11种花指令
procedure TForm1.Button11Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    call @label1
    db $E8
    jmp @label2
    db $E8
  @label1:
    pop eax
    jmp @label3
    db $E8,$E8,$E8
  @label3:
    inc eax
    jmp @label4
    db $E8,$E8,$E8
  @label4:
    jmp eax
    db $E8
  @label2:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

//第12种花指令
procedure TForm1.Button12Click(Sender: TObject);
var
  a,b:Integer;
begin
  a:=20;b:=10;
  asm
    call @label1
    db $E8,$E8
    jmp @label4
  @label1:
    pop eax
    jmp @label2
    db $E8,$E8
  @label2:
    add eax,2
    jmp @label3
    db $E8
  @label3:
    push eax
    ret
    db $E8
  @label4:
  end;
  if a>b then
    Messagebox(Handle,'a>b','info',MB_OK);
end;

end.

⌨️ 快捷键说明

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