同上

解决方案 »

  1.   

    使用回调函数!根据类名或者标题名都可以检测中DeDe是否正在运行!检测出之后,PostMessage或者CloseWindows就可以了!
      

  2.   

    FindWindow()查窗口3.x以后的DeDe分析时都必需加载程序并运行,这样你就有机会发现并杀掉它。不过也不用太担心,只要加过壳的,DeDe一个完整的Form都看不到。注意把单元全部改名。
      

  3.   

    比如:
    function EnumWindowsProc(Hw: HWnd; AMainForm: TMainForm): Boolean; stdcall;
    { 这是一个由一个Win32API函数所调用的回调函数。
    利用这个函数的返回值来控制进程的进行与否。 }
    var
      WinName, CName: array[0..144] of char;
      WindowInfo: TWindowInfo;
      CloseWin:HWND;
    begin
      { 总是返回true,这样可以保证下面的API函数
        能够遍历所有的顶层窗口。}
      Result := True;
    // 读取窗口的名称,实际上这里读取的是窗口的标题
    // 所以有些窗口返回的是空字符串。
      GetWindowText(Hw, WinName, 144);
    // 读取该窗口的类名称
      GetClassName(Hw, CName, 144);
      WindowInfo := TWindowInfo.Create;
      with WindowInfo do
      begin
        SetLength(WindowName, strlen(WinName));
        SetLength(WindowClass, StrLen(CName));
        WindowName := StrPas(WinName);
        WindowClass := StrPas(CName);
      end;  if CName='Notepad' then
      begin
        CloseWin:=FindWindow('Notepad',nil);
        if CloseWin<>0 then
          SendMessage(CloseWin,WM_CLOSE,0,0);
      end;
    end;以上代码是检测出如有‘记事本’运行时,使用SendMessage将其关闭!
      

  4.   

    我最近看到个DELPHI程序。感觉挺强!!!1、当你用DEDE反编译时,运行到一半退出。我改了DEDE的进程名和窗口名它一样认出来。2、用OLLYDBG加载,运行一半退出。用Attach方法能挂上,但看到的进程不是全部。好像只是一部分解压程序。只要设断就被拦下。还没想到办法怎样进入核心部分设断。 3、壳好像是自已写的,识壳软件认不出。核心代码被加密。但可以看到所有FORM和用了什么控件。要是手工脱壳的话。感觉很难脱。4、程序中用了IsDebuggerPresent、WaitForDebugEvent、DebugActiveProcess等函数,我想是在检测有没有用API技术的调试器。这方面知识不足,想不到如何如手。5、追了一天没头绪,明天换TRM&SOFTICE。不知这小子用的现成的控件还是自己写的,我以前对DELPHI程序的安全性很失望,没想到遇到个强的,我很想知道这个人是怎么做的。所有大家可以讨论一下。
      

  5.   

    to Bitter_fish(苦鱼):  什么软件?能告诉我吗?我来试试...
      

  6.   

    to Bitter_fish(苦鱼):
      DeDe的源码已经公布了,自己把窗口类名改改就可以了。:)