将DLL注入的代码从Delphi 7转换为Delphi XE2
发布时间:2020-12-14 02:09:39 所属栏目:Windows 来源:网络整理
导读:我有一个旧的注射器,由我在Delphi 7中制造,我试图以这种方式改变它,它仍然可以在XE2中工作,但我失败了.-新的测试dll适用于我的旧注射器没有任何问题所以即时确定我的注射器有虫子. 这是我制作的代码: procedure TForm1.InjectDLL(const ADLLName: String; t
我有一个旧的注射器,由我在Delphi 7中制造,我试图以这种方式改变它,它仍然可以在XE2中工作,但我失败了.-新的测试dll适用于我的旧注射器没有任何问题所以即时确定我的注射器有虫子.
这是我制作的代码: procedure TForm1.InjectDLL(const ADLLName: String; targetproc: Cardinal); var dllname: String; pDLLname,pStartAddr: Pointer; bw: NativeUInt; hProcess,hRemoteThread: THandle; TID: Cardinal; begin hProcess := OpenProcess(PROCESS_ALL_ACCESS,false,targetproc); pDLLname := VirtualAllocEx(hProcess,length(dllname) + 1,MEM_COMMIT or MEM_RESERVE,PAGE_EXECUTE_READWRITE); WriteProcessMemory(hProcess,pDLLname,Pointer(dllname),bw); pStartAddr := GetProcAddress(GetModuleHandle('kernel32.dll'),'LoadLibraryA'); hRemoteThread := CreateRemoteThread(hProcess,nil,pStartAddr,TID); WaitForSingleObject(hRemoteThread,INFINITE); showmessage('Fehler ' + IntToStr(GetLastError) + ': ' + SysErrorMessage(GetLastError)); CloseHandle(hProcess); end; 我只需要将hProcess和hRemoteThread更改为THandle并将bw更改为NativeUInt. showmessage告诉我一切正常.由于String类型从d7更改为XE2,因此必须存在细微差别.我也尝试将dll名称转换为PAnsiChar,但它对我没有任何改变. 希望我能为您发布足够的信息. 解决方法
在Unicode Delphi下,代码的最终结果是将UTF-16文本传递给LoadLibraryA.当然,这需要8位ANSI文本.您有两种方法可以解决此问题:
>坚持使用ANSI文本,只需在代码片段中用AnsiString替换字符串即可.>切换到Unicode文本.使用LoadLibraryW并应用Arnaud建议的更改以正确处理16位文本的长度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 远程登录和复制文件
- windows – 在进行设置之前,在SysPrep之后的第一次启动时是
- linuxRedhat7 windows物理机与虚拟机设置共享目录
- windows – 推荐的GnuPG密钥大小和类型?
- 变量 – Windows批处理文件:什么是变量扩展,EnableDelayed
- Windows – 从任务计划程序运行批处理文件不能使用java命令
- windows-installer – Visual Studio MSI安装程序
- 在WINDOWS上编译Objective-C时出现错误“Foundation.h:找不
- Win7减肥之删除休眠文件
- windows-server-2003 – 确定谁以管理员权限运行?
推荐文章
站长推荐
- Windows – Hyper-V主机是否可以在同一主机上加入
- 如何在Windows NTEmacs下使用ediff?
- win10下maven3.6.1配置本地仓库及远程国内镜像仓
- windows-phone-8 – 浏览器外特定设置不会影响浏
- 克隆 – 适用于Windows的最佳服务器类幻像工具
- windows-7 – 重新启动时将Windows 7计算机重置为
- windows-server-2008-r2 – Server 2008 R2 KMS服
- windows – tomcat 6启动模式设置进行生产
- windows – 确定进程正常运行时间
- windows – 如何将std = c 11标志添加到clang-cl
热点阅读