首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用 C 注册 windows 服务程序 (分析 Java Service Wrapper 代码)

如何用 C 注册 windows 服务程序 (分析 Java Service Wrapper 代码) 前提:          从http://wrapper.tanukisoftware.org 下载 Java Service Wrapper 的源代码.     因为 Java Service Wrapper 同时提供windows 和 linux 上的实现,所以源文件夹里的代码都是分两份的.     在windows下的实现注册 windows 服务的代码在wrapper_win.c 文件中.     看了其中的代码后你会对作者的专业精神有深刻的体会,在wrapper_win.c文件中的历史变动说明就有300多行,详细描述了每次改动的变化.具体实现的方法中也都有详细的说明,所以看这样的代码基本上不费力气的.     如果非要说看代码是享受,  Java Service Wrapper  的源代码算一个.    下面我们看看它是如何实现注册一个exe文件为windows服务的.     wrapper_win.c中的入口main 函数定义如下:     void _CRTAPI1 main(int argc, char **argv)      //注意main定义的修饰_CRTAPI1     根据argv的输入参数分别执行,注册,取消,开始,停止windows服务的操作:     代码如下:    if(!_stricmp(argv[1],"-i") || !_stricmp(argv[1],"/i")) {           result = wrapperInstall(argc, argv);                              //注册服务    } else if(!_stricmp(argv[1],"-r") || !_stricmp(argv[1],"/r")) {           result = wrapperRemove();                                         //取消注册    } else if(!_stricmp(argv[1],"-t") || !_stricmp(argv[1],"/t")) {           result = wrapperStartService();                                   //启动服务    } else if(!_stricmp(argv[1],"-p") || !_stricmp(argv[1],"/p")) {            result = wrapperStopService(TRUE);                         //停止服务    }

02
您找到你想要的搜索结果了吗?
是的
没有找到

C语言函数小集合

一、字符操作 函数名: fputc 功 能: 送一个字符到一个流中 用 法: int fputc(int ch, FILE *stream); 函数名: fputs 功 能: 送一个字符串到一个流中 用 法: int fputs(char *string, FILE *stream); 函数名: sprintf 功 能: 输出数据到一字符串中(而printf是输出到屏幕上) 函数名: fread 用 法: fread(fa,4,5,fp); 功 能: 其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中 函数名: strncmp 用 法: extern int strncmp(char *s1, char *s2, int n); 功 能: 比较字符串s1和s2的前n个字符。 详 细: 逐次比较两个字符串前n个字符中的每一个字符(用第一个字符串的字符的ASCII值减去第二个字符串的相应字符的ASCII值),如果相等则继续比较下一个;如果不等,ASCII的差值就是返回值。 函数名: isalnum 原型:extern int isalnum(int c); 用法:#include <ctype.h>  功能:判断字符c是否为字母或数字  说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。 函数名: isalpha 原型:extern int isalpha(int c); 用法:#include <ctype.h> 功能:判断字符c是否为英文字母 说明:当c为英文字母a-z或A-Z时,返回非零值,否则返回零。 函数名: iscntrl 原型:extern int iscntrl(int c); 用法:#include <ctype.h> 功能:判断字符c是否为控制字符 说明:当c在0x00-0x1F之间或等于0x7F(DEL)时,返回非零值,否则返回零。 函数名: isdigit 原型:extern int isdigit(int c); 用法:#include <ctype.h> 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零。 函数名: islower 原型:extern int islower(int c); 用法:#include <ctype.h> 功能:判断字符c是否为小写英文字母 说明:当c为小写英文字母(a-z)时,返回非零值,否则返回零。 函数名: isascii 原型:extern int isascii(int c); 用法:#include <ctype.h> 功能:判断字符c是否为ascii码 说明:当c为ascii码时,返回非零值,否则返回零。ascii码指0x00-0x7F之间的字符 函数名: isgraph 原型:extern int isgraph(int c); 用法:#include <ctype.h> 功能:判断字符c是否为除空格外的可打印字符 说明:当c为可打印字符(0x21-0x7e)时,返回非零值,否则返回零。 函数名: isprint 原型:extern int isprint(int c); 用法:#include <ctype.h> 功能:判断字符c是否为可打印字符(含空格) 说明:当c为可打印字符(0x20-0x7e)时,返回非零值,否则返回零。 函数名: ispunct 原型:extern int ispunct(int c); 用法:#include <ctype.h> 功能:判断字符c是否为标点符号 说明:当c为标点符号时,返回非零值,否则返回零。 标点符号指那些既不是字母数字,也不是空格的可打印字符。 函数名: isspace 原型:extern int isspace(int c); 用法:#include <ctype.h> 功能:判断字符c是否为空白符 说明:当c为空白符时,返回非零值,否则返回零。 空白符指空格、水平制表、垂直制表、换页、回车和换行符。 函数名: isupper 原型:extern int isupper(int c);  用法:#include <ctype.h>  功能:判断字符c是否为大写英文字母 说明:当c为大写英文字母(A-Z)时,返回非零值,否则返回零。 函数名: isxdigit 原型:extern int isxdigit(int c); 用法:#include <ctype.h> 功能:判断字符c是否为十六进制数字 说明:当c为A-F,a-f或0-9之间的十六进制数字时,返回非零值,否则返回零。 函数名: toascii 原型:extern int toascii(int c);

02

详解反调试技术

反调试技术,恶意代码用它识别是否被调试,或者让调试器失效。恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间。为了阻止调试器的分析,当恶意代码意识到自己被调试时,它们可能改变正常的执行路径或者修改自身程序让自己崩溃,从而增加调试时间和复杂度。很多种反调试技术可以达到反调试效果。这里介绍当前常用的几种反调试技术,同时也会介绍一些逃避反调试的技巧。 一.探测Windows调试器 恶意代码会使用多种技术探测调试器调试它的痕迹,其中包括使用Windows API、手动检测调试器人工痕迹的内存结构,查询调试器遗留在系统中的痕迹等。调试器探测是恶意代码最常用的反调试技术。 1.使用Windows API 使用Windows API函数检测调试器是否存在是最简单的反调试技术。Windows操作系统中提供了这样一些API,应用程序可以通过调用这些API,来检测自己是否正在被调试。这些API中有些是专门用来检测调试器的存在的,而另外一些API是出于其他目的而设计的,但也可以被改造用来探测调试器的存在。其中很小部分API函数没有在微软官方文档显示。通常,防止恶意代码使用API进行反调试的最简单的办法是在恶意代码运行期间修改恶意代码,使其不能调用探测调试器的API函数,或者修改这些API函数的返回值,确保恶意代码执行合适的路径。与这些方法相比,较复杂的做法是挂钩这些函数,如使用rootkit技术。 1.1IsDebuggerPresent IsDebuggerPresent查询进程环境块(PEB)中的IsDebugged标志。如果进程没有运行在调试器环境中,函数返回0;如果调试附加了进程,函数返回一个非零值。

04

C++ Unicode SBCS 函数对照表,以备日后查阅

Generic  SBCS  UNICODE  TCHAR  char  wchar_t  _TEOF  EOF  WEOF  _TINT  int  wint_t  _TSCHAR  signed char  wchar_t  _TUCHAR  unsigned char  wchar_t  _TXCHAR  char  wchar_t  __T(x)  x  L  __targv  __argv  __wargv  __tcserror  _strerror  __wcserror  __tcserror_s  _strerror_s  __wcserror_s  _cgetts  _cgets  _cgetws  _cgetts_s  _cgets_s  _cgetws_s  _cputts  _cputs  _cputws  _fgettc  fgetc  fgetwc  _fgettc_nolock  _fgetc_nolock  _fgetwc_nolock  _fgettchar  _fgetchar  _fgetwchar  _fgetts  fgets  fgetws  _fputtc  fputc  fputwc  _fputtc_nolock  _fputc_nolock  _fputwc_nolock  _fputtchar  _fputchar  _fputwchar  _fputts  fputs  fputws  _ftprintf  fprintf  fwprintf  _ftprintf_l  _fprintf_l  _fwprintf_l  _ftprintf_p  _fprintf_p  _fwprintf_p  _ftprintf_p_l  _fprintf_p_l  _fwprintf_p_l  _ftprintf_s  fprintf_s  fwprintf_s  _ftprintf_s_l  _fprintf_s_l  _fwprintf_s_l  _ftscanf  fscanf  fwscanf  _ftscanf_l  _fscanf_l  _fwscanf_l  _ftscanf_s  fscanf_s  fwscanf_s  _ftscanf_s_l  _fscanf_s_l  _fwscanf_s_l  _get_tpgmptr  _get_pgmptr  _get_wpgmptr  _gettc  getc  getwc  _gettc_nolock  _getc_nolock  _getwc_nolock  _gettch  _getch  _getwch  _gettch_nolock  _getch_nolock  _getwch_nolock  _gettchar  getchar  getwchar  _gettchar_nolock  _getchar_nolock  _getwchar_nolock  _gettche  _getche  _getwche  _gettche_nolock  _getche_nolock  _getwche_nolock  _getts  gets  _getws  _getts_s  gets_s  _getws_s  _i64tot  _i64toa  _i64tow  _i64tot_s  _i64toa_s  _i64tow_s  _istalnum  isalnum  iswalnum  _istalnum_l  _isalnum_l  _iswalnum_l  _istalpha  isalpha  iswalpha  _istalpha_l  _isalpha_l  _iswalpha_l  _istascii  __isascii  iswascii  _istcntrl  iscntrl  iswcntrl  _istcntrl_l  _iscntrl_l  _iswcntrl_l  _istdigit  isdigit  iswdigit  _istdigit_l  _isdigit_l  _iswdigit_l  _istgraph  isgraph  iswgraph  _istgraph_l  _isgraph_l  _iswgraph_l  _istlower  islower  iswlower  _istlower_l  _islower_l  _iswlower_l  _istprint  isprint  iswprint  _istprint_l  _isprint_l  _iswprint_l  _istpunct  ispunct  iswpunct  _istpunct_l  _ispunct_l  _iswpunct_l  _istspace  isspace  isw

04

C++ Unicode SBCS 函数对照表,以备日后查阅

Generic  SBCS  UNICODE  TCHAR  char  wchar_t  _TEOF  EOF  WEOF  _TINT  int  wint_t  _TSCHAR  signed char  wchar_t  _TUCHAR  unsigned char  wchar_t  _TXCHAR  char  wchar_t  __T(x)  x  L  __targv  __argv  __wargv  __tcserror  _strerror  __wcserror  __tcserror_s  _strerror_s  __wcserror_s  _cgetts  _cgets  _cgetws  _cgetts_s  _cgets_s  _cgetws_s  _cputts  _cputs  _cputws  _fgettc  fgetc  fgetwc  _fgettc_nolock  _fgetc_nolock  _fgetwc_nolock  _fgettchar  _fgetchar  _fgetwchar  _fgetts  fgets  fgetws  _fputtc  fputc  fputwc  _fputtc_nolock  _fputc_nolock  _fputwc_nolock  _fputtchar  _fputchar  _fputwchar  _fputts  fputs  fputws  _ftprintf  fprintf  fwprintf  _ftprintf_l  _fprintf_l  _fwprintf_l  _ftprintf_p  _fprintf_p  _fwprintf_p  _ftprintf_p_l  _fprintf_p_l  _fwprintf_p_l  _ftprintf_s  fprintf_s  fwprintf_s  _ftprintf_s_l  _fprintf_s_l  _fwprintf_s_l  _ftscanf  fscanf  fwscanf  _ftscanf_l  _fscanf_l  _fwscanf_l  _ftscanf_s  fscanf_s  fwscanf_s  _ftscanf_s_l  _fscanf_s_l  _fwscanf_s_l  _get_tpgmptr  _get_pgmptr  _get_wpgmptr  _gettc  getc  getwc  _gettc_nolock  _getc_nolock  _getwc_nolock  _gettch  _getch  _getwch  _gettch_nolock  _getch_nolock  _getwch_nolock  _gettchar  getchar  getwchar  _gettchar_nolock  _getchar_nolock  _getwchar_nolock  _gettche  _getche  _getwche  _gettche_nolock  _getche_nolock  _getwche_nolock  _getts  gets  _getws  _getts_s  gets_s  _getws_s  _i64tot  _i64toa  _i64tow  _i64tot_s  _i64toa_s  _i64tow_s  _istalnum  isalnum  iswalnum  _istalnum_l  _isalnum_l  _iswalnum_l  _istalpha  isalpha  iswalpha  _istalpha_l  _isalpha_l  _iswalpha_l  _istascii  __isascii  iswascii  _istcntrl  iscntrl  iswcntrl  _istcntrl_l  _iscntrl_l  _iswcntrl_l  _istdigit  isdigit  iswdigit  _istdigit_l  _isdigit_l  _iswdigit_l  _istgraph  isgraph  iswgraph  _istgraph_l  _isgraph_l  _iswgraph_l  _istlower  islower  iswlower  _istlower_l  _islower_l  _iswlower_l  _istprint  isprint  iswprint  _istprint_l  _isprint_l  _iswprint_l  _istpunct  ispunct  iswpunct  _istpunct_l  _ispunct_l  _iswpunct_l  _istspace  isspace  isw

02
领券