我可以通过仅分析exe文件来检测在delphi应用程序中使用过的Wheather madexcept吗?

是否可以通过在我的应用程序中添加几行代码并通知最终的exe文件用户(如果未使用madshi madexcept)来实现一种简单的方法?

最佳答案

如果将madexcept与Delphi应用程序一起使用,则应在该可执行文件中有一个资源条目:MAD->EXCEPT

要测试外部应用程序:

var
  h: HMODULE;

  h := LoadLibraryEx('c:\foo\bar.exe', 0, LOAD_LIBRARY_AS_DATAFILE);
  if h <> 0 then
  begin
    if FindResource(h, 'EXCEPT', 'MAD') <> 0 then
      ShowMessage('madexcept Found!');
    FreeLibrary(h);
  end;


要在自己的应用程序中进行测试:

if FindResource(HInstance, 'EXCEPT', 'MAD') <> 0 then
  ShowMessage('madexcept Found!');


请注意,这不会告诉您madexcept使用什么选项。例如,可能有一个异常过滤器设置为过滤访问冲突异常,或者可能不检查冻结线程的设置等等。

07-26 09:18