如何查看可执行文件中的字符串?

逆向工程 补丁反转
2021-06-25 00:48:12

我一直在玩,寻找字符串

  "Please wait!!!"
   "Done!!"

然后我没有在调试器中找到它们,所以有人建议 BinText 可以完成这项工作,所以我找到了这个

 File pos Mem pos ID Text 
 ======== ======= == ==== 
 0000000922E8 000000492EE8 0 Caption 
 00000009230A 000000492F0A 0 Checked 
 00000009232C 000000492F2C 0 SubMenuImages 
 000000092354 000000492F54 0 Default 
 000000092376 000000492F76 0 Enabled 
 000000092402 000000493002 0 ImageIndex 
 000000092426 000000493026 0 RadioItem 
 00000009244B 00000049304B 0 ShortCut 
 00000009246E 00000049306E 0 Visible 
  000000092490 000000493090 0 OnClick 

下面是麻烦的字符串

  0000000ED716 0000004EE316 0 EJPEG 
  0000000EEB97 0000004EF797 0 ;w8tF 
  0000000EFE33 0000004F0A33 0 C(D   O 
  0000000EFFA4 0000004F0BA4 0 T;{$| 
  0000000F002C 0000004F0C2C 0 T;{$| 
  0000000F004F 0000004F0C4F 0 ;K$|  
  0000000F0995 0000004F1595 0 ;K4w/ 
  0000000F09CF 0000004F15CF 0 ;K4w, 
  0000000F0A05 0000004F1605 0 ;K4w, 
  0000000F0A9D 0000004F169D 0 T;{$| 
  0000000F0AE4 0000004F16E4 0 T;{$| 
  0000000F1A11 0000004F2611 0 D$$PU 
  0000000F1D3B 0000004F293B 0 A;K$| 
  0000000F3377 0000004F3F77 0 0;C$| 
  0000000F3426 0000004F4026 0 K,;K(u 
  0000000F36DA 0000004F42DA 0 T$$;L$ 
  0000000F372D 0000004F432D 0 Jx;L$ 
  0000000F39C4 0000004F45C4 0 $;Zx| 
  0000000F3F52 0000004F4B52 0 t&ItZ 
  0000000F41E7 0000004F4DE7 0 D$$;T$ 
  0000000F41FB 0000004F4DFB 0 L$ ;\$ 
  0000000F4265 0000004F4E65 0 L$,;T$ 
  0000000F4279 0000004F4E79 0 L$(;\$ 
  0000000F42EE 0000004F4EEE 0 L$0;T$ 
  0000000F4363 0000004F4F63 0 L$4;T$ 
  0000000F43D2 0000004F4FD2 0 L$8;T$ 
  0000000F4441 0000004F5041 0 L$<;T$ 
  0000000F44E4 0000004F50E4 0 D$D;T$ 
  0000000F44F8 0000004F50F8 0 L$@;\$ 
  0000000F46C7 0000004F52C7 0 D$,;L$ 
  0000000F46DF 0000004F52DF 0 T$(;\$ 
  0000000F4740 0000004F5340 0 l$$B; 
  0000000F5466 0000004F6066 0 T;s$| 
  0000000F55A8 0000004F61A8 0 P$;T$ 
  0000000F56A4 0000004F62A4 0 P$;T$ 
  0000000F5767 0000004F6367 0 P$;T$ 
  0000000F58A3 0000004F64A3 0 rMtsJ 
  0000000F58D4 0000004F64D4 0 C4;CH 
  0000000F5940 0000004F6540 0 C4;CHr3

这些是真正的字符串还是它们被破坏了加密或其他东西?我怎样才能做到这一点?

3个回答

这些不是真正的字符串,那只是可以解释为字符串的二进制数据。这就是 BinText 之类的工具的工作方式 - 通过尝试将任何字节序列评估为字符串,并在超过阈值(通常约为 4 个字符)时将其作为一个接受。

我不熟悉 BinText,但我经常用于此类任务的工具是 010 Editor ( http://www.sweetscape.com/010editor )。这是一个非常好的文本和十六进制编辑器,并且具有免费试用许可证。它基本上可以编辑您计算机上的任何内容(文本和二进制文件、硬盘驱动器、进程),具有用于解析已知文件格式的模板、脚本和高级二进制搜索选项。您正在寻找的功能是他们的“查找字符串”选项,该选项可以查找所有字符串,而不管格式如何,并且可以使用一些参数轻松调整。

因为字符串可以用多种格式表示,如果有一个工具知道这一点并支持同时搜索多种格式,这对于这些类型的搜索真的很有帮助。

显然,字符串可能会被混淆,在这种情况下搜索将不起作用,但这有点超出了这个问题的范围。打开另一个,我也会回答。

如果您运行的是 Linux,则可以运行strings命令来查看您正在分析的二进制文件中的硬编码字符串。

例子:

$ strings my_executable

此处字符串程序也可用于 Windows

你可以像在 Linux 上一样运行它:

C:> strings my_executable.exe

我还想指出一些字符串仅在运行时动态生成。如果您运行的是 Windows,您可以使用进程黑客来查看进程内存中的字符串。

如果您正在使用进程黑客,只需选择带有您要查找的字符串的进程->属性->内存然后,在右上角,您应该会看到一个字符串...按钮。这将搜索进程中的所有字符串。

此外,这些字符串似乎太短而不能成为合法的字符串。大约 10 个字符的字符串可能会显示您可能认为更相关的信息。

要搜索字符串,您可以在安装后始终使用radare2,使用终端导航到文件所在的目录,然后键入 rabin2 -z filename