以下都可以后台(不会显示在任务栏,不会显示在任务管理器的应用程序)
一、MFC不要窗口(进程还是会有)
二、注册成windows服务(进程还是会有)(windows服务是正统的后台)
(以下任务管理器进程也看不到,反正就是找不到)
三、DLL远程注入
四、hook
五、shellcode注入到任一程序
调用钩子程序
HOOKHHOOK SetWindowsHookEx(
int idHook, // type of hook to install
HOOKPROC lpfn, // address of hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // identity of thread to install hook for
);
linux通过内核访问硬件,一般不允许直接访问硬件,除非你编写的是驱动程序。驱动程序必须是内核模块类的,直接挂载在内核的钩子(hook)上,有特殊的编写规则。
如何通过内核模块访问串口,要include kernelh,里面有相应接口函数。
这个实现起来比较难啊!因为屏幕上的东西一旦被遮挡住,然后重现,会调用相应程序的刷新函数,这样字符还是会重现出来。这样就导致删除字符比较困难。不过你可以拦截类似TextOutA(W)之类的api,当检测到其中含有指定的字符时讲它删除然后显示出来。
还有一个难点就是在屏幕上显示的应用程序的数目,这个也是难点。
WINDOW下可进行挂接的过滤函数有
WH_CALLWNDPROC,WH_CBT ,WH_DEBUG,WH_GETMESSAGE ,
WH_HARDWARE ,WH_JOURNALPLAYBACK ,
WH_JOURNALRECORD ,WH_MOUSE ,
WH_MSGFILTER ,WH_SYSMSGFILTER ,
WH_KEYBOARD
键盘过滤函数 WH_KEYBOARD 是最常用最有用。
利用函数SetWindowsHookEx()将其挂接在函数链首。
拦+截到消息是否传递给函 数链的下一个函数是由每个具体函数功能确定,用API函数的CallNextHookEx()来传递。
挂接函数是全局的,那么必须将其放在一个DLL 动态链接库中。
键盘挂钩函数为例:
int FAR PASCAL KeyboardProc( int nCode,WORD wParam,DWORD lParam)
其中KeyboardProc为定义挂接函数名,该函数必须在模块定义文件中利用 EXPORTS命 令进行说明;nCode决定挂接函数是否对当前消息进行处理;wParam和lParam为具体 的消息内容。
卸钩 调用一次 UnhookWindowsHookEx(iProc)
动态链接库调用有3种方法。
1在DEF定义文件中直接用函数名或序号说明:
EXPORTS WEP @1 RESIDENTNAME InitHooksDll
@2 InstallFilter
@3 KeyboardProc
@4
用序号说明格式为:链接库名函数名(如本例中说明方法为KEYDLLKeyboardProc)。
2在应用程序中利用函数直接调用:
首先在应用程序中利用LoadLibrary(LPSTR "链接库名")将动态链接库装入,并取得 装载库模块句柄hInst,
然后直接利用GetProcAddress(HINSTANCE hInst,LPSTR "函 数过程名")获取函数地址,然后直接调用该地址即可,
程序结束前利用函数 FreeLibrary( )释放装入的动态链接库即可。
3利用输入库LIB方法 利用IMPLIBEXE程序在建立动态链接库的同时建立相应的输入库LIB,然后直接在 项目文件中增加该输入库。
打字 太麻烦了,不写了。。。。
当然可以,针对浏览器这种与系统紧密结合的软件,用C语言来实现是可以的,因为现在大部分 *** 作系统都是C/C++实现的,包括占有市场率最高的windows或者开源作品的代表Linux *** 作系统都是C/C++工程的结果,所以毫无疑问,用C实现浏览器是可行的,但是现在的流行的趋势面向对象,而C是面对过程的语言,估计C++更为合适!!
以上就是关于C语言程序怎么后台运行全部的内容,包括:C语言程序怎么后台运行、求大神指教,怎么在C语言排列数字小游戏中记录键盘按了多少次方向键并一次一次叠加显示出来、linux想要获取串口参数信息,用c语言程序怎么实现呢类似下面的行吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)