首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c#安装项目中嵌入客户端id?(从我的网站下载时)

问如何在c#安装项目中嵌入客户端id?(从我的网站下载时)
EN

Stack Overflow用户
提问于 2021-02-24 02:42:25
回答 1查看 45关注 0票数 0

我有一个用c #开发的安装文件,当我的客户从我的网站下载并安装此文件时,我无法了解哪些客户正在使用此exe。我有一个安装文件,但我有100个客户端。在下载设置文件时,我必须将客户ID保存在某个位置,并在设置阶段将其显示给我的应用程序。我不知道怎么做这件事。

EN

回答 1

Stack Overflow用户

发布于 2021-02-24 04:48:22

您可以在客户下载可执行文件时将客户ID注入到可执行文件本身中,这样您就知道了客户ID。如果将客户ID数据附加到可执行文件的末尾,那么在可执行文件启动时,您可以让可执行文件读取自身并从它自己的二进制文件中解析客户ID。这不会对可执行文件的行为造成任何更改。

但是,如果您的可执行文件已签名,则这样做将使证书无效。要缓解此问题,您可以修改可执行文件的标头,并调整一些值以考虑到二进制文件的新大小。

所需的具体更改如下:

  1. 定位PE标头的开头( PE )
  2. 跳过COFF标头(+=28字节)
  3. 转到Windows特定可选PE标头中的证书表项(COFF后的+=120字节;总+=148字节)
  4. 更改IMAGE_DATA_DIRECTORY.Size中定义的证书表的大小以添加有效负载的大小。
  5. 转到位置定义的IMAGE_DATA_DIRECTORY.VirtualAddress。这是文件中证书表的绝对位置。再次更改头的大小,PKCS1_MODULE_SIGN.dwLength
  6. This内部通常应该是可执行文件中的最后一部分;因此,转到末尾并添加payload
  7. Possibly
  8. 计算文件

的新校验和

如何在不失效签名的情况下修改可执行文件的源代码:https://blog.barthe.ph/2009/02/22/change-signed-executable/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66339207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档