如何隐藏exe或dll中的字符串?

2024-03-02

我发现可以从二进制文件中提取硬编码字符串。
例如属性视图流程浏览器 http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx显示所有超过 3 个字符的字符串。

这是我为了简单测试而编写的一个简单可执行文件的代码:

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    _TCHAR* hiddenString1 =_T("4537774B-CC80-4eda-B3E4-7A9EE77991F5");
    _TCHAR* hiddenString2 =_T("hidden_password_or_whatever");
    for (int i= 0; i<argc; i++) {
        if (0 == _tcscmp(argv[i],hiddenString1)) {
            _tprintf (_T("The guid argument is correct.\n")); }
        else if (0 == _tcscmp(argv[i],hiddenString2)) {
            _tprintf (_T("Do something here.\n")); }
    }

    _tprintf (_T("This is a visible string.\n"));
    //Keep Running
    Sleep(60000);
    return 0;
}

The strings can clearly be extracted from the corresponding executable:
alt text

我认为找到琴弦有点太容易了。

我的问题是:

  1. How to simply hide 隐藏字符串1 or 隐藏字符串2在里面 可执行的?
  2. 有没有更安全的 使用“作弊代码”的方式比 一些晦涩的隐藏输入?

欢迎来到更广阔的防御性编程世界。

有几种选择,但我相信所有这些都依赖于某种形式的混淆;尽管并不完美,但至少是一些东西。

  1. 您可以以其他二进制形式(十六进制?)存储文本,而不是直接字符串值。

  2. 您可以加密存储在应用程序中的字符串,然后在运行时解密它们。

  3. 您可以将它们拆分到代码中的各个点,然后再重新构建。

或者它们的某种组合。

请记住,某些攻击比查看实际的二进制文件更进一步。有时他们会在程序运行时调查程序的内存地址空间。 MS 想出了一个叫做.Net 2.0 中的安全字符串 http://msdn.microsoft.com/en-us/library/system.security.securestring.aspx。目的是在应用程序运行时保持字符串加密。

第四个想法是不要将字符串存储在应用程序本身中,而是依赖验证代码提交到您控制的服务器。在服务器上您可以验证它是否是合法的“作弊代码”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何隐藏exe或dll中的字符串? 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 为什么我在 Firefox 中突然遇到“阻止加载混合活动内容”问题?

    今天早上 在将我的 Firefox 浏览器升级到最新版本 从 22 到 23 后 我的后台 网站 的一些关键功能停止工作 查看Firebug日志 报告了以下错误 Blocked loading mixed active content ht
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • Windows 上的 XNA 网络

    XNA 的内置网络功能有哪些 是否可以在Windows中使用XNA的内置网络 如果可以的话 有什么限制吗 如果您使用Microsoft Xna Framework Net 命名空间 http msdn microsoft com en us
  • Gem::Specification.reset 期间未解决的规范:

    启动 Guard 时 我得到以下输出 guard WARN Unresolved specs during Gem Specification reset lumberjack gt 1 0 2 ffi gt 0 5 0 WARN Clea
  • 重塑矩阵并将其转换为数据框,跟踪原始行和列索引

    我有一个大的 n m 矩阵 我想将其转换为 n m 3 数据框 我的矩阵类似于 1400 800 数据框的第一列应包含矩阵行索引 第二列应包含矩阵列索引 数据框的第三列应包含矩阵中每个单元格的值 我用 for 循环解决了这个问题 但我认为这
  • 访问 iText 中的 OpenType 字形变体

    在 iText 中使用 OpenType 字体构建 PDF 文档时 我想从字体内访问字形变体 特别是表格数字 由于 OpenType 字形变体没有 Unicode 索引 因此我不确定如何指定我想要使用一组特定的变体 表格数字 或通过其字形
  • iOS - 架构armv7的2个重复符号

    我在用Resty http projects lukeredpath co uk resty 在我的项目中的任何地方 但现在由于我必须将图像上传到服务器 所以我尝试添加另一个名为RestKit http restkit org 处理文件上传
  • Facebook JavaScript SDK 不适用于 Chrome 扩展

    我正在写一个 chrome 扩展 该扩展的功能包括 Facebook 登录 该扩展不支持外部 JavaScript 链接 因此我必须在扩展的清单文件中创建 content security policy 现在可以了 正在加载Facebook
  • 读取 strcpy() 返回值上的字符串字符时出错

    我尝试打印出strcpy 的返回值 https stackoverflow com questions 3561427 strcpy return value它给了我一个 访问冲突读取位置 异常 char ind 15 printf s n
  • 如何将单独的 int 值转换为十六进制字节数组

    我需要做一些 对我来说新的 int hex byte 工作 并且我正在努力使其正确 另一端的 tcp 服务器需要 Little Endian 我需要发送一个由十六进制值组成的字节数组 6000需要发送为 0x70 0x17 19需要发送为
  • Android Instant App - Play 控制台发布/部署错误且 DAL(数字资产链接)未链接

    我试图弄清楚为什么游戏商店不接受我的即时应用程序构建 我已经成功部署了Alpha定期向测试人员发布应用程序 因为这是发布即时应用程序的先决条件 我正在尝试部署一个发展发布即时应用程序 我究竟做错了什么 我尝试添加尽可能多的细节 我是否需要使
  • 在对象释放和垃圾回收之后,Java 仍然使用系统内存

    我正在运行 JVM 1 5 0 Mac OS X 默认 并且我正在活动监视器中监视我的 Java 程序 我有以下内容 import java io BufferedReader import java io IOException impo
  • Erlang 可以使用哪些分布式进程注册表?

    我想为 Erlang 编译一个相当完整的分布式进程注册表库列表 此类库需要支持基本操作 例如register name Pid Name and whereis name Name 并且理想情况下registered names 0 名称不
  • 对布尔键进行 DynamoDB 查询

    我是 DynamoDB 以及一般的 noSQL 新手 并且在理解一些概念方面遇到了一些困难 特别是一件事给我带来了一些问题 即基于布尔键查询表 我意识到我无法在布尔键上创建主索引或辅助索引 但我不知道理想情况下应该如何对具有以下结构的表进行
  • c/c++ 左移无符号 vs 有符号

    我有这个代码 include
  • 为一个别名加载 Java KeyStore?

    有谁知道是否可以加载密钥库 以便仅提示输入给定别名的密码 Example 在我的密钥存储中 我有两个私钥 Alice 的加密证书和 Bob 的加密证书 当我加载我的密钥存储时 keyStore KeyStore getInstance Wi
  • 如何创建私有远程perforce分支并推送到它?

    熟悉git 第一次使用perforce 我正在开发自己的功能 我不想将其推送到主线远程存储库 我需要类似 git 远程分支的东西 其中 我可以提交我的更改 就像是git commit 我可以推送到不合并的远程私有分支 就像是git push
  • 带有枚举输入参数的 Webapi post 方法

    当尝试调用采用枚举作为输入参数的 Web API 方法时 为什么会出现下面屏幕截图中的错误 我该如何解决这个问题 看起来像messageDestinationType无论我做什么始终为空 我更愿意将输入类型保留为枚举 我对使用 Web ap
  • 如何修复导入错误:无法从plotly(python)导入Dash中的名称“Event”?

    我正在研究数据可视化任务 其中使用了plotly python 中的Dash 当我运行代码时 我收到一个错误 导入错误 无法导入名称 事件 我尝试了各种安装过程 例如 pip install events 或 pip install Eve
  • 如何在 @RequestParam() 中将默认值指定为整数

    我是新来的弹簧靴和学习 RequestParam 我知道我们可以在字符串中给出默认值 但是当我尝试将默认值作为整数给出时 它向我显示一个错误 RequestMapping returnVeriable public int getVeria
  • playframework 中的分页

    我想在 Play FrameWork 中实现分页 是否有任何教程或示例 我已经浏览了那里的网站并完成了教程 但无法实现分页 Thanks 我已经实现了很多页面play 使用播放分页模块 http www playframework org
  • 如何隐藏exe或dll中的字符串?

    我发现可以从二进制文件中提取硬编码字符串 例如属性视图流程浏览器 http technet microsoft com en us sysinternals bb896653 aspx显示所有超过 3 个字符的字符串 这是我为了简单测试而编