加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 更改exe中的浮点值

发布时间:2020-12-15 04:14:27 所属栏目:大数据 来源:网络整理
导读:我有一个 Windows程序(exe)几年前用Delphi编写(我认为是Delphi 7),该程序仍然偶尔使用.它包含一个Single类型变量,在代码中的某个点乘以0.9. 我想使用十六进制编辑器在exe文件中将0.9更改为0.8,我需要帮助才能找到要更改的代码的相关部分. 变量声明为 private
我有一个 Windows程序(exe)几年前用Delphi编写(我认为是Delphi 7),该程序仍然偶尔使用.它包含一个Single类型变量,在代码中的某个点乘以0.9.

我想使用十六进制编辑器在exe文件中将0.9更改为0.8,我需要帮助才能找到要更改的代码的相关部分.

变量声明为

private  myValue: Single;

当单击一个按钮时,组件的编辑值将设置为Round(myValue * 0.9)

procedure MyForm.buttonClick(Sender: TObject);
begin
  if button.Down then
    myEditComponent.EditValue := Round(myValue * 0.9);
end;

值0.9仅在整个代码中使用一次,因此我认为应该很容易找到它.
我了解到0.9作为DWORD的十六进制表示应该是0x3f666666,但我在exe中找不到该值.

所以它要么我错了,0.9用不同的十六进制字符串表示,或者编译器以不同的方式(比如myValue * 9/10或其他方式)或者……

在你建议我重新编译项目之前:我有源代码,但它是一个有多个依赖项的大型项目.该代码依赖于多个组件包库和许多第三方组件.可能需要几天才能获得并安装旧版本的Delhi并注册所有组件以重新编译代码.对于不经常使用的程序的这么小的改变,我不想做什么.

如果我安装了Delphi,我只需编写几行代码并进行反汇编/调试,以便查看汇编代码.有了程序集,我可以找出exe中需要更改的内容.我希望有人能指出我正确的方向,所以我不必安装旧版本的Delphi.

解决方法

浮点文字常量在32位版本的Delphi中存储为80位扩展.

值0.9存储为66 66 66 66 66 66 66 E6 FE 3F

对于0.8,用CD CC CC CC CC CC CC CC FE 3F替换它

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读