分类: c/c++ |
开发环境是DEV C++,采用C语言编写
创建一个DLL项目,项目名称hello,DLL编写采用的是DEV C++中的示例代码

头文件dll.h
#ifndef _DLL_H_

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 10987
引言

  从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。

  理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。许多程序员从来没有学习过嵌入式系统领域著名的操作系统VxWorks,但是立马就能在上面做开发,大概要归功于平时在Win32多线程上下的功夫。

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 7799
本章我们将以工业控制和嵌入式系统中运用极为广泛的串口通信为例讲述多线程的典型应用。

  而网络通信也是多线程应用最广泛的领域之一,所以本章的最后一节也将对多线程网络通信进行简短的描述。

  1.串口通信

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 9136

C语言编写 Win32 服务实例

#include <windows.h>
#include <stdio.h>

#define SLEEP_TIME 5000
#define LOGFILE "C:\\MyServices\\memstatus.txt"

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 8651

VC++创建和结束进程

Ø         WinExec("cmd.exe",SW_SHOW);可以隐藏程序界面,一般在后台隐藏执行命令行或脚本时使用

Ø         system("cmd");直接执行命令,不可以隐藏界面

Ø         CreateProcess,一般执行带界面的进程,可以隐藏界面,隐藏方法要同时设置dwFlags和wShowWindow才可以生效,

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 10857

常用的宽字符函数和安全CRT函数

宽字符类型和函数是C和C++标准(ANSI/ISO/IEC C 1999和ISO/IEC C++ 1998/2003)新增加的内容,它们是用来支持国际通用的Unicode(1993)字符集的。微软公司从Visual C++ 2005版起,开始严格执行C/C++的新标准。

安全CRT函数是微软公司对C/C++语言的扩展,其中的部分内容已于2003年提交给ISO作为C/C++标准下一版本的修改建议。在VC05/08中,如果不使用这些安全性函数,编译器会报告警告性错误。

1)常用的宽字符函数

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 9907

为pe文件增加一个新节

#include "windows.h"
#include "stdio.h"
#include "winnt.h"
//#include "winbase.h"

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 8118

消息钩子使用教程

基本概念
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控
制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 7883

sendarp的c语言实现(windows)

首先说明,此文中很大部分都是转摘的。
我首先介绍源程序来源: http://industry.ccidnet.com/art/1101/20050727/625891_1.html
这 里的程序是根据MSDN http://msdn.microsoft.com/zh-cn/library/aa366358(en-us,VS.85).aspx 上的程序改编,但是某些地方有少许问题,导致结果错误。我查看源程序(MSDN),修正了一下,实际就两个地方。这两个地方之前我是用j作为下标,错误, 后来使用i作为下标,正确。(但是这种方法只能在本网段有效,据说还是使用WinPcap好些,定义自己的ARP包。)
能够成功运行的程序如下:

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 11618

关于def文件

以下摘自MSDN,希望有帮助。不过在VC下编程好像用不着自己定义DEF文件:   
    
   模块定义    (.def)    文件   
    
   模块定义    (.def)    文件为链接器提供有关被链接程序的导出、属性及其他方面的信息。生成    DLL    时,.def    文件最有用。由于存在可代替模块定义语句使用的链接器选项,通常不需要    .def    文件。也可以将__declspec(dllexport)    用作指定导出函数的手段。   

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 8516
一 :关于指针和堆的内存分配 
先来介绍一下指针 : 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*) ,string * ,float * ,都是说明了本指针所指向的地址空间是什么类型而已,了解了这个基本上所有的问题都好象都变的合理了。 

在C++中,申请和释放堆中分配的存贮空间,分别使用new和delete的两个运算符来完成: 
指针类型 指针变量名=new 指针类型 (初始化); 

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 6407

C++列举指定进程的模块

本文起源于这样一个问题,如何得到某个EXE中加载的某个DLL的基址(BaseAddress)呢?有人回答,用远程注入,CreateRemoteThread之后再GetModuleHandle,因为这个回答实现的复杂性和不确定性,此人没能将发帖者的可用分转换为自己的专家分。没错,这就是黄色论坛CSDN(床上等你)

很多人都用过CreateToolhelp32Snapshot,做什么呢?列举进程对吧?嘻嘻,其实它也可以用来列举某一个进程加载的模块噢,下面给出参考代码

BOOL ListProcessModules( DWORD dwPID ) 

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 7724

Downloading A File Winsock Http - C

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <strings.h>

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 8108

用户层关闭杀毒软件安全保护

只是一个小小的思路,老鸟自行飘过,呵呵

我写这个纯粹是hacker精神,如果被滥用做病毒木马一类的邋遢东东,可跟偶没关系哦。

原理very简单,我发现瑞星监控主要在RavMonD进程中,如果打破其与内核的联系, 则

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 6593

内存映射文件

内存映射文件
  内存映射文件是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数(CreateFileMapping)。这样,文件内的数据就可以用内存读/写指令来访问,而不是用ReadFile和WriteFile这样的I/O系统函数,从而提高了文件存取速度。
  这种函数最适用于需要读取文件并且对文件内包含的信息做语法分析的应用程序,如对输入文件进行语法分析的彩色语法编辑器,编译器等。把文件映射后进行读和分析,能让应用程序使用内存操作来操纵文件,而不必在文件里来回地读、写、移动文件指针。
  有些操作,如放弃“读”一个字符,在以前是相当复杂的,用户需要处理缓冲区的刷新问题。在引入了映射文件之后,就简单的多了。应用程序要做的只是使指针减少一个值。
  映射文件的另一个重要应用就是用来支持永久命名的共享内存。要在两个应用程序之间共享内存,可以在一个应用程序中创建一个文件并映射之,然后另一个应用程序可以通过打开和映射此文件把它作为共享的内存来使用。

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 7299

VC++实现Win2000下直接读写磁盘扇区

  由于Windows 操作系统在很大程度上采取了访问安全保护机制(例如,在Windows操作系统下不能直接访问物理内存、不能使用各种DOS、BIOS中断等等),使得广大程序设计人员在长时间的开发过程中不知不觉地逐渐养成了这样的潜意识——在Windows操作系统下直接操纵硬件设备是极端困难和非常烦琐的,并将其看作Windows编程的一个禁区。尽管在大多数场合下这样的论断还算是贴切,但也并非对所有的硬件设备访问都那么困难。其实Windows在采取“实保护”措施的同时也提供了另外的一种有别于在DOS下访问硬件设备的方法,即把所有的硬件设备全部看做“文件”,并允许按照对文件的读写方式来对其进行数据存取访问。撰写本文的另外一个目的也就是帮助读者打消在Windows环境下对硬件编程的恐惧心理。

  对磁盘扇区数据的访问

  前面已经提过,在Windows 下把所有的设备当作文件进行操作。如果对串口进行编程或许不少读者还比较熟悉:对于串行端口1、2,可以用”COM1”、”COM2”作为参数调用CreateFile()函数,这里的”COM1”、”COM2”即以文件存放路径的方式指出了要操作的硬件设备。但是如果需要对磁盘的某个扇区进行读写,可能不少读者不会想到使用CreateFile()函数或是不知如何使用。其实,与对串行端口的访问类似,需要用与文件存放路径相类似的方式指出要操作的硬件设备(硬盘)。但是这里并不是用“DISK1”、“DISK2”等去标识某一块物理存在的硬盘。由于逻辑扇区是存在于逻辑分区上的,因此这里需要以某种特定的格式来指定需要访问的磁盘逻辑分区。对于逻辑分区X,其格式为”\\.\X:”。

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 9071

c语言rar,zip无损压缩算法实现

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  *                                 *

  *HUFF.C Huffman encode for multimedia application 8*8 pixel Ver 3 *

查看更多...

Tags: c语言Rar 无损压缩 zip压缩

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 9865

进程防注

只给出一个代码有兴趣的朋友自己测试一下


BOOL Lock_CurrentProcess()
{

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 6857

进程防注

BOOL Lock_CurrentProcess()
{
   HANDLE hProcess = ::GetCurrentProcess();
   SID_IDENTIFIER_AUTHORITY sia = SECURITY_WORLD_SID_AUTHORITY;
   PSID pSid;

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 8115

Cr&#101;ateToolhelp32Snapshot枚举进程

CreateToolhelp32Snapshot枚举进程

其实我感觉这篇文章没什么技术含量,只不过有时候用到这个函数的时候可以参考一下。

每一个应用程序实例在运行起来后都会在当前系统下产生一个进程,大多数应用程序均拥有可视界面,用户可以通过标题栏上的关闭按钮关闭程序。但是也有为数不少的在后台运行的程序是没有可视界面的,对于这类应用程序用户只能通过CTRL+ALT+DEL热键呼出"关闭程序"对话框显示出当前系统进程列表,从中可以结束指定的任务。显然,该功能在一些系统监控类软件中还是非常必需的,其处理过程大致可以分为两步:借助系统快照实现对系统当前进程的枚举和根据枚举结果对进程进行管理。本文下面即将对此过程的实现进行介绍。

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 9270