首页
社区
课程
招聘
lpk 在win7下编写需要注意什么?
发表于: 2010-10-28 16:34 4778

lpk 在win7下编写需要注意什么?

2010-10-28 16:34
4778
我写了个lpk,在xp下可以执行正常,在win7下提示错误。
win7下:
用od跟踪发现,发现是执行LpkEditControl错误,地址为全0,应该是没有得到系统目录下lpk.dll函数的正确地址。
再次跟踪发现,lpk中所有输出表的地址都没有从系统lpk中得到,即用户程序下的lpk.dll没有执行初始化,但从od看到这个用户程序下lpk已经加载了。
如果od直接加载lpk.dll,可以执行dll的初始化DLL_PROCESS_ATTACH部分。

Executable modules
Base       Size       Entry      Name       File version      Path
00400000   000F0000   004B4C74   Project1                     D:\delphi\lpk_dll\winmpeg\win7\Project1.exe
60000000   00011000   600070CC   LPK                          D:\delphi\lpk_dll\winmpeg\win7\LPK.dll                       //这已经加载了,

library lpk;
{$IMAGEBASE $20000000}
uses
  windows,
  hook in 'hook.pas',
  oriLPK in 'oriLPK.pas',
  lpkutils in 'lpkutils.pas',
  apiHook in 'apiHook.pas';
{$R *.res}

procedure MyDLLHandler(Reason: Integer);
begin

  case Reason of
    DLL_PROCESS_ATTACH:
      begin
        //vmprotectbegin('StartHook');

        loadoriLpk;

        StartHook;
        //vmprotectend;
      end;
    DLL_PROCESS_DETACH:
      ;
    DLL_THREAD_ATTACH:
      ;
    DLL_THREAD_DETACH:
      ;
  end;
end;

begin
  asm
    int 3;   //调试时,od在这里不中断,也就是说明dll没有执行初始化。
  end;
  DLLProc := @MyDLLHandler;
  DLLProc(DLL_PROCESS_ATTACH);      //这个地方在win7下不执行,导致 loadoriLpk无法执行,dll没有初始化,为什么呢?

end.

错误信息:
问题签名:
  问题事件名称:        APPCRASH
  应用程序名:        Project1.exe
  应用程序版本:        0.0.0.0
  应用程序时间戳:        4cb91770
  故障模块名称:        StackHash_4c0d
  故障模块版本:        0.0.0.0
  故障模块时间戳:        00000000
  异常代码:        c0000005

在win7下写lpk还需要注意什么呢?

以下这个已经修改和win7也重启了。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
"ExcludeFromKnownDlls"=hex(7):6c,00,70,00,6b,00,2e,00,64,00,6c,00,6c,00,00,00,00,00

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//