见到个程序,扩展名是.exv 但它同样能出现在任务管理器中,当然也能正常运行这东西是怎么做的 怎么执行的
解决方案 »
- 如何在DLL中止主程序的调用事件
- 用DELPHI如何调用DESKTOPTODEVICE函数向PDA传送XML文件啊?
- ado+access的兼容问题^_^!
- 望请介绍一个“带有安装选项、可制作中文界面”的安装程序制作工具。
- 大家做直方图、折线图、圆饼图用什么东东?
- 如何判断combobox
- 请教各位老大,我出现了版本不一致的错误,请问如何解决
- //如何取得系统的字体列表?如“MS Sans Serif”"宋体"等,就像在TFontDialog中的列表一样?
- 哪有中文版的,制作hlpe文件的软件?
- 怎样用delphi 5读取 sql server 7.0存储过程返回的多个表?
- 求一条SQL语句,谢谢各位...
- 为何窗体显示时DBGRID表格周围要晃动1秒钟左右?
能达到这个目的就行了
另外隐藏也不只有链表一种方法,可以用irp,只不过Delphi不适合写驱动
可以, 原理就是用CreateProcess带CREATE_SUSPENDED启动任意一个可执行程序(比如explorer.exe, 可以称之为僵尸进程), 然后将其内存替换成真正要执行的exe内容, 修改入口指针最后用ResumeThread即可隐蔽地执行你的exe了, 而且你exe的内容只在内存中存在, 任务管理器中看到的却是僵尸进程的文件名. 如果你把svchost.exe作为僵尸进程那就非常具备欺骗性了. 而且实现并不复杂, 主要就是替换时要判断一下僵尸进程占用的内存空间要够装下你的程序. 如果僵尸进程内存空间太小还可以通过调用ntdll.dll中的NtUnmapViewOfSection先卸载僵尸进程占用的内存, 再通过VirtualAllocEx指定首地址的方式重新分配足够的空间, 用WriteProcessMemory将你的程序代码写入目标内存, 再用GetThreadContext, SetThreadContext修改目标进程的EBX寄存器使之指向新的exe入口地址, 最后用ResumeThread恢复目标进程的执行即可大功告成.不过我发现这个方法对delphi编译的程序执行完全没有问题, 但是对使用mfc的用vc编写的程序却无法执行, 原因就是用mfc的程序加载资源时不是直接从已经加载到内存中的资源里读取, 而是去读文件中的资源节, 但是我们程序对应的文件却是那个僵尸程序, 这就造成了读不到资源的异常发生.