请问关于怎么执行这几段ShellCode啊?

woniu008 2012-08-17 01:40:08
program Project1;

{$APPTYPE CONSOLE}

const
{
shellcode: array[0..47] of byte =
(
$01, $00, $00, $80, $80, $BE, $00, $75, $14, $8D, $86, $B3, $FF, $75, $D0, $FF,
$FF, $96, $01, $01, $00, $00, $83, $C7, $01, $8B, $8D, $40, $FD, $FF, $FF, $3B,
$FF, $FF, $83, $85, $40, $FD, $FF, $FF, $10, $83, $C1, $01, $83, $F9, $10, $75
);

Var
ShellCodeProc: procedure;

begin
ShellCodeProc := @shellcode;
ShellCodeProc();
end.
以上是一段执行ShellCode的程序,但是现在我想把上面的这段ShellCode分成三段来编译执行,我应该怎么写呢?

--------------------------------------------------------------------------------------------------------------
program Project1;

{$APPTYPE CONSOLE}

const
{
shellcode1: array[0..15] of byte =
(
$01, $00, $00, $80, $80, $BE, $00, $75, $14, $8D, $86, $B3, $FF, $75, $D0, $FF
);

shellcode2: array[0..15] of byte =
(
$FF, $96, $01, $01, $00, $00, $83, $C7, $01, $8B, $8D, $40, $FD, $FF, $FF, $3B
);
shellcode3: array[0..15] of byte =
(
$FF, $FF, $83, $85, $40, $FD, $FF, $FF, $10, $83, $C1, $01, $83, $F9, $10, $75
);
Var
ShellCodeProc1: procedure;(可以定义多个)

begin
ShellCodeProc1 := @shellcode1;
ShellCodeProc1();
end.
(请问怎么让上面的ShellCode执行完成呢?就是让他执行完shellcode1,然后执行shellcode2,再执行shellcode3,应该是把几个ShellCode连起来执行吧。)
...全文
142 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一如当初 2012-08-17
  • 打赏
  • 举报
回复
1.分配内存空间
2.把ShellCode写入到该内存空间
3.调用函数指针,也就是该空间的首地址
4.释放内存空间
广州佬 2012-08-17
  • 打赏
  • 举报
回复
纠错:
procedure TForm1.Button1Click(Sender: TObject);
var ShellCodeProc:array[0..2]of Ttestproc;
x:integer;
begin
ShellCodeProc[0]:=abc; //将方法作为 Ttestproc 数组成员
ShellCodeProc[1]:=cde;
ShellCodeProc[2]:=efg;
for x := 0 to 2 do
ShellCodeProc[x]; //使用匿名方法
end;
广州佬 2012-08-17
  • 打赏
  • 举报
回复
按钮事件也可以这样:

procedure TForm1.Button1Click(Sender: TObject);
var ShellCodeProc:array[0..2]of Ttestproc;
x:integer;
begin
ShellCodeProc[0]:=abc; //将方法作为 Ttestproc 数组成员
ShellCodeProc[1]:=cde;
ShellCodeProc[2]:=efg;
for x := 0 to 2 do
ShellCodeProc[i]; //使用匿名方法
end;
广州佬 2012-08-17
  • 打赏
  • 举报
回复
type
Ttestproc=procedure(i:integer);//定义一个匿名方法

......


procedure abc(i:integer);
const shellcode: array[0..15] of byte =(
$01, $00, $00, $80, $80, $BE, $00, $75, $14, $8D, $86, $B3, $FF, $75, $D0, $FF);
begin
//.....
end;

procedure cde(i:integer);
const shellcode: array[0..15] of byte =(
$FF, $96, $01, $01, $00, $00, $83, $C7, $01, $8B, $8D, $40, $FD, $FF, $FF, $3B);
begin
//.....
end;

procedure efg(i:integer);
const shellcode: array[0..15] of byte =(
$FF, $FF, $83, $85, $40, $FD, $FF, $FF, $10, $83, $C1, $01, $83, $F9, $10, $75);
begin
//.....
end;

procedure TForm1.Button1Click(Sender: TObject);
var ShellCodeProc:array[0..2]of Ttestproc;
begin
ShellCodeProc[0]:=abc; //将方法作为 Ttestproc 数组成员
ShellCodeProc[1]:=cde;
ShellCodeProc[2]:=efg;

ShellCodeProc[0]; //使用匿名方法
ShellCodeProc[1];
ShellCodeProc[2];
end;

......

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧