精华内容
下载资源
问答
  • Windows操作系统向用户提供GUI,它是以事件驱动(Event Driven)方式工作。事件发生后,OS将事先定义好的消息发送给相应的应用程序,应用程序分析收到的消息后执行相应动作。以敲击键盘为例。常规Windows消息流:1. ...
    56a33abf8b63193e52693aecfc90d20a.png本文为看雪论坛优秀文章看雪论坛作者ID:有毒

    一、钩子和消息钩子钩子,英文Hook,泛指偷看或截取信息时所用的手段或工具。 Windows操作系统向用户提供GUI,它是以事件驱动(Event Driven)方式工作。事件发生后,OS将事先定义好的消息发送给相应的应用程序,应用程序分析收到的消息后执行相应动作。以敲击键盘为例。 常规Windows消息流:

    1. 发生键盘输入事件,WM_KEYDOWN消息被添加到OS消息队列;

    2. OS判断哪个应用程序发生了事件,从OS消息队列中取出消息,添加到相应应用程序的app消息队列;

    3. 应用程序监视自身的消息队列,发现新添加的WM_KEYDOWN消息,调用相应的事件处理程序进行处理。

    附带钩子的信息流:

    1. 发生键盘输入事件,WM_KEYDOWN消息被添加到OS消息队列;

    2. OS判断哪个应用程序发生了事件,从OS消息队列中取出消息,发送给应用程序;

    3. 钩子程序截取信息,对消息采取一定的动作(因钩子目的而定);

    4. 如钩子程序不拦截消息,消息最终传输给应用程序,此时的消息可能经过了钩子程序的修改。

    二、SetWindowsHookEx()这是一个实现消息钩子的API,其定义如下:
    HHOOK SetWindowsHookEx(    int idHook,                        // hook type    HOOKpROC lpfn,                // hook procedure    HINSTANCE hMod,                //hook procedure所属的DLL句柄    DWORD dwThreadId            //需要挂钩的线程ID,为0时表示为全局钩子(Global Hook));
    hook proceduce是由操作系统调用的回调函数;安装消息钩子时,钩子过程需要存在于某个DLL内部,且该DLL的示例句柄即为hMod。 使用SetWindowsHookEx()设置好钩子后,在某个进程中生成指定消息时,OS就会将相关的DLL文件强制注入(injection)相应进程,然后调用注册的钩子程序。三、键盘消息钩取以下以书上例子进行练习,首先过程原理图如下: 09fb59d361d3666fc23df4b5a9c40780.png KeyHook.dll文件是一个含有钩子过程(KeyboardProc)的DLL文件,HookMain.exe是最先加载KeyHook.dll并安装键盘钩子的程序。HookMain.exe加载KeyHook.dll后使用SetWindowsHookEx()安装键盘钩子;若其他进程(如图中所示)发生键盘输入事件,OS就会强制将KeyHook.dll加载到像一个进程的内存,然后调用KeyboardProc()函数。 实验:HookMain.exe 关于实验操作部分建议跟随书上走一遍流程,体验Hook的魅力。四、源代码分析

    >>>>

    1、HookMain.cpp

    HookMain程序的主要源代码如下所示:
    #include "stdio.h"#include "conio.h"#include "windows.h"#define    DEF_DLL_NAME        "KeyHook.dll"#define    DEF_HOOKSTART        "HookStart"#define    DEF_HOOKSTOP        "HookStop"typedef void (*PFN_HOOKSTART)();typedef void (*PFN_HOOKSTOP)();void main(){    HMODULE    hDll = NULL;    PFN_HOOKSTART    HookStart = NULL;    PFN_HOOKSTOP    HookStop = NULL;    char    ch = 0;  // 加载KeyHook.dll    hDll = LoadLibraryA(DEF_DLL_NAME);    if( hDll == NULL )    {        printf("LoadLibrary(%s) failed!!! [%d]", DEF_DLL_NAME, GetLastError());        return;    }  // 获取导出函数地址    HookStart = (PFN_HOOKSTART)GetProcAddress(hDll, DEF_HOOKSTART);    HookStop = (PFN_HOOKSTOP)GetProcAddress(hDll, DEF_HOOKSTOP);  // 开始钩取    HookStart();  // 等待,直到用户输入“q”    printf("press 'q' to quit!\n");    while( _getch() != 'q' )    ;  // 终止钩子    HookStop();  // 卸载KeyHook.dll    FreeLibrary(hDll);}

    >>>>

    2、KeyHook.dll

    KeyHook.dll源代码:
    #include "stdio.h"#include "windows.h"#define DEF_PROCESS_NAME        "notepad.exe"HINSTANCE g_hInstance = NULL;HHOOK g_hHook = NULL;HWND g_hWnd = NULL;BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved){    switch( dwReason )    {        case DLL_PROCESS_ATTACH:            g_hInstance = hinstDLL;            break;        case DLL_PROCESS_DETACH:            break;        }    return TRUE;}LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){    char szPath[MAX_PATH] = {0,};    char *p = NULL;    if( nCode >= 0 )    {        // bit 31 : 0 => press, 1 => release        if( !(lParam & 0x80000000) )    //释放键盘按键时        {            GetModuleFileNameA(NULL, szPath, MAX_PATH);            p = strrchr(szPath, '\\');      //比较当前进程名称是否为notepad.exe,成立则消息不传递给应用程            if( !_stricmp(p + 1, DEF_PROCESS_NAME) )                return 1;        }    }  //如果不是notepad.exe,则调用CallNextHookEx()函数,将消息传递给应用程序    return CallNextHookEx(g_hHook, nCode, wParam, lParam);}#ifdef __cplusplusextern "C" {#endif    __declspec(dllexport) void HookStart(){        g_hHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hInstance, 0);    }    __declspec(dllexport) void HookStop(){        if( g_hHook )        {            UnhookWindowsHookEx(g_hHook);            g_hHook = NULL;        }    }#ifdef __cplusplus}#endif
    总体上代码相对简单,调用导出函数HookStart()时,SetWindowsHookEx()函数就会将KetyboardProc()添加到键盘钩链。

    >>>>

    3、代码执行流程分析

    安装好键盘钩子后,无论在哪个进程中,只要发生了键盘输入事件,OS就会强制将KeyHook.dll注入到进程中,加载了KeyHook.dll的进程,发生键盘事件时会首先调用执行KeyHook.KetyboardProc()。 KetyboardProc()函数中发生键盘输入事件时,会比较当前进程的名称与“notepad.exe”是否相同,相同返回1,终止KetyboardProc()函数,意味着截获并删除了消息,这样键盘消息就不会传递到notepad.exe程序的消息队列。五、调试使用OD打开HookMain.exe文件: e9210826636755497f52990272d81461.png

    >>>>

    1、查找核心代码

    我们关心的是核心的键盘钩取部分的代码,如何查找核心代码?

    (1)逐步跟踪(除非迫不得已!)

    (2)检索相关API

    (3)检索相关字符串

    我们已经知道程序的功能,会在控制台显示字符串“press ‘q’ to quit!”,所以先检查程序导入的字符串(Search for -All referencen text strings): f639b797d821cb9c4a3fba47c9ff1273.png 地址40104d处引用了要查找的字符串,双击跳转: a1366cc2c890e7b12deabf8921b45f4f.png 来到main函数处。

    >>>>

    2、调试main函数

    在401000处下断,开始调试,了解main函数中主要的代码流。401006地址处调用LoadLibraryA(Keyhook.dll),然后由40104b地址处的CALL EBX指令调用KeyHook.HookStart()函数。跟进查看: c4d3dba9e6b954ebf2fdbb45967c953e.png 这里的代码是被加载到HookMain.exe进程中的KeyHook.dll的HookStart()函数,第一句就是调用SetWindowsHookExW()函数,在进行参数入栈操作后,我们可以在栈中看到函数的4个参数值。

    参考:《逆向工程核心原理》

    be0ce2074f93d8324657c362e6be6ad5.gif- End -7d115cb45b1c8da1df08022ff8c529b2.png

    看雪ID:有毒

    https://bbs.pediy.com/user-779730.htm 

    *本文由看雪论坛 有毒 原创,转载请注明来自看雪社区。00fd0e7c7dfd7e656a959c0270e395cc.png

    推荐文章++++

    4bdf464bd366911a408217337d2b8e3e.png

    * 一个深网灰色直播APP的逆向研究

    * 捆绑包驱动锁首病毒分析

    * **游戏逆向分析笔记

    * 对宝马车载apps协议的逆向分析研究

    * x86_64架构下的函数调用及栈帧原理

    好书推荐77997c1cb5cbc55889b8a74fa036a064.png

    866936571c1009f1c3373eb030bb1023.png公众号ID:ikanxue官方微博:看雪安全商务合作:wsc@kanxue.comd3a8adc63fabca460853914d658725cc.gif
    展开全文
  • 缘起 病毒肆掠 在家来无事,想着吧shell的知识整理一下源码地址 github 求点个star ⭐️shell环境shell是一门脚本语言,Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。...windows系统中我们的c...

    24acdde7cd9dffd8a47ce23c6932aaac.png

    缘起

    病毒肆掠 在家来无事,想着吧shell的知识整理一下

    源码地址 github 求点个star ⭐️

    shell环境

    shell是一门脚本语言,Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
    我们常见的操作系统如mac的OSX系统,打开终端就可以执行我们的shell(Bash shell)。windows系统中我们的cmd终端也可以执行,Linux系统一等公民的shell环境

    无论什么开发者,或多或少都会运用到一些shell的知识,这篇文章旨在帮助你完整的整理shell的基本知识

    话不多说让我们开始吧 !

    start

    作为一门脚本语言,和其他语言一样shell中也存在:

    • 变量
    • 数据结构
    • 运算符
    • 流程控制
    • 函数
    • 内置函数

    变量

    my_var='new.ruoduan.cn'
    • 语句给变量赋值
    for file in `ls /etc`
    # 以上语句将 /etc 下目录的文件名循环出来
    • 只读变量
    redVar="abc"
    readonly redVar
    redVar="213"

    This variable is read only.

    • 删除变量
    del_var='待会要删除'
    unset del_var
    echo $del_var

    输出为空

    • 拼接字符串
    name='ruoduan'
    echo "my name is ${name} !"
    echo 'my name is $name !'
    引号里可以有变量,双引号里可以出现转义字符
    • 获取字符串长度 echo ${#name}
    • 截取字符串 和python类似 echo ${name:3:1}
    • 查找字符串 echoexpr index "$name" r# 输出1

    传递参数

    arguments.sh

    echo "Shell 传递参数实例!";
    echo "执行的文件名:$0";
    echo "第一个参数为:$1";
    echo "第二个参数为:$2";
    echo "第三个参数为:$3";

    终端执行 bash arguments.sh 1 2 3

    输出:

    Shell 传递参数实例!
    执行的文件名:arguments.sh
    第一个参数为:1
    第二个参数为:2
    第三个参数为:3
    • 转义符:

    6a157d7de06c65ed5b0e0522fe2ea681.png
    • 栗子
    echo -e "n Shell 传递参数实例!";
    echo "第一个参数为:$1";
    
    echo "参数个数为:$#";
    echo "传递的参数作为一个字符串显示:$*";

    输出:

    Shell 传递参数实例!
    第一个参数为:1
    参数个数为:3
    传递的参数作为一个字符串显示:1 2 3

    数组

    比较容易理解,一个文本带过

    arr.sh

    my_array=(A B "C" D)
    
    array_name[0]=value0
    array_name[1]=value1
    array_name[2]=value2
    
    echo $array_name[1]
    
    # 获取数组中的所有元素
    # 使用@ 或 * 可以获取数组中的所有元素
    
    echo "数组中的所有元素为${array_name[*]} "
    
    # 获取数组的长度å
    echo "数组中的长度${#array_name[*]} "

    输出:

    value0[1]
    数组中的所有元素为value0 value1 value2 
    数组中的长度3

    运算符

    shell 运算符分为如下几类
    • 算数运算符
    • 关系运算符
    • 布尔运算符
    • 字符串运算符
    • 文件测试运算符
    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
    val=`expr 3 + 3`
    echo "两数之和为 : $val"

    两数之和为 : 6

    算术运算

    a=30
    b=60
    
    val=`expr $a + $b`
    echo "a + b : $val"
    
    val=`expr $a - $b`
    echo "a - b : $val"
    
    val=`expr $a * $b`
    echo "a * b : $val"
    
    val=`expr $b / $a`
    echo "b / a : $val"
    
    val=`expr $b % $a`
    echo "b % a : $val"
    
    if [ $a == $b ]
    then
       echo "a 等于 b"
    fi
    if [ $a != $b ]
    then
       echo "a 不等于 b"
    fi

    输出:

    两数之和为 : 6
    a + b : 90
    a - b : -30
    a * b : 1800
    b / a : 2
    b % a : 0
    a 不等于 b

    其他的运算符 就不给出实例了详情 源码

    shell echo

    echo '啦啦啦~ 哈哈哈'
    
    # 显示转义字符
    echo -e '啦啦啦~ n 哈哈哈'
    
    # 显示变量
    # 有点类似于 python 中的 input
    read name 
    echo "$name It is a test"
    
    # 显示结果定向至文件
    echo -e "显示结果定向至文件的内容n" > myfile.log
    
    # 显示命令执行结果
    echo `date`

    比较简单

    shell printf

    语法: printf format-string [arguments...]

    • format-string: 为格式控制字符串
    • arguments: 为参数列表。
    echo "Hello, Shell"
    printf "Hello, Shelln"
    
    # 格式化打印
    printf "%-10s %-8s %-4sn" 姓名 性别 体重kg  
    printf "%-10s %-8s %-4.2fn" 小米 男 66.1234 
    printf "%-10s %-8s %-4.2fn" 小红 男 48.6543 
    printf "%-10s %-8s %-4.2fn" 小康 女 47.9876

    输出:

    Hello, Shell
    Hello, Shell
    姓名     性别   体重kg
    小米     男      66.12
    小红     男      48.65
    小康     女      47.99
    • %s %c %d %f都是格式替代符
    • %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
    • %-4.2f 指格式化为小数,其中.2指保留2位小数。

    流程控制

    • if elif
    if [ $a == $b ]
    then
       echo "a 等于 b"
    elif [ $a -gt $b ]
    then
       echo "a 大于 b"
    elif [ $a -lt $b ]
    then
       echo "a 小于 b"
    else
       echo "没有符合的条件"
    fi

    shell 中流程控制以if开始fi结尾

    • if else if else语句经常与test命令结合
    num1=$[2*3]
    num2=$[1+5]
    if test $[num1] -eq $[num2]
    then
        echo '两个数字相等!'
    else
        echo '两个数字不相等!'
    fi
    
    # for 循环
    for loop in 1 2 3 4 5
    do
        echo "The value is: $loop"
    done

    输出:

    The value is 1
    The value is 2
    The value is 3
    The value is 4
    The value is 5
    • while 语句
    int=1
    while(( $int<=6 ))
    do
        echo $int
        let "int++"
    done

    输出:

    1
    2
    3
    4
    5
    6
    • 无限循环
    while true
    do
        command
    done

    or

    for (( ; ; ))

    • until 循环
    until [ ! $a -lt 10 ]
    do
       echo $a
       a=`expr $a + 1`
    done
    • case
    echo '输入 1 到 4 之间的数字:'
    echo '你输入的数字为:'
    read aNum
    case $aNum in
        1)  echo '你选择了 1'
        ;;
        2)  echo '你选择了 2'
        ;;
        3)  echo '你选择了 3'
        ;;
        4)  echo '你选择了 4'
        ;;
        *)  echo '你没有输入 1 到 4 之间的数字'
        ;;
    esac
    • break continue continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循
    • case ... esac
    site="a"
    case "$site" in
       "a") echo "is a"
       ;;
       "b") echo "is b"
       ;;
       "c") echo "is c"
       ;;
    esac

    函数

    demoFun () {
        echo "函数执行"
    }
    demoFun
    • 函数返回值
    returnFun () {
        echo '返回2数相加'
        echo '输入第一个数字'
        read aNum
        echo '输入第二个数字'
        read bNum
        echo "$aNum$bNum"
        return $(($aNum+$bNum))
    }
    
    returnFun
    echo "输入的两个数字之和为 $? !"

    函数返回值在调用该函数后通过 $? 来获得 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以

    • 函数参数
      和前面的传递参数大致相同
    funWithParam(){
        echo "第一个参数为 $1 !"
        echo "第二个参数为 $2 !"
        echo "err:第十个参数为 $10 !"
        echo "第十个参数为 ${10} !"
        echo "第十一个参数为 ${11} !"
        echo "参数总数有 $# 个!"
        echo "作为一个字符串输出所有参数 $* !"
    }
    
    funWithParam 1 2 3 4 5 6 7 8 9 66 99

    输出:

    第一个参数为 1 !
    第二个参数为 2 !
    err:第十个参数为 10 !
    第十个参数为 66 !
    第十一个参数为 99 !
    参数总数有 11 个!
    作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 66 99 !

    当n>=10时,需要使用${n}来获取参数

    • 参数符

    216e628f4325c4ea4881acc132dbf687.png

    shell 文件模块

    和JavaScript ECma5差不多

    test1.sh

    file_name='test1文件数据'

    test2.sh

    . ./test1.sh
    # or
    # source ./test1.sh
    
    echo $file_name

    输出: test1文件数据


    到这里 shell 的基本知识也差不多了本指南源码

    码字不易 求点个 star ⭐️

    vim图

    21f8ae46d1c0ffb1aed38c8bb560bd4a.png
    展开全文
  • Windows.h> char i1[] = {“123456789”}; char i2[] = {“123456789”}; static _declspec(naked) int repzcmpsb(char i1[],char i2[],int size) { __asm { pushad mov ebp,esp mov esi, dword ptr ds : [ebp + ...
    
    #include<iostream>
    #include<Windows.h>
    
    char i1[] = {"123456789"};
    char i2[] = {"123456789"};
    static _declspec(naked) int repzcmpsb(char i1[],char i2[],int size) {
    	__asm {
    		pushad
    		mov ebp,esp
    		mov esi, dword ptr ds : [ebp + 0x24]
    		mov edi, dword ptr ds : [ebp + 0x28]
    		mov ecx, dword ptr ds : [ebp + 0x2C]
    		repz cmpsb
    		jnz no
    		popad
    		mov eax,1
    		ret
    		no:
    		popad
    		mov eax,2
    		ret
    	}
    }
    
    int main() {
    
    	if (repzcmpsb(i1, i2, sizeof(i1) - 1)==1) {
    		std::cout << "字符串相等" << std::endl;
    	}
    	else {
    		std::cout << "字符串不相等" << std::endl;
    	}
    }
    
    展开全文
  • 在php中,可以使用内置函数strncasecmp()来不...如果返回值为0,则表示两个字符串相等;如果返回值小于0,则表示str1小于str2。本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑php不区分大小写的比较字符串...

    在php中,可以使用内置函数strncasecmp()来不区分大小写的比较字符串,语法“strncasecmp(str1,str2,length)”。如果返回值为0,则表示两个字符串相等;如果返回值小于0,则表示str1小于str2。

    60473fff37678230.jpg

    本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

    php不区分大小写的比较字符串<?php

    echo strncasecmp("Hello","Hello",6);

    echo "
    ";

    echo strncasecmp("Hello","hELLo",6);

    ?>

    输出:0

    0

    因为,strncasecmp() 函数不区分大小写,所以Hello 和 hELLo 输出相同。

    【推荐学习:《PHP视频教程》】

    相关函数介绍:

    strncasecmp() 函数用于比较两个字符串(不区分大小写)。

    语法:strncasecmp(string1,string2,length)

    参数:string1 必需。规定要比较的第一个字符串。

    string2 必需。规定要比较的第二个字符串。

    length 必需。规定每个字符串用于比较的字符数。

    返回值:0 - 如果两个字符串相等

    <0 - 如果 string1 小于 string2

    >0 - 如果 string1 大于 string2

    更多编程相关知识,请访问:编程视频!!

    展开全文
  • 有两个长度相同的字符串,如果通过对其中一个字符串进行右移得到另一个 字符串,那么这两个字符串相等。请编写程序判断两个字符串是否相等。例如字符串DEABC可以通过字符串ABCDE右移两位得到,则字符串DEABC和字符串...
  • 条件查询时也无法用中文字符串进行相等判断  原因:  1Client端字符集为gbk.  2进行jdbc链接时使用了不匹配的字符集。  解决办法:  1.修改Client默认字符集为utf8。windows下在mysql安装目录下找到my....
  • Python 文本和数字相等判断

    千次阅读 2017-11-22 19:21:59
    虽然数字的字符串值被认为与整型值和浮点型值完全不同,但整型值可以与浮点值相等。Python 进行这种区分,因为字符串是文本,而整型值和浮点型都是数字。 1. example 1 Microsoft Windows [版本 6.1.7601] 版权...
  • 不论在windows还是linux下,仅凭字符串比较判断两个文件路径是否相等都是不靠谱的。因为有link,Disk map等技术的存在,两个不同的路径有可能指向同一个文件。 NIO提供了Files.isSameFile方法可以准确判断两个路径...
  • Windows】cmd条件判断

    2018-06-03 14:20:00
    2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句; 3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句; 4、判断某个变量是否已经被赋值,用 if defined str 语句; if语句的完整格式是这样的...
  • jquery判断元素是否在数组中的方法:可以使用【$.inArray("元素(字符串)",数组名称)】方法来进行判断,如果数组中存在该元素,那么该方法将返回该元素在数组中的下标。本教程操作环境:windows10系统、jquery2.2.4版...
  • 然后通过“$.inArray("元素(字符串)",数组名称)”方法在数组中查找指定值,并返回它的索引值即可。本教程操作环境:windows7系统、jquery1.10.0版本,该方法适用于所有品牌电脑。要判断数组中是否包含某个元素,从...
  • 字符串中的第一个唯一字符的方法相似,先计算所给字符在26字母表中出现的次数,再判断两个字符串中每个字母出现的次数是否相等。 #include <stdio.h> #include <windows.h> /** * Note: The returned ...
  • C#编写和调用动态链接库

    千次阅读 2016-12-20 17:35:53
    一、创建dll文件:例如生成一个md5编码判断状态的文件,即,输入一个字符串(string A)和一个32位md5编码(string B),判断字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。打开VS 2005...
  • 例如生成一个md5编码判断状态的文件,即,输入一个字符串(string A)和一个32位md5编码(string B),判断字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。 打开VS 2005,“文件”--》...
  • 灰盒测试—特殊符号

    2009-07-08 09:46:00
    判断二个字符串是否相等时,字符串前后加上空格,看结果。 sql注入中也有空格. 2、Windows文件命名其他特殊符号:文件名中不能有下列符号:“?”、“、”、“╲”、“*”、““”、“”“、“<”、“>”...
  • 原文 ... 题目比较典型的 经验总结: ...1我们可以使用ANT工具创建一个可以在 Windows资源管理器中双击自动执行的...2老生常谈了,通常使用“==”判断两个String变量所引用字符串对象的值是否相等。(错)因为它们不
  • c# 加密和解密相关代码

    热门讨论 2011-09-06 11:04:59
    开发程序时,经常需要判断输入的字符串是否为数字,如判断输入的电话号码、货币金额和邮编等。在程 序中判断是否为数字的方法有很多种,可以使用正则表达式、int.Parse 方法和double.Parse 方法等。下面的代码 通过...
  • 实例115 验证字符串是否以指定字符串开头 172 实例116 验证身份证号码 174 实例117 验证护照编号 175 实例118 验证车牌号码 176 4.4 自定义验证 177 实例119 验证合法的数据表名称 178 实例120 验证...
  • 实例115 验证字符串是否以指定字符串开头 172 实例116 验证身份证号码 174 实例117 验证护照编号 175 实例118 验证车牌号码 176 4.4 自定义验证 177 实例119 验证合法的数据表名称 178 实例120 验证...
  • 说某个字符串匹配某个正则表达式,通常是指这个字符串里有一部分(或几部分分别)能满足表达式给出的条件。 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    83 <br>0125 按要求生成指定位数编号 83 <br>0126 确定两字符串是否相等 84 <br>0127 判断两字符串中指定子串是否相等 84 <br>0128 判断字符串是否为日期格式 85 <br>0129 清除字符串中指定...
  • delphi通用函数单元一

    2011-08-19 20:38:47
    //▎================① 扩展的字符串操作函数 ===================▎// //▎============================================================▎// //从文件中返回Ado连接字串。 function GetConnectionString...
  • VB自动关机源码.rar

    2009-10-23 11:58:28
    Private shutTime As String '关机时间的字符串 Private IsToday As Boolean = True '判断是否是今天的变量 Private delay As Integer '延时多少秒放关机 Private lastTime As Integer '关机的倒计时 Private ...
  • 4.2.3 C语言中的常量与字符串字面量 60 4.2.4 C语言中的标点符号 60 4.3 关于C语言中的“对象” 62 4.4 C语言中的“副作用” 63 4.5 C语言标准库中的printf函数 63 4.6 本章小结 65 第5章 基本数据类型 /66 ...
  • Delphi网络公用函数

    2009-05-21 22:50:00
    //取以Delimiters分隔的字符串 bTrail如果为True则把第index个后的也取出来 function StrGetToken(const S: string; index: Integer; bTrail: Boolean = False; Delimiters: TSysCharSet = DEFAULT_DELIMITERS):...
  • void token(char name[],char list[],char token[],FILE *table) //将两个文件中的字符串分别切割转换为token串 {  FILE *in,*out; char ch,c,buffer[N],*link[M]; int i=0,j=0,k=0,LenLink=0; if((in=...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

windows判断字符串相等