6

我正在为使用 Delphi 7 创建的软件使用保护模式,想知道我是否需要担心函数/过程、变量等中使用的名称。“黑客”能否在编译的 exe VCL 应用程序中访问这些名称用 Delphi 创建而没有任何第三方保护(即混淆)?

4

2 回答 2

6

Delphi 将其源代码编译成原始二进制文件——例如编译成 Java 或 C#/.Net,这些文件编译成一些中间语言,这些语言很容易被反编译,并且经常需要混淆。Delphi 的反编译工具非常粗糙和低效——即使是最复杂的工具也是如此。

默认情况下,Delphi 可执行文件中没有添加调试信息。而且 Delphi 7 有一组有限的 RTTI - 它在 Delphi 2010 中得到了很大的增强。人类可读的 RTTI 信息仅涉及枚举文本、published类的属性、interface继承自IInvokable. 所以信息很少。

所以几乎没有办法从典型的 Delphi 7 可执行文件中检索变量名和函数名。除非您将.map文件加入可执行文件(只有函数名和全局变量,而不是局部变量)。

请注意,这是关于源代码的 - 正如您所要求的那样。对于 GUI/VCL 应用程序,.dfm 内容(即 TForm 布局)被序列化为可执行文件,并且可以恢复。

于 2019-11-15T17:42:32.717 回答
0

与几乎每个 EXE 一样,您可以看到从哪些库(ieCreateWindowA()等)导入了哪些函数(ie等)。只需将您的 EXE 拖入文本编辑器并搜索- 您可以在其周围看到可读文本。SendMessageA()SHELL32.DLL.dll

可以通过链接函数索引来避免链接函数名称;恶意软件的一种方法(不让扫描程序识别“坏”函数名称)是枚举库的所有导出函数名称,对每个名称进行散列,然后将该散列与之前的散列文本进行比较。

于 2019-11-18T12:09:23.037 回答