I iseek Unregistered / Unconfirmed GUEST, unregistred user! 2006-08-13 #3 这得要对系统有深刻理解的大虾才知道有没有可能. 关注. 希望刘麻子等强人说说. 帮你顶.
L lovezyp Unregistered / Unconfirmed GUEST, unregistred user! 2006-08-20 #5 这个估计不可能,因为一个程序可能多次调用,再说,也没有这样的函数记录
T Toysun Unregistered / Unconfirmed GUEST, unregistred user! 2006-08-21 #6 这个对你有用吗? 调试器对我们的威胁很大,我们不会让Cracker们舒舒服服地使用SoftICE、TRW或OllyDbg来调试我们的程序。除了常用的MeItICE方法外,这里我给一个笔者写的方法: {检查自己的进程的父进程是否为Explorer.exe,否则是被调试器加载了} {不过注意,控制台程序的父进程在WinNT下是Cmd.exe!} {注意加载TlHelp32.pas单元} procedure CheckParentProc; var //检查自己的进程的父进程 Pn: TProcesseNtry32; sHandle:THandle; H,ExplProc,ParentProc:Hwnd; Found:Boolean; Buffer:array[0..1023]of Char; Path:string; begin H:= 0; ExplProc:= 0; ParentProc:= 0; //得到Windows的目录 SetString(Path,Buffer) GetWindowsDirectory(Buffer,Sizeof(Buffer)- 1)); Path:= UpperCase(Path)+ '/EX PLORER.EXE';//得到Explorer的路径 //得到所有进程的列表快照 sHandle:= CreateToolHelp32Snap Shot(TH32CS_SNAPALL,0); Found:= Process32First(sHandle,Pn);//查找进程 while Found do //遍历所有进程 begin if Pn.szExeFile = ParamStr(0)then //自己的进程 begin ParentProc:= Pn.th32ParentProcessID://得到父进程的进程ID //父进程的句柄 H:= OpenProcess(PRO CESS_ALL_ACCESS,True,Pn.th32Parent ProcessID); end else if UpperCase(Pn.szExeFile)= Path then ExplProc:= Pn.th32ProcessID;//Ex plorer的PID Found:= Process32Next(sHandle,Pn);//查找下一个 end; //父进程不是Explorer,是调试器…… if ParentProc <> ExplProc then begin TerminateProcess(H,0);//杀之!除之而后快也! :) //你还可以加上其它什么死机代码来消遣消遣这位可爱的Cracker:) end?? end?? 你可以在Delphi或者VC中试试,这样可以把Delphi和VC杀掉了,因为你现在用的是Delphi和VC的内置调试器来运行你的程序。调试的时候你还是把它的注释删掉吧,发布时别忘记激活哟!
这个对你有用吗? 调试器对我们的威胁很大,我们不会让Cracker们舒舒服服地使用SoftICE、TRW或OllyDbg来调试我们的程序。除了常用的MeItICE方法外,这里我给一个笔者写的方法: {检查自己的进程的父进程是否为Explorer.exe,否则是被调试器加载了} {不过注意,控制台程序的父进程在WinNT下是Cmd.exe!} {注意加载TlHelp32.pas单元} procedure CheckParentProc; var //检查自己的进程的父进程 Pn: TProcesseNtry32; sHandle:THandle; H,ExplProc,ParentProc:Hwnd; Found:Boolean; Buffer:array[0..1023]of Char; Path:string; begin H:= 0; ExplProc:= 0; ParentProc:= 0; //得到Windows的目录 SetString(Path,Buffer) GetWindowsDirectory(Buffer,Sizeof(Buffer)- 1)); Path:= UpperCase(Path)+ '/EX PLORER.EXE';//得到Explorer的路径 //得到所有进程的列表快照 sHandle:= CreateToolHelp32Snap Shot(TH32CS_SNAPALL,0); Found:= Process32First(sHandle,Pn);//查找进程 while Found do //遍历所有进程 begin if Pn.szExeFile = ParamStr(0)then //自己的进程 begin ParentProc:= Pn.th32ParentProcessID://得到父进程的进程ID //父进程的句柄 H:= OpenProcess(PRO CESS_ALL_ACCESS,True,Pn.th32Parent ProcessID); end else if UpperCase(Pn.szExeFile)= Path then ExplProc:= Pn.th32ProcessID;//Ex plorer的PID Found:= Process32Next(sHandle,Pn);//查找下一个 end; //父进程不是Explorer,是调试器…… if ParentProc <> ExplProc then begin TerminateProcess(H,0);//杀之!除之而后快也! :) //你还可以加上其它什么死机代码来消遣消遣这位可爱的Cracker:) end?? end?? 你可以在Delphi或者VC中试试,这样可以把Delphi和VC杀掉了,因为你现在用的是Delphi和VC的内置调试器来运行你的程序。调试的时候你还是把它的注释删掉吧,发布时别忘记激活哟!