strings.exe工具在计算机病毒分析中的应用

需积分: 28 13 下载量 47 浏览量 更新于2024-10-03 收藏 49KB ZIP 举报
资源摘要信息:"Strings字符串分析工具" Strings是计算机安全领域中经常使用的一种工具,主要用于从二进制文件中提取可打印的字符串,这些字符串可能包含有用的信息,如程序路径、URL、人名、关键字等。这对于逆向工程、恶意软件分析(计算机病毒分析)以及其他需要从二进制文件中寻找有意义数据的场景非常有用。 ### Strings工具概述 Strings工具最初是在Unix系统中开发的,后来被移植到了Windows平台,成为Windows系统下的一个命令行工具。它被广泛用于程序调试和恶意软件分析中。其工作原理是扫描目标文件的所有可打印字符序列,通常情况下,这些字符序列的长度至少为4个字符。用户可以设置不同的参数来自定义搜索的字符长度和格式。 ### Strings工具的应用场景 1. **程序调试**:开发者使用Strings可以查看程序中嵌入的字符串资源,如错误信息、日志信息等,这有助于调试程序和修复bug。 2. **恶意软件分析**:恶意软件作者可能会在代码中嵌入各种字符串,如配置信息、命令和控制服务器地址等。分析这些字符串可以帮助安全专家更好地了解恶意软件的行为和意图。 3. **逆向工程**:逆向工程师在分析没有源代码的二进制程序时,通过提取字符串可以快速获得有用的信息,比如程序的功能、版本、作者信息等。 4. **数据取证**:在数据取证过程中,Strings工具可以用于提取电子设备中的隐藏信息,如文档、邮件内容等。 ### Strings工具的关键参数 - `-a` 或 `--all`:扫描整个文件,而不只是默认的最小内存区域。 - `-n` 或 `--string-length`:指定字符串的最小长度,默认为4个字符。 - `-o`:显示字符串在文件中的偏移量。 - `-t` 或 `--radix`:指定偏移量的输出格式,支持十进制(d)、十六进制(x)。 - `-e` 或 `--encoding`:指定字符编码,如`ANSI`、`UTF-8`等。 - `-u` 或 `--unicode`:显示Unicode字符串,而非默认的ASCII字符串。 - `-q` 或 `--quiet`:在分析时抑制所有消息,只输出结果。 - `-f` 或 `--print-file-name`:在每个提取的字符串前打印文件名。 ### Strings工具的输出分析 当执行Strings命令后,它会将找到的字符串列表打印到控制台或指定的输出文件中。输出结果可以包含各种信息,具体取决于分析的二进制文件类型及其内容。 ### Strings工具在恶意软件分析中的使用 在计算机病毒分析中,Strings工具可以揭示恶意软件的配置信息、加密密钥、命令和控制(C&C)服务器的地址等敏感信息。安全专家通常会结合其他分析工具和方法,如动态分析、沙箱环境运行、API调用追踪等,以全面了解恶意软件的行为。 ### 注意事项 使用Strings工具时需要注意以下几点: - 不是所有提取的字符串都是有意义的信息,有些可能是无用的垃圾数据。 - 提取的字符串数量可能很大,因此在实际分析时需要过滤和筛选出有用的字符串。 - 在分析恶意软件时,要特别小心,避免在不安全的环境中运行未知的二进制文件。 ### 结语 Strings工具是计算机安全领域中不可或缺的分析工具,它能够提供程序内部隐藏的字符串信息,无论是用于合法的程序调试还是用于恶意软件分析,都具有重要的作用。掌握Strings工具的使用技巧对于提高工作效率和安全防护能力都有极大的帮助。
2014-07-24 上传
strings.com 是强大的纯DOS环境 下的文本处理工具 STRINGS常用方法: 1、把文本文件 LIST.TXT 包含的行数赋值给变量 LN STRINGS LN=LINESIZE LIST.TXT 2、把文本文件 LIST.TXT 的大小传递给变量FS STRINGS FS=FILESIZE LIST.TXT 3、读取文本文件 LIST.TXT 的第5行内容并赋值给变31333137量 LN STRINGS LN=READ LIST.TXT,5 4、把变量 N 在原有基础上+1 和 -1 STRINGS N=ADD %N%,1 STRINGS N=SUB %N%,1 5、把字符串 ABCDEFG 中第四个字符以及后面共3个字符传递给变量 LX (DEF) STRINGS LX=MID ABCDEFG,4,3 6、查找字符串 ABCDEFG 中D所在的位置并赋值给变量DX,如果没找到DX=0 STRINGS DX=FIND ABCDEFG,D 7、找出字符串 ABCD EFG HIJ KLMN 中第二个单词并赋值给变量L2 STRINGS L2=PARSE ABCD EFG HIJ KLMN ,2 应用举例:逐一显示文件 LIST.TXT 各行内容 @ECHO OFF REM 读取LIST.TXT大小如果是0就转入 ERROR段 STRINGS FS=FILESIZE LIST.TXT IF %FS%*==0* GOTO ERROR REM 读取 LIST.TXT 行数 并用N作计数器以循环方式显示 LIST.TXT各行内容。 STRINGS L=LINESIZE LIST.TXT STRINGS L=ADD %L%,1 SET N=0 :LOOP STRINGS N=ADD %N%,1 STRINGS LX=READ LIST.TXT,%N% ECHO %LX% IF %N%*==%L%* GOTO END GOTO LOOP :ERROR ECHO LIST.TXT IS NULL :END SET FS= SET L= SET N= SET LX= --------------------------------------------- NSET 的常用方法: 1、把某一命令的执行结果传递给变量。 A.把 DIR 命令执行结果第7行中的第2个单词传递给变量 DIRX DIR /A /S |NSET /L7 DIRX=$2 B.把当前路径传递给变量 CDX CD |NSET CDX=$0 2、获取 LIST.TXT 文件第5行第2个单词的内容并赋值给变量 L52 NSET /L5 L52=$2 <LIST.TXT 举例:显示出 LIST.TXT 文件中第二个单词是 SYSTEM 的行的内容。 @ECHO OFF REM 读取LIST.TXT大小如果是0就转入 ERROR段 STRINGS FS=FILESIZE LIST.TXT IF %FS%*==0* GOTO ERROR REM 读取 LIST.TXT 行数 并用N作计数器以循环方式显示 LIST.TXT中第二个单词是 REM SYSTEM 的行的内容,每找到一个符合条件的行,就把变量M在原有基础上+1。 STRINGS L=LINESIZE LIST.TXT STRINGS L=ADD %L%,1 SET N=0 SET M=0 :LOOP STRINGS N=ADD %N%,1 STRINGS LX=READ LIST.TXT,%N% REM STRINGS LX2=PARSE %LX%,2 NSET /L%N% LX2=$2 diskn.txt REM 如果存在DISKN2.TXT 就删除之 if exist diskn2.txt del diskn2.txt >nul REM 获取DISKN.TXT文件行数并用N做计数器逐行判断,并把需要的信息传递给DISKN2.TXT REM 如果该行前两个字符是 NO 说明没有硬盘,就退出脚本 RE