该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//以前发过,再贴一次

//-----------------------------------------------------

#include "windows.h"

#pragma comment(lib,"user32.lib")

LPCRITICAL_SECTION lpDllLock=NULL;

#define CODE_MOV_LEN 5

void FindKernelMemDllLock(DWORD CodeAddr)

{

int      iIndex;

PUCHAR code=(PUCHAR)CodeAddr;

for(iIndex=0;iIndex<1024;++iIndex)

{

if(IsBadReadPtr(code+iIndex,CODE_MOV_LEN))

break;

if(code[iIndex]==0x90 && code[iIndex+1]==0x90)

{

for(;iIndex<1024 && code[iIndex]==0x90;++iIndex);

if(!IsBadReadPtr(code+iIndex,CODE_MOV_LEN) && code[iIndex]==0x68)

{

lpDllLock=(LPCRITICAL_SECTION)(*((ULONG *)(code+iIndex+1)));

break;

}

}

}

}

BOOL __stdcall ConsoleEventCallback(DWORD dwEvent)

{

if(dwEvent==CTRL_CLOSE_EVENT)

{

if(lpDllLock==NULL)

{

DWORD *RetAddr=0;

#ifdef _MSC_VER

__asm mov RetAddr,ebp

#else

__asm__ __volatile__("movl %%ebp,%0":"=m"(RetAddr));

#endif

FindKernelMemDllLock(*(RetAddr+1));

}

if(lpDllLock)

{

LeaveCriticalSection(lpDllLock);

ExitThread(0);

}

return TRUE;

}

return FALSE;

}

int main()

{

MSG msg;

SetConsoleCtrlHandler(ConsoleEventCallback,TRUE);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return 0;

}

c语言控制台不退出程序,怎样可以屏蔽控制台程序的关闭按钮相关推荐

  1. C语言实例第5期:在控制台打印100-200之间的所有素数

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  2. 屏蔽控制台应用程序的窗口#pragma comment(linker, /subsystem:windows /ENTRY:mainCRTStartup)

    屏蔽控制台应用程序的窗口#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") 众所周知,控制台应用 ...

  3. 用C语言编写一个Linux下的简单shell程序

    这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...

  4. 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装

    在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...

  5. c语言运行时更入下一行,C语言高级语言程序设计(一)_第二章 C程序设计基础(二).ppt...

    C语言高级语言程序设计(一)_第二章 C程序设计基础(二) * 问a,b能否交换?不能.示例 传值调用 如何改变参数的值?在后续章节中介绍 下:传值 * 传值的好处 下:问题3.2 * * * 使用范 ...

  6. c语言学生成绩查询课设报告,C语言课设报告(学生考试成绩查询程序)【荐】.doc...

    C语言课设报告(学生考试成绩查询程序)[荐].doc 学生考试成绩查询程序 学号:******** 姓名:***** 完成日期:****年月 通过键盘输入学生的考试信息,包括:学号.姓名.课程名称.学 ...

  7. c语言选择菜单程序设计,c语言课程设计报告-- 使用菜单选择趣味程序.doc

    c语言课程设计报告-- 使用菜单选择趣味程序 青岛农业大学 课程设计报告 题 目: 使用菜单选择趣味程序 姓 名: 杨丽娜 学 院: 理学与信息科学学院 专 业: 通信工程 班 级: 2班 学 号: ...

  8. c是过程化语言吗数据库,关于SQL错误的是()A、所有数据库的公共语言B、非过程化的C、统一的语言D、所有用SQL缩写的程序都...

    关于SQL错误的是()A.所有数据库的公共语言B.非过程化的C.统一的语言D.所有用SQL缩写的程序都 更多相关问题 [多选] 在彩色电视机遥控系统中,属于模拟量控制的有()等几种. [多选] 在色度 ...

  9. linux安装控制台驱动,linux设备驱动之控制台驱动

    我们在之前分析过input子系统和tty设备驱动架构.今天需要将两者结合起来.看看linux中的控制台是怎么样实现的. 二:控制台驱动的初始化 之前在分析tty驱动架构的时候曾分析到.主设备为4,次设 ...

最新文章

  1. webassembly类型_WebAssembly 那些事儿
  2. C++语言基本类型—浮点型
  3. 学习笔记(5)——实验室集群LVS监控Web界面配置
  4. 机器学习Sklearn实战——极限森林、梯度提升树算法
  5. NOI模拟题4 Problem C: 填格子(board)
  6. PHP获取优酷视频FLV地址
  7. onSaveInstanceState与onRestoreInstanceState何时调用、如何使用
  8. introduce of servlet and filter
  9. 黑苹果找不到触控板_苹果高管告诉你为何要添加触控板功能
  10. 深入理解java虚拟机章节_深入理解java虚拟机-第六章
  11. h264解码延迟优化_OPPO Enco Free真无线双发耳机提速120ms,延迟优于苹果华为
  12. js截取字符长度加省略号
  13. 「转载」微服务分布式架构中,如何实现日志链路跟踪?
  14. Chirp信号基础知识及matlab实现
  15. 面向服务的体系架构(SOA)和企业服务总线(ESB)
  16. 【*如何捱过寂寥萧瑟的秋季*】
  17. NFL计划将数据跟踪芯片放入橄榄球中
  18. 带你一起敲敲ES6的新特性,边解释边应用!
  19. Google Play上架总结(一)为什么要上架Google Play
  20. 【火影之卡卡西动漫主题】

热门文章

  1. socket编程 TCP 粘包和半包 的问题及解决办法
  2. 关于.NET异常处理的思考
  3. 如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题
  4. 启动程序端口被占用Address already in use: bind解决方案
  5. Node.js快速文件服务器(通过HTTP的静态文件)
  6. vue 父循环怎么拿子循环中的值_Vue 父组件循环使用refs调用子组件方法出现undefined的问题...
  7. win11 c4d如何安装 Windows11安装c4d的步骤方法
  8. redis的安装和命令的使用(史上最全命令集合)
  9. python main调试_在main.py中调试显示这个是什么问题
  10. 洛希极限 (10 分)