我想把汇编的代码用delphi写入 例如。mov eax,2 我想把上面的汇编码用delphi7通过writeprocessmemory函数写入008D5478那么我应该怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 const Instruction: Array [0..4] of Byte = ($B8,$02,00,00,00);WriteProcessMemory(hProcess,$008D5478,Poiner(@Instruction[0]),5,lpNumberOfBytesWriten); 代码注入,可用远程线程,把你要执行的代码写成线程函数,再用CreateRemoteThread在目标进程里创建该线程.可参考<Windows核心编程>讲"注入"的那部分. 可以不可以用asm..end;的格式?因为这个代码只是个例子 当然可以,只是需要计算偏移量是一个比较麻烦的事情,不如你写了之后编译成二进制码,然后再放入Byte Array当中去。 哦。 那能否给我这个例子用asm..end;写一下? var dwStart: PByte; dwEnd: LongWord; str: AnsiString;begin asm mov eax,offset @@a1 jmp @@a2 @@a1: //从这里开始写你所需要的代码 //注:这里不能下断点,否则就可能变为int 3($cc)指令 mov eax,2 //这里结束 @@a2: mov edx,offset @@a2 mov dwStart,eax mov dwEnd,edx end; SetLength(str,(dwEnd-LongWord(dwStart))*2); BinToHex(PAnsiChar(dwStart),PAnsiChar(Str),dwEnd-LongWord(dwStart)); ShowMessage(str);end; var dwStart: PByte; dwEnd: LongWord;begin asm mov eax,offset @@a1 jmp @@a2 @@a1: //从这里开始写你所需要的代码 //注:这里不能下断点,否则就可能变为int 3($cc)指令 mov eax,2 //这里结束 @@a2: mov edx,offset @@a2 mov dwStart,eax mov dwEnd,edx end; WriteProcessMemory(hProcessHandle(*进程句柄,请注意需要相应的权限*),lpAddress(*远程植入的地址*),Pointer(dwStart)(*指令首地址*),dwEnd - LongWord(dwStart)(*指令占用的字节数*));end; 关于字符串处理的问题 如何写这个自动编号的语句 请教关于DelphiOpenGL 如何取得自身版本号 谁帮我找回失去的记忆:关于DBGrid的拖放问题 Reopen.Items.Count 为什么报错?up有分! 如何在一个com对象中调用另一个com对象的方法?在线等待... ■■■上海的朋友关注一下,谢谢>>>>> 用delphi编写的程序,运行越来越慢,怎么知道内存占用为什么越来越多 怎样在自己的程序窗口里面内嵌其它的可执行文件? 关于指针的下标访问问题.. 如何用自己写的程序打开自定义的文件?
Instruction: Array [0..4] of Byte = ($B8,$02,00,00,00);WriteProcessMemory(hProcess,$008D5478,Poiner(@Instruction[0]),5,lpNumberOfBytesWriten);
可参考<Windows核心编程>讲"注入"的那部分.
asm
..
end;
的格式?
因为这个代码只是个例子
asm
..
end;
写一下?
dwStart: PByte;
dwEnd: LongWord;
str: AnsiString;
begin
asm
mov eax,offset @@a1
jmp @@a2
@@a1:
//从这里开始写你所需要的代码
//注:这里不能下断点,否则就可能变为int 3($cc)指令
mov eax,2
//这里结束
@@a2:
mov edx,offset @@a2
mov dwStart,eax
mov dwEnd,edx
end;
SetLength(str,(dwEnd-LongWord(dwStart))*2);
BinToHex(PAnsiChar(dwStart),PAnsiChar(Str),dwEnd-LongWord(dwStart));
ShowMessage(str);
end;
dwStart: PByte;
dwEnd: LongWord;
begin
asm
mov eax,offset @@a1
jmp @@a2
@@a1:
//从这里开始写你所需要的代码
//注:这里不能下断点,否则就可能变为int 3($cc)指令
mov eax,2
//这里结束
@@a2:
mov edx,offset @@a2
mov dwStart,eax
mov dwEnd,edx
end;
WriteProcessMemory(hProcessHandle(*进程句柄,请注意需要相应的权限*),lpAddress(*远程植入的地址*),Pointer(dwStart)(*指令首地址*),dwEnd - LongWord(dwStart)(*指令占用的字节数*));
end;