看流星社区

 找回密码
 注册账号
查看: 2634|回复: 1

[Delphi] 自己写个调用改写内存保护!

[复制链接]

该用户从未签到

发表于 2011-4-3 15:03:40 | 显示全部楼层 |阅读模式
var
  Ader, Szy: DWORD;
  N1,N2: DWORD;

function APILoader(): DWORD;
var
  NTDLL: THandle;
  Address: Pointer;
begin
  Result := 0;
  NTDLL := GetModuleHandle('NTDLL.DLL');
  if NTDLL = 0 then Exit;
  Address := GetProcAddress(NTDLL, 'ZwProtectVirtualMemory');
  Result := Dword(Address);
end;

procedure KillMoney3();
begin
  asm
  MOV EAX,N1
  MOV EDX,N2
  CALL DWORD PTR DS:[EDX]
  ret $14
  end;
end;

procedure KillMoney2();
begin
  asm
  pushad
  PUSH offset dwOldProtect
  PUSH $40
  PUSH offset szy
  PUSH offset Ader
  PUSH $-1
  CALL KillMoney3
  popad
  end;
end;

procedure KillMoney1(aa, bb: DWORD);
var
  Apiadder: DWORD;
begin
  ader := aa;
  szy := bb;
  Apiadder := APILoader;
  asm
  pushad
  mov eax,Apiadder
  add eax,$1
  mov ecx,[eax]
  mov n1,ecx
  add eax,$5
  mov ecx,[eax]
  mov n2,ecx
  CALL KillMoney2
  popad
  end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  KillMoney1($00445000, $5);
  asm
  mov eax,$00445000
  mov [eax],$10000
  end;
end;


希望有朋友把它改的更完善,记得发出来学习一下!


GetProcAddress  GetModuleHandle  有Code 的朋友发出来学习下!改善下

该用户从未签到

 楼主| 发表于 2011-4-3 15:03:54 | 显示全部楼层
调用方法


  KillMoney1($00445000, $5);  < ---改写 00445000 地址保护可写长度为5  

  asm                                       《--------这个不用解释,了地球人都知道  测试可写
  mov eax,$00445000   
  mov [eax],$10000  
  end;  
end;
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-28 21:27

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表