gpt4 book ai didi

security - 是否可以从二进制可执行文件中提取常量和其他预定义值?

转载 作者:行者123 更新时间:2023-12-04 17:01:25 26 4
gpt4 key购买 nike

假设我们这里有这个程序

class Message{

public static SUPER_SECRET_STRING = "bar";

public static void Main(){
string SECRET = "foo";
Console.Write(sha(SUPER_SECRET_STRING) + "" + sha(SECRET));
}

}

现在,在构建这个程序之后,有没有办法使用十六进制编辑器或其他一些实用程序从编译的二进制文件中提取值“foo”和“bar”?

还假设不允许使用内存编辑器。

这是否适用于所有编译语言,如 C++?在 Java 或 C# 等其他环境中运行的那些呢?

最佳答案

Mene 的答案是正确的,但我想花两分钱让您知道从编译的二进制文件中提取字符串是多么容易(无论使用哪种语言)。如果你有 Linux,你所要做的就是运行命令 strings <compiled binary>你有提取的字符串。您不必成为任何逆向工程师即可实现这一目标。我只是在我的 Ubuntu 机器上针对 eclipse 二进制文件运行它并查看(截断的)输出:

> strings eclipse
ATSH
0[A\
8.uCH
The %s executable launcher was unable to locate its
companion shared library.
There was a problem loading the shared library and
finding the entry point.
setInitialArgs
-vmargs
-name
--launcher.library
--launcher.suppressErrors
--launcher.ini
eclipse

请注意字符串“%s 可执行启动器无法定位其配套共享库。加载共享库并找到入口点时出现问题。”出现在输出中。这个字符串无疑是硬编码到程序中的。

当字符串(和其他数据)被硬编码到程序中时,大多数编译器将它们放在二进制文件中的一个特殊部分中,在那里它们可以直接映射到内存中,以便程序在需要时进行访问。如果你用十六进制编辑器打开二进制文件,你可以很容易地找到这个字符串。

关于security - 是否可以从二进制可执行文件中提取常量和其他预定义值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com