Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在Mac中从二进制文件中提取硬编码字符串?_String_Macos_Cocoa_Binary Data - Fatal编程技术网

String 如何在Mac中从二进制文件中提取硬编码字符串?

String 如何在Mac中从二进制文件中提取硬编码字符串?,string,macos,cocoa,binary-data,String,Macos,Cocoa,Binary Data,是否有可以在Mac(Perl/Python/Cocoa/etc)或命令行工具上运行的API可用,您可以使用这些API加载二进制文件(app/bundle/framework/etc)并提取代码中使用的硬编码字符串 原因是我们想检查编译后的二进制文件中是否有硬编码路径。是的,您可以使用字符串命令行工具: $ man strings NAME strings - find the printable strings in a object, or other binary, file

是否有可以在Mac(Perl/Python/Cocoa/etc)或命令行工具上运行的API可用,您可以使用这些API加载二进制文件(app/bundle/framework/etc)并提取代码中使用的硬编码字符串


原因是我们想检查编译后的二进制文件中是否有硬编码路径。

是的,您可以使用
字符串
命令行工具:

$ man strings

NAME
       strings - find the printable strings in a object, or other binary, file

SYNOPSIS
       strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]

DESCRIPTION
       Strings looks for ASCII strings in a binary file or standard input.  Strings is useful for identifying random object files and many other things.  A string
       is any sequence of 4 (the default) or more printing characters ending with a newline or a null.  Unless the - flag is given, strings looks in all  sections
       of the object files except the (__TEXT,__text) section.  If no files are specified standard input is read.

       The file arguments may be of the form libx.a(foo.o), to request information about only that object file and not the entire library.   (Typically this argu-
       ment must be quoted, ``libx.a(foo.o)'', to get it past the shell.)

       The options to strings(1) are:

       -a     This option causes strings to look for strings in all sections of the object file (including the (__TEXT,__text) section.

       -      This option causes strings to look for strings in all bytes of the files (the default for non-object files).

       --     This option causes strings to treat all the following arguments as files.

       -o     Preceded each string by its offset in the file (in decimal).

       -t format
              Write each string preceded by its byte offset from the start of the file.  The format shall be dependent on the single character used as the  format
              option-argument:

       d      The offset shall be written in decimal.

       o      The offset shall be written in octal.

       x      The offset shall be written in hexadecimal.

       -number
              The decimal number is used as the minimum string length rather than the default of 4.

       -n number
              Specify the minimum string length, where the number argument is a positive decimal integer. The default shall be 4.

       -arch arch_type
              Specifies  the  architecture, arch_type, of the file for strings(1) to operate on when the file is a universal file.  (See arch(3) for the currently
              know arch_types.)  The arch_type can be "all" to operate on all architectures in the file, which is the default.

SEE ALSO
       od(1)

BUGS
       The algorithm for identifying strings is extremely primitive.

Apple Computer, Inc.                                                    September 11, 2006                                                              STRINGS(1)

strings
find
NSString
常量是由
unichar
字符组成的,而不是8位字符吗?@特洛伊木马:很好的一点-它只适用于ASCII,我相信,如果二进制是通用二进制(具有多种体系结构),那么任何包含宽字符的字符串都不会被额外打印,您可能需要去掉并只保留一个二进制文件,因为相同的字符串将在结果中重新出现N次,其中N也是打包在通用二进制文件中的体系结构数。@radj:您可以使用lipo。strings命令的唯一问题是它搜索“…以换行或空结尾的字符”。这意味着,如果您查找任何通用二进制文件,例如Word文档,您将丢失很多单词。