【发布时间】:2012-01-03 12:27:28
【问题描述】:
我正在尝试这段代码。
我遇到了错误“实际和正式 var 参数的类型必须相同”。非常感谢这方面的任何帮助。
......
ReadProcessMemory(ProcInfo.hProcess, pointer(Context.Ebx + 8), @BaseAddress, 4, Bytes); <-- error is here
.......
and
.....
WriteProcessMemory(ProcInfo.hProcess, pointer(ImageNtHeaders.OptionalHeader.ImageBase), InjectMemory, InjectSize, Bytes); <---- error here
......
我使用的是 Delphi XE2 和 windows 7 64 位。有的朋友可以在D7环境下编译。任何帮助表示赞赏。
【问题讨论】:
-
你不能自己找出来吗?上网查一下ReadProcessMemory需要什么样的params(或者使用Ctrl-Shift-Space来获取Delphi中的参数列表)并检查你的参数类型。
-
@WarrenP,我会使用这个,例如安装程序;您可以从安装文件的资源中提取可执行文件并在不写入磁盘的情况下运行它们。它会快得多;)
-
@WarrenP 我正在尝试创建一个包装模块来保护我的 exe。一旦它被包裹起来,我可以应用某种包装技术。从例如ASPack
-
@TLama,安装程序不必为了更快而做这样的事情。它是一个安装程序 - 它通常运行一次,节省几秒钟并没有什么不同。但是,将您的安装程序标记为恶意软件或病毒确实如此 - 这样的“技巧”不应该用于日常目的。我不同意提问者也想自己做这件事。商业软件为此收费是有原因的,因为它们已经完成了您应该使用它们的所有工作。如果您的应用非常重要,需要这样的保护,那么它就足够重要,值得花钱。
-
@Ken,从性能的角度来看,我很极端,但你是绝对正确的;我没有想到抗病毒软件。幸运的是,我是一个满意的 InnoSetup 用户 ;)
标签: delphi delphi-xe2