光通软件 delphi字符串在汇编中注意事项

delphi字符串在汇编中注意事项

  • 2021/08/16 12:21:28
  • 作者:传三动力
  • 来源:光通软件

最近在反汇编一个引擎,是delphi2007写的,经常报错、奔溃。

最终发现是因为字符串相关处理上的错误导致的。

delphi字符串也就是string类型在内存中的结构如下

[引用计量 4BYTE] [长度 4BYTE] [字符串数据 指针]

静态字符串在内存中如下

[0xffffffff] [0x4] ['你好']

可能引用计量为0xFFFFFFFF的为静态字符串,不需要释放内存。

也就是指针-4=长度,指针-8=引用次数,当次数为0,调用freemem释放内存。

在delphi函数中如果包含字符串变量,会在函数开头和结尾有相关对字符串的操作,如增加引用计量,释放字符串内存。

本文来源:光通软件

光通软件

© 2019-2021