Delphi API HOOK完全说明(修正及说明)

Delphi API HOOK完全说明(修正及说明),第1张

概述  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都是大家转来转去,原文出处我已经找不到了。 这篇文章写的很不错,但最后部分“PermuteFunction 的终极版本”描述的不太清楚,完全按照该文章代码执行,是不行的。需要修改mess.pas中代码才行。其实文中提到的一个结构,代码中并没有使用typePIMAGE_IMPORT_DESCRIPTOR = ^IMA   从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都是大家转来转去,原文出处我已经找不到了。

这篇文章写的很不错,但最后部分“PermuteFunction 的终极版本”描述的不太清楚,完全按照该文章代码执行,是不行的。需要修改mess.pas中代码才行。

其实文中提到的一个结构,代码中并没有使用

type
PIMAGE_import_DESCRIPTOR = ^
IMAGE_import_DESCRIPTOR;
IMAGE_import_DESCRIPTOR = packed record
OriginalFirstThunk : DWORD;
TimeDateStamp : DWORD;
ForwarderChain : DWORD;
name : DWORD;
FirstThunk : DWORD;
end;

 

mess.pas中要修改的部分主要是

procedure API_Hookup;
begin
if @oldMessageBoxA = nil then
@oldMessageBoxA := TrueFunctionAddress(@messageBoxA);
if @oldMessageBoxW = nil then
@oldMessageBoxW := TrueFunctionAddress(@messageBoxW);
PermuteFunction(FuncmessageBoxA.AddressOfPointerToFunction,@MyBoxA);
PermuteFunction(FuncmessageBoxW.AddressOfPointerToFunction,@MyBoxW);
end;

这里应该是

PermuteFunction(@messageBoxA @MyBoxA);
PermuteFunction(@messageBoxA,@MyBoxW);

当然Un_API_hook部分也要做响应修改。

另外在mess.pas中声明的“FuncmessageBoxA,FuncmessageBoxW: PimportCode;”也是没用了。
修改后的代码,大家可以到 http://download.csdn.net/source/575736  下载。

代码里,我故意加了一个 MB_YESNO并且标题为“are you sure”的messageBox,执行的话,可以看到这个messageBox并不会d出,而是直接显示一个showmessage('yes')或者showmessage('no')。

这样也就是说我们可以拦截第三方程序的特定messageBox,并使其产生我们预期的结果值,从而控制目标程序流程。

另外按照这种方式进行Hook,当程序退出的时候,总是会导致资源管理器异常(explorer.exe),一直困扰我,不知道该怎么解决。

有朋友知道解决办法的话,还请告知,非常感谢。

总结

以上是内存溢出为你收集整理的Delphi API HOOK完全说明(修正及说明)全部内容,希望文章能够帮你解决Delphi API HOOK完全说明(修正及说明)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1210122.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存